@paraswap/dex-lib 5.0.0-rc.0 → 5.0.1-new-dexs-encoding.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 (299) hide show
  1. package/build/abi/pancakeswap-infinity/cl-pool-manager.json +80 -0
  2. package/build/dex/fluid-dex/scripts/measure-calc-time.js +178 -0
  3. package/build/dex/fluid-dex/scripts/measure-calc-time.js.map +1 -0
  4. package/build/dex/idex.d.ts +2 -2
  5. package/build/dex/metric/metric.d.ts +2 -2
  6. package/build/dex/metric/metric.js +5 -2
  7. package/build/dex/metric/metric.js.map +1 -1
  8. package/build/dex/simple-exchange.d.ts +1 -1
  9. package/build/dex/simple-exchange.js +1 -1
  10. package/build/dex/simple-exchange.js.map +1 -1
  11. package/build/dex/uniswap-v4/api-go/compare-pricing.d.ts +1 -0
  12. package/build/dex/uniswap-v4/api-go/compare-pricing.js +187 -0
  13. package/build/dex/uniswap-v4/api-go/compare-pricing.js.map +1 -0
  14. package/build/dex/uniswap-v4/api-go/compare-states.d.ts +1 -0
  15. package/build/dex/uniswap-v4/api-go/compare-states.js +149 -0
  16. package/build/dex/uniswap-v4/api-go/compare-states.js.map +1 -0
  17. package/build/dex/uniswap-v4/api-go/fetch-pool-key.d.ts +0 -0
  18. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js +140 -0
  19. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js.map +1 -0
  20. package/build/executor/__test-utils__/snapshot-test-helpers.d.ts +10 -0
  21. package/build/executor/__test-utils__/snapshot-test-helpers.js +72 -0
  22. package/build/executor/__test-utils__/snapshot-test-helpers.js.map +1 -0
  23. package/build/executor/address-utils.d.ts +2 -0
  24. package/build/executor/address-utils.js +7 -0
  25. package/build/executor/address-utils.js.map +1 -0
  26. package/build/executor/approval.d.ts +9 -0
  27. package/build/executor/approval.js +29 -0
  28. package/build/executor/approval.js.map +1 -0
  29. package/build/executor/encoding-context.d.ts +4 -0
  30. package/build/executor/encoding-context.js +54 -0
  31. package/build/executor/encoding-context.js.map +1 -0
  32. package/build/executor/encoding-types.d.ts +75 -0
  33. package/build/{dex/quick-perps/types.js → executor/encoding-types.js} +1 -1
  34. package/build/executor/encoding-types.js.map +1 -0
  35. package/build/executor/factory.d.ts +4 -0
  36. package/build/executor/factory.js +23 -0
  37. package/build/executor/factory.js.map +1 -0
  38. package/build/executor/route-plan.d.ts +8 -0
  39. package/build/executor/route-plan.js +109 -0
  40. package/build/executor/route-plan.js.map +1 -0
  41. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.d.ts +6 -0
  42. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js +39 -0
  43. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js.map +1 -0
  44. package/build/generic-swap-transaction-builder/dex-encoder/index.d.ts +4 -0
  45. package/build/generic-swap-transaction-builder/dex-encoder/index.js +21 -0
  46. package/build/generic-swap-transaction-builder/dex-encoder/index.js.map +1 -0
  47. package/build/generic-swap-transaction-builder/dex-encoder/ports.d.ts +26 -0
  48. package/build/{dex/maker-psm/types.js → generic-swap-transaction-builder/dex-encoder/ports.js} +1 -1
  49. package/build/generic-swap-transaction-builder/dex-encoder/ports.js.map +1 -0
  50. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.d.ts +22 -0
  51. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js +299 -0
  52. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js.map +1 -0
  53. package/build/generic-swap-transaction-builder/dex-encoder/types.d.ts +207 -0
  54. package/build/generic-swap-transaction-builder/dex-encoder/types.js +194 -0
  55. package/build/generic-swap-transaction-builder/dex-encoder/types.js.map +1 -0
  56. package/build/generic-swap-transaction-builder/orchestration.d.ts +65 -0
  57. package/build/generic-swap-transaction-builder/orchestration.js +198 -0
  58. package/build/generic-swap-transaction-builder/orchestration.js.map +1 -0
  59. package/build/generic-swap-transaction-builder/resolved/build-transaction.d.ts +13 -0
  60. package/build/generic-swap-transaction-builder/resolved/build-transaction.js +343 -0
  61. package/build/generic-swap-transaction-builder/resolved/build-transaction.js.map +1 -0
  62. package/build/generic-swap-transaction-builder/resolved/index.d.ts +4 -0
  63. package/build/generic-swap-transaction-builder/resolved/index.js +21 -0
  64. package/build/generic-swap-transaction-builder/resolved/index.js.map +1 -0
  65. package/build/generic-swap-transaction-builder/resolved/route-plan.d.ts +2 -0
  66. package/build/generic-swap-transaction-builder/resolved/route-plan.js +11 -0
  67. package/build/generic-swap-transaction-builder/resolved/route-plan.js.map +1 -0
  68. package/build/generic-swap-transaction-builder/resolved/types.d.ts +67 -0
  69. package/build/generic-swap-transaction-builder/resolved/types.js.map +1 -0
  70. package/build/generic-swap-transaction-builder/resolved/validation.d.ts +10 -0
  71. package/build/generic-swap-transaction-builder/resolved/validation.js +69 -0
  72. package/build/generic-swap-transaction-builder/resolved/validation.js.map +1 -0
  73. package/build/generic-swap-transaction-builder.d.ts +6 -4
  74. package/build/generic-swap-transaction-builder.js +8 -6
  75. package/build/generic-swap-transaction-builder.js.map +1 -1
  76. package/build/index.d.ts +1 -1
  77. package/build/index.js.map +1 -1
  78. package/build/types.d.ts +3 -0
  79. package/package.json +1 -1
  80. package/build/abi/BProtocol.json +0 -1155
  81. package/build/abi/Jarvis.json +0 -1172
  82. package/build/abi/MStableAsset.json +0 -1545
  83. package/build/abi/OneInchLp.json +0 -1304
  84. package/build/abi/Onebit.json +0 -736
  85. package/build/abi/Shell.json +0 -1294
  86. package/build/abi/TraderJoeV2Router.json +0 -50
  87. package/build/abi/idle-dao/idle-cdo-factory.json +0 -38
  88. package/build/abi/idle-dao/idle-cdo.json +0 -1245
  89. package/build/abi/infusion/InfusionFactory.json +0 -147
  90. package/build/abi/infusion/InfusionPair.json +0 -658
  91. package/build/abi/infusion/InfusionRouter.json +0 -442
  92. package/build/abi/maker-psm/pot.json +0 -322
  93. package/build/abi/maker-psm/psm.json +0 -243
  94. package/build/abi/maker-psm/vat.json +0 -363
  95. package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +0 -773
  96. package/build/abi/quick-perps/fast-price-events.json +0 -70
  97. package/build/abi/quick-perps/fast-price-feed.json +0 -741
  98. package/build/abi/quick-perps/reader.json +0 -313
  99. package/build/abi/quick-perps/vault-price-feed.json +0 -323
  100. package/build/abi/quick-perps/vault.json +0 -1953
  101. package/build/abi/uniswap-v2/excalibur-pool.json +0 -881
  102. package/build/abi/uniswap-v2/mdex-factory.json +0 -759
  103. package/build/abi/wUSDM.json +0 -757
  104. package/build/abi/zrx.v2.json +0 -1967
  105. package/build/abi/zrx.v3.json +0 -3454
  106. package/build/abi/zrx.v4.json +0 -2193
  107. package/build/dex/OneInchLp.d.ts +0 -24
  108. package/build/dex/OneInchLp.js +0 -43
  109. package/build/dex/OneInchLp.js.map +0 -1
  110. package/build/dex/bProtocol/bProtocol.d.ts +0 -15
  111. package/build/dex/bProtocol/bProtocol.js +0 -56
  112. package/build/dex/bProtocol/bProtocol.js.map +0 -1
  113. package/build/dex/bProtocol/types.d.ts +0 -11
  114. package/build/dex/bProtocol/types.js +0 -8
  115. package/build/dex/bProtocol/types.js.map +0 -1
  116. package/build/dex/ekubo/pools/base-pool.d.ts +0 -47
  117. package/build/dex/ekubo/pools/base-pool.js +0 -184
  118. package/build/dex/ekubo/pools/base-pool.js.map +0 -1
  119. package/build/dex/ekubo/pools/iface.d.ts +0 -46
  120. package/build/dex/ekubo/pools/iface.js +0 -75
  121. package/build/dex/ekubo/pools/iface.js.map +0 -1
  122. package/build/dex/ekubo/pools/math/price.d.ts +0 -7
  123. package/build/dex/ekubo/pools/math/price.js +0 -112
  124. package/build/dex/ekubo/pools/math/price.js.map +0 -1
  125. package/build/dex/ekubo/pools/oracle-pool.d.ts +0 -10
  126. package/build/dex/ekubo/pools/oracle-pool.js +0 -19
  127. package/build/dex/ekubo/pools/oracle-pool.js.map +0 -1
  128. package/build/dex/ekubo/pools/pool-utils.d.ts +0 -44
  129. package/build/dex/ekubo/pools/pool-utils.js +0 -240
  130. package/build/dex/ekubo/pools/pool-utils.js.map +0 -1
  131. package/build/dex/idle-dao/config.d.ts +0 -5
  132. package/build/dex/idle-dao/config.js +0 -24
  133. package/build/dex/idle-dao/config.js.map +0 -1
  134. package/build/dex/idle-dao/idle-dao.d.ts +0 -42
  135. package/build/dex/idle-dao/idle-dao.js +0 -279
  136. package/build/dex/idle-dao/idle-dao.js.map +0 -1
  137. package/build/dex/idle-dao/token_list.d.ts +0 -4
  138. package/build/dex/idle-dao/token_list.js +0 -289
  139. package/build/dex/idle-dao/token_list.js.map +0 -1
  140. package/build/dex/idle-dao/tokens.d.ts +0 -9
  141. package/build/dex/idle-dao/tokens.js +0 -68
  142. package/build/dex/idle-dao/tokens.js.map +0 -1
  143. package/build/dex/idle-dao/types.d.ts +0 -35
  144. package/build/dex/idle-dao/types.js +0 -11
  145. package/build/dex/idle-dao/types.js.map +0 -1
  146. package/build/dex/idle-dao/utils.d.ts +0 -8
  147. package/build/dex/idle-dao/utils.js +0 -149
  148. package/build/dex/idle-dao/utils.js.map +0 -1
  149. package/build/dex/infusion/config.d.ts +0 -3
  150. package/build/dex/infusion/config.js +0 -20
  151. package/build/dex/infusion/config.js.map +0 -1
  152. package/build/dex/infusion/infusion-stable-pool.d.ts +0 -4
  153. package/build/dex/infusion/infusion-stable-pool.js +0 -74
  154. package/build/dex/infusion/infusion-stable-pool.js.map +0 -1
  155. package/build/dex/infusion/infusion.d.ts +0 -51
  156. package/build/dex/infusion/infusion.js +0 -500
  157. package/build/dex/infusion/infusion.js.map +0 -1
  158. package/build/dex/infusion/types.d.ts +0 -45
  159. package/build/dex/infusion/types.js.map +0 -1
  160. package/build/dex/infusion/utils/isStablePair.d.ts +0 -2
  161. package/build/dex/infusion/utils/isStablePair.js +0 -18
  162. package/build/dex/infusion/utils/isStablePair.js.map +0 -1
  163. package/build/dex/jarvis.d.ts +0 -56
  164. package/build/dex/jarvis.js +0 -163
  165. package/build/dex/jarvis.js.map +0 -1
  166. package/build/dex/mStable.d.ts +0 -44
  167. package/build/dex/mStable.js +0 -75
  168. package/build/dex/mStable.js.map +0 -1
  169. package/build/dex/maker-psm/config.d.ts +0 -11
  170. package/build/dex/maker-psm/config.js +0 -53
  171. package/build/dex/maker-psm/config.js.map +0 -1
  172. package/build/dex/maker-psm/maker-psm.d.ts +0 -103
  173. package/build/dex/maker-psm/maker-psm.js +0 -493
  174. package/build/dex/maker-psm/maker-psm.js.map +0 -1
  175. package/build/dex/maker-psm/types.d.ts +0 -39
  176. package/build/dex/maker-psm/types.js.map +0 -1
  177. package/build/dex/onebit/onebit.d.ts +0 -16
  178. package/build/dex/onebit/onebit.js +0 -61
  179. package/build/dex/onebit/onebit.js.map +0 -1
  180. package/build/dex/onebit/types.d.ts +0 -14
  181. package/build/dex/onebit/types.js +0 -8
  182. package/build/dex/onebit/types.js.map +0 -1
  183. package/build/dex/quick-perps/config.d.ts +0 -11
  184. package/build/dex/quick-perps/config.js +0 -27
  185. package/build/dex/quick-perps/config.js.map +0 -1
  186. package/build/dex/quick-perps/fast-price-feed.d.ts +0 -26
  187. package/build/dex/quick-perps/fast-price-feed.js +0 -184
  188. package/build/dex/quick-perps/fast-price-feed.js.map +0 -1
  189. package/build/dex/quick-perps/pool.d.ts +0 -21
  190. package/build/dex/quick-perps/pool.js +0 -229
  191. package/build/dex/quick-perps/pool.js.map +0 -1
  192. package/build/dex/quick-perps/quick-perps.d.ts +0 -53
  193. package/build/dex/quick-perps/quick-perps.js +0 -247
  194. package/build/dex/quick-perps/quick-perps.js.map +0 -1
  195. package/build/dex/quick-perps/types.d.ts +0 -98
  196. package/build/dex/quick-perps/types.js.map +0 -1
  197. package/build/dex/quick-perps/usdq.d.ts +0 -15
  198. package/build/dex/quick-perps/usdq.js +0 -62
  199. package/build/dex/quick-perps/usdq.js.map +0 -1
  200. package/build/dex/quick-perps/vault-price-feed.d.ts +0 -43
  201. package/build/dex/quick-perps/vault-price-feed.js +0 -203
  202. package/build/dex/quick-perps/vault-price-feed.js.map +0 -1
  203. package/build/dex/quick-perps/vault-utils.d.ts +0 -8
  204. package/build/dex/quick-perps/vault-utils.js +0 -42
  205. package/build/dex/quick-perps/vault-utils.js.map +0 -1
  206. package/build/dex/quick-perps/vault.d.ts +0 -46
  207. package/build/dex/quick-perps/vault.js +0 -182
  208. package/build/dex/quick-perps/vault.js.map +0 -1
  209. package/build/dex/se-vlr/config.d.ts +0 -3
  210. package/build/dex/se-vlr/config.js +0 -24
  211. package/build/dex/se-vlr/config.js.map +0 -1
  212. package/build/dex/se-vlr/se-vlr-pool.d.ts +0 -39
  213. package/build/dex/se-vlr/se-vlr-pool.js +0 -70
  214. package/build/dex/se-vlr/se-vlr-pool.js.map +0 -1
  215. package/build/dex/se-vlr/se-vlr.d.ts +0 -35
  216. package/build/dex/se-vlr/se-vlr.js +0 -131
  217. package/build/dex/se-vlr/se-vlr.js.map +0 -1
  218. package/build/dex/se-vlr/types.d.ts +0 -6
  219. package/build/dex/se-vlr/types.js +0 -3
  220. package/build/dex/se-vlr/types.js.map +0 -1
  221. package/build/dex/shell.d.ts +0 -25
  222. package/build/dex/shell.js +0 -41
  223. package/build/dex/shell.js.map +0 -1
  224. package/build/dex/solidly/forks-override/aerodrome.d.ts +0 -14
  225. package/build/dex/solidly/forks-override/aerodrome.js +0 -46
  226. package/build/dex/solidly/forks-override/aerodrome.js.map +0 -1
  227. package/build/dex/solidly/forks-override/chronos.d.ts +0 -23
  228. package/build/dex/solidly/forks-override/chronos.js +0 -141
  229. package/build/dex/solidly/forks-override/chronos.js.map +0 -1
  230. package/build/dex/solidly/forks-override/usdfi.d.ts +0 -8
  231. package/build/dex/solidly/forks-override/usdfi.js +0 -15
  232. package/build/dex/solidly/forks-override/usdfi.js.map +0 -1
  233. package/build/dex/solidly/forks-override/velocimeter.d.ts +0 -23
  234. package/build/dex/solidly/forks-override/velocimeter.js +0 -77
  235. package/build/dex/solidly/forks-override/velocimeter.js.map +0 -1
  236. package/build/dex/tessera/types.d.ts +0 -3
  237. package/build/dex/tessera/types.js +0 -3
  238. package/build/dex/tessera/types.js.map +0 -1
  239. package/build/dex/trader-joe-v2.d.ts +0 -40
  240. package/build/dex/trader-joe-v2.js +0 -74
  241. package/build/dex/trader-joe-v2.js.map +0 -1
  242. package/build/dex/uniswap-v2/dfyn.d.ts +0 -19
  243. package/build/dex/uniswap-v2/dfyn.js +0 -61
  244. package/build/dex/uniswap-v2/dfyn.js.map +0 -1
  245. package/build/dex/uniswap-v2/excalibur.d.ts +0 -24
  246. package/build/dex/uniswap-v2/excalibur.js +0 -47
  247. package/build/dex/uniswap-v2/excalibur.js.map +0 -1
  248. package/build/dex/uniswap-v2/mdex.d.ts +0 -24
  249. package/build/dex/uniswap-v2/mdex.js +0 -50
  250. package/build/dex/uniswap-v2/mdex.js.map +0 -1
  251. package/build/dex/uniswap-v2/nomiswap-v2.d.ts +0 -24
  252. package/build/dex/uniswap-v2/nomiswap-v2.js +0 -57
  253. package/build/dex/uniswap-v2/nomiswap-v2.js.map +0 -1
  254. package/build/dex/uniswap-v3/scripts/bench-all-dexes.js +0 -160
  255. package/build/dex/uniswap-v3/scripts/bench-all-dexes.js.map +0 -1
  256. package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +0 -94
  257. package/build/dex/uniswap-v3/uniswap-v3-new.js +0 -923
  258. package/build/dex/uniswap-v3/uniswap-v3-new.js.map +0 -1
  259. package/build/dex/uniswap-v4/contract-math/Position.d.ts +0 -3
  260. package/build/dex/uniswap-v4/contract-math/Position.js +0 -10
  261. package/build/dex/uniswap-v4/contract-math/Position.js.map +0 -1
  262. package/build/dex/usual-bond/config.d.ts +0 -3
  263. package/build/dex/usual-bond/config.js +0 -13
  264. package/build/dex/usual-bond/config.js.map +0 -1
  265. package/build/dex/usual-bond/types.d.ts +0 -7
  266. package/build/dex/usual-bond/types.js +0 -3
  267. package/build/dex/usual-bond/types.js.map +0 -1
  268. package/build/dex/usual-bond/usual-bond.d.ts +0 -35
  269. package/build/dex/usual-bond/usual-bond.js +0 -176
  270. package/build/dex/usual-bond/usual-bond.js.map +0 -1
  271. package/build/dex/wusdm/config.d.ts +0 -3
  272. package/build/dex/wusdm/config.js +0 -43
  273. package/build/dex/wusdm/config.js.map +0 -1
  274. package/build/dex/wusdm/constants.d.ts +0 -2
  275. package/build/dex/wusdm/constants.js +0 -6
  276. package/build/dex/wusdm/constants.js.map +0 -1
  277. package/build/dex/wusdm/types.d.ts +0 -18
  278. package/build/dex/wusdm/types.js +0 -11
  279. package/build/dex/wusdm/types.js.map +0 -1
  280. package/build/dex/wusdm/wusdm-pool.d.ts +0 -21
  281. package/build/dex/wusdm/wusdm-pool.js +0 -74
  282. package/build/dex/wusdm/wusdm-pool.js.map +0 -1
  283. package/build/dex/wusdm/wusdm.d.ts +0 -46
  284. package/build/dex/wusdm/wusdm.js +0 -243
  285. package/build/dex/wusdm/wusdm.js.map +0 -1
  286. package/build/dex/zerox/config.d.ts +0 -2
  287. package/build/dex/zerox/config.js +0 -33
  288. package/build/dex/zerox/config.js.map +0 -1
  289. package/build/dex/zerox/index.d.ts +0 -22
  290. package/build/dex/zerox/index.js +0 -225
  291. package/build/dex/zerox/index.js.map +0 -1
  292. package/build/dex/zerox/order.d.ts +0 -88
  293. package/build/dex/zerox/order.js +0 -53
  294. package/build/dex/zerox/order.js.map +0 -1
  295. package/build/dex/zerox/types.d.ts +0 -73
  296. package/build/dex/zerox/types.js +0 -21
  297. package/build/dex/zerox/types.js.map +0 -1
  298. /package/build/dex/{uniswap-v3/scripts/bench-all-dexes.d.ts → fluid-dex/scripts/measure-calc-time.d.ts} +0 -0
  299. /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":"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"}
@@ -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