@paraswap/dex-lib 5.1.1 → 5.1.2

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