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