@paraswap/dex-lib 5.1.31 → 5.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/build/abi/pancakeswap-infinity/cl-pool-manager.json +80 -0
  2. package/build/dex/bebop/bebop.d.ts +1 -1
  3. package/build/dex/bebop/bebop.js +8 -8
  4. package/build/dex/bebop/bebop.js.map +1 -1
  5. package/build/dex/curve-v1/config.js +6 -0
  6. package/build/dex/curve-v1/config.js.map +1 -1
  7. package/build/dex/curve-v1/curve-v1.js +5 -0
  8. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  9. package/build/dex/curve-v1/types.d.ts +1 -0
  10. package/build/dex/curve-v1/types.js.map +1 -1
  11. package/build/dex/fluid-dex/scripts/measure-calc-time.js +178 -0
  12. package/build/dex/fluid-dex/scripts/measure-calc-time.js.map +1 -0
  13. package/build/dex/hashflow/hashflow.d.ts +2 -2
  14. package/build/dex/hashflow/hashflow.js +18 -22
  15. package/build/dex/hashflow/hashflow.js.map +1 -1
  16. package/build/dex/uniswap-v4/api-go/compare-pricing.d.ts +1 -0
  17. package/build/dex/uniswap-v4/api-go/compare-pricing.js +187 -0
  18. package/build/dex/uniswap-v4/api-go/compare-pricing.js.map +1 -0
  19. package/build/dex/uniswap-v4/api-go/compare-states.d.ts +1 -0
  20. package/build/dex/uniswap-v4/api-go/compare-states.js +149 -0
  21. package/build/dex/uniswap-v4/api-go/compare-states.js.map +1 -0
  22. package/build/dex/uniswap-v4/api-go/fetch-pool-key.d.ts +0 -0
  23. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js +140 -0
  24. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js.map +1 -0
  25. package/build/executor/__test-utils__/snapshot-test-helpers.d.ts +10 -0
  26. package/build/executor/__test-utils__/snapshot-test-helpers.js +72 -0
  27. package/build/executor/__test-utils__/snapshot-test-helpers.js.map +1 -0
  28. package/build/executor/address-utils.d.ts +2 -0
  29. package/build/executor/address-utils.js +7 -0
  30. package/build/executor/address-utils.js.map +1 -0
  31. package/build/executor/approval.d.ts +9 -0
  32. package/build/executor/approval.js +29 -0
  33. package/build/executor/approval.js.map +1 -0
  34. package/build/executor/encoding-context.d.ts +4 -0
  35. package/build/executor/encoding-context.js +54 -0
  36. package/build/executor/encoding-context.js.map +1 -0
  37. package/build/executor/encoding-types.d.ts +75 -0
  38. package/build/{dex/quick-perps/types.js → executor/encoding-types.js} +1 -1
  39. package/build/executor/encoding-types.js.map +1 -0
  40. package/build/executor/factory.d.ts +4 -0
  41. package/build/executor/factory.js +23 -0
  42. package/build/executor/factory.js.map +1 -0
  43. package/build/executor/route-plan.d.ts +8 -0
  44. package/build/executor/route-plan.js +109 -0
  45. package/build/executor/route-plan.js.map +1 -0
  46. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.d.ts +6 -0
  47. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js +39 -0
  48. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js.map +1 -0
  49. package/build/generic-swap-transaction-builder/dex-encoder/index.d.ts +4 -0
  50. package/build/generic-swap-transaction-builder/dex-encoder/index.js +21 -0
  51. package/build/generic-swap-transaction-builder/dex-encoder/index.js.map +1 -0
  52. package/build/generic-swap-transaction-builder/dex-encoder/ports.d.ts +26 -0
  53. package/build/{dex/maker-psm/types.js → generic-swap-transaction-builder/dex-encoder/ports.js} +1 -1
  54. package/build/generic-swap-transaction-builder/dex-encoder/ports.js.map +1 -0
  55. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.d.ts +22 -0
  56. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js +299 -0
  57. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js.map +1 -0
  58. package/build/generic-swap-transaction-builder/dex-encoder/types.d.ts +207 -0
  59. package/build/generic-swap-transaction-builder/dex-encoder/types.js +194 -0
  60. package/build/generic-swap-transaction-builder/dex-encoder/types.js.map +1 -0
  61. package/build/generic-swap-transaction-builder/orchestration.d.ts +65 -0
  62. package/build/generic-swap-transaction-builder/orchestration.js +198 -0
  63. package/build/generic-swap-transaction-builder/orchestration.js.map +1 -0
  64. package/build/generic-swap-transaction-builder/resolved/build-transaction.d.ts +13 -0
  65. package/build/generic-swap-transaction-builder/resolved/build-transaction.js +343 -0
  66. package/build/generic-swap-transaction-builder/resolved/build-transaction.js.map +1 -0
  67. package/build/generic-swap-transaction-builder/resolved/index.d.ts +4 -0
  68. package/build/generic-swap-transaction-builder/resolved/index.js +21 -0
  69. package/build/generic-swap-transaction-builder/resolved/index.js.map +1 -0
  70. package/build/generic-swap-transaction-builder/resolved/route-plan.d.ts +2 -0
  71. package/build/generic-swap-transaction-builder/resolved/route-plan.js +11 -0
  72. package/build/generic-swap-transaction-builder/resolved/route-plan.js.map +1 -0
  73. package/build/generic-swap-transaction-builder/resolved/types.d.ts +67 -0
  74. package/build/generic-swap-transaction-builder/resolved/types.js.map +1 -0
  75. package/build/generic-swap-transaction-builder/resolved/validation.d.ts +10 -0
  76. package/build/generic-swap-transaction-builder/resolved/validation.js +69 -0
  77. package/build/generic-swap-transaction-builder/resolved/validation.js.map +1 -0
  78. package/package.json +1 -1
  79. package/build/abi/BProtocol.json +0 -1155
  80. package/build/abi/Jarvis.json +0 -1172
  81. package/build/abi/MStableAsset.json +0 -1545
  82. package/build/abi/OneInchLp.json +0 -1304
  83. package/build/abi/Onebit.json +0 -736
  84. package/build/abi/Shell.json +0 -1294
  85. package/build/abi/TraderJoeV2Router.json +0 -50
  86. package/build/abi/idle-dao/idle-cdo-factory.json +0 -38
  87. package/build/abi/idle-dao/idle-cdo.json +0 -1245
  88. package/build/abi/infusion/InfusionFactory.json +0 -147
  89. package/build/abi/infusion/InfusionPair.json +0 -658
  90. package/build/abi/infusion/InfusionRouter.json +0 -442
  91. package/build/abi/maker-psm/pot.json +0 -322
  92. package/build/abi/maker-psm/psm.json +0 -243
  93. package/build/abi/maker-psm/vat.json +0 -363
  94. package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +0 -773
  95. package/build/abi/quick-perps/fast-price-events.json +0 -70
  96. package/build/abi/quick-perps/fast-price-feed.json +0 -741
  97. package/build/abi/quick-perps/reader.json +0 -313
  98. package/build/abi/quick-perps/vault-price-feed.json +0 -323
  99. package/build/abi/quick-perps/vault.json +0 -1953
  100. package/build/abi/uniswap-v2/excalibur-pool.json +0 -881
  101. package/build/abi/uniswap-v2/mdex-factory.json +0 -759
  102. package/build/abi/wUSDM.json +0 -757
  103. package/build/abi/zrx.v2.json +0 -1967
  104. package/build/abi/zrx.v3.json +0 -3454
  105. package/build/abi/zrx.v4.json +0 -2193
  106. package/build/dex/OneInchLp.d.ts +0 -24
  107. package/build/dex/OneInchLp.js +0 -43
  108. package/build/dex/OneInchLp.js.map +0 -1
  109. package/build/dex/bProtocol/bProtocol.d.ts +0 -15
  110. package/build/dex/bProtocol/bProtocol.js +0 -56
  111. package/build/dex/bProtocol/bProtocol.js.map +0 -1
  112. package/build/dex/bProtocol/types.d.ts +0 -11
  113. package/build/dex/bProtocol/types.js +0 -8
  114. package/build/dex/bProtocol/types.js.map +0 -1
  115. package/build/dex/ekubo/pools/base-pool.d.ts +0 -47
  116. package/build/dex/ekubo/pools/base-pool.js +0 -184
  117. package/build/dex/ekubo/pools/base-pool.js.map +0 -1
  118. package/build/dex/ekubo/pools/iface.d.ts +0 -46
  119. package/build/dex/ekubo/pools/iface.js +0 -75
  120. package/build/dex/ekubo/pools/iface.js.map +0 -1
  121. package/build/dex/ekubo/pools/math/price.d.ts +0 -7
  122. package/build/dex/ekubo/pools/math/price.js +0 -112
  123. package/build/dex/ekubo/pools/math/price.js.map +0 -1
  124. package/build/dex/ekubo/pools/oracle-pool.d.ts +0 -10
  125. package/build/dex/ekubo/pools/oracle-pool.js +0 -19
  126. package/build/dex/ekubo/pools/oracle-pool.js.map +0 -1
  127. package/build/dex/ekubo/pools/pool-utils.d.ts +0 -44
  128. package/build/dex/ekubo/pools/pool-utils.js +0 -240
  129. package/build/dex/ekubo/pools/pool-utils.js.map +0 -1
  130. package/build/dex/idle-dao/config.d.ts +0 -5
  131. package/build/dex/idle-dao/config.js +0 -24
  132. package/build/dex/idle-dao/config.js.map +0 -1
  133. package/build/dex/idle-dao/idle-dao.d.ts +0 -42
  134. package/build/dex/idle-dao/idle-dao.js +0 -279
  135. package/build/dex/idle-dao/idle-dao.js.map +0 -1
  136. package/build/dex/idle-dao/token_list.d.ts +0 -4
  137. package/build/dex/idle-dao/token_list.js +0 -289
  138. package/build/dex/idle-dao/token_list.js.map +0 -1
  139. package/build/dex/idle-dao/tokens.d.ts +0 -9
  140. package/build/dex/idle-dao/tokens.js +0 -68
  141. package/build/dex/idle-dao/tokens.js.map +0 -1
  142. package/build/dex/idle-dao/types.d.ts +0 -35
  143. package/build/dex/idle-dao/types.js +0 -11
  144. package/build/dex/idle-dao/types.js.map +0 -1
  145. package/build/dex/idle-dao/utils.d.ts +0 -8
  146. package/build/dex/idle-dao/utils.js +0 -149
  147. package/build/dex/idle-dao/utils.js.map +0 -1
  148. package/build/dex/infusion/config.d.ts +0 -3
  149. package/build/dex/infusion/config.js +0 -20
  150. package/build/dex/infusion/config.js.map +0 -1
  151. package/build/dex/infusion/infusion-stable-pool.d.ts +0 -4
  152. package/build/dex/infusion/infusion-stable-pool.js +0 -74
  153. package/build/dex/infusion/infusion-stable-pool.js.map +0 -1
  154. package/build/dex/infusion/infusion.d.ts +0 -51
  155. package/build/dex/infusion/infusion.js +0 -500
  156. package/build/dex/infusion/infusion.js.map +0 -1
  157. package/build/dex/infusion/types.d.ts +0 -45
  158. package/build/dex/infusion/types.js.map +0 -1
  159. package/build/dex/infusion/utils/isStablePair.d.ts +0 -2
  160. package/build/dex/infusion/utils/isStablePair.js +0 -18
  161. package/build/dex/infusion/utils/isStablePair.js.map +0 -1
  162. package/build/dex/jarvis.d.ts +0 -56
  163. package/build/dex/jarvis.js +0 -163
  164. package/build/dex/jarvis.js.map +0 -1
  165. package/build/dex/mStable.d.ts +0 -44
  166. package/build/dex/mStable.js +0 -75
  167. package/build/dex/mStable.js.map +0 -1
  168. package/build/dex/maker-psm/config.d.ts +0 -11
  169. package/build/dex/maker-psm/config.js +0 -53
  170. package/build/dex/maker-psm/config.js.map +0 -1
  171. package/build/dex/maker-psm/maker-psm.d.ts +0 -103
  172. package/build/dex/maker-psm/maker-psm.js +0 -493
  173. package/build/dex/maker-psm/maker-psm.js.map +0 -1
  174. package/build/dex/maker-psm/types.d.ts +0 -39
  175. package/build/dex/maker-psm/types.js.map +0 -1
  176. package/build/dex/onebit/onebit.d.ts +0 -16
  177. package/build/dex/onebit/onebit.js +0 -61
  178. package/build/dex/onebit/onebit.js.map +0 -1
  179. package/build/dex/onebit/types.d.ts +0 -14
  180. package/build/dex/onebit/types.js +0 -8
  181. package/build/dex/onebit/types.js.map +0 -1
  182. package/build/dex/quick-perps/config.d.ts +0 -11
  183. package/build/dex/quick-perps/config.js +0 -27
  184. package/build/dex/quick-perps/config.js.map +0 -1
  185. package/build/dex/quick-perps/fast-price-feed.d.ts +0 -26
  186. package/build/dex/quick-perps/fast-price-feed.js +0 -184
  187. package/build/dex/quick-perps/fast-price-feed.js.map +0 -1
  188. package/build/dex/quick-perps/pool.d.ts +0 -21
  189. package/build/dex/quick-perps/pool.js +0 -229
  190. package/build/dex/quick-perps/pool.js.map +0 -1
  191. package/build/dex/quick-perps/quick-perps.d.ts +0 -53
  192. package/build/dex/quick-perps/quick-perps.js +0 -247
  193. package/build/dex/quick-perps/quick-perps.js.map +0 -1
  194. package/build/dex/quick-perps/types.d.ts +0 -98
  195. package/build/dex/quick-perps/types.js.map +0 -1
  196. package/build/dex/quick-perps/usdq.d.ts +0 -15
  197. package/build/dex/quick-perps/usdq.js +0 -62
  198. package/build/dex/quick-perps/usdq.js.map +0 -1
  199. package/build/dex/quick-perps/vault-price-feed.d.ts +0 -43
  200. package/build/dex/quick-perps/vault-price-feed.js +0 -203
  201. package/build/dex/quick-perps/vault-price-feed.js.map +0 -1
  202. package/build/dex/quick-perps/vault-utils.d.ts +0 -8
  203. package/build/dex/quick-perps/vault-utils.js +0 -42
  204. package/build/dex/quick-perps/vault-utils.js.map +0 -1
  205. package/build/dex/quick-perps/vault.d.ts +0 -46
  206. package/build/dex/quick-perps/vault.js +0 -182
  207. package/build/dex/quick-perps/vault.js.map +0 -1
  208. package/build/dex/se-vlr/config.d.ts +0 -3
  209. package/build/dex/se-vlr/config.js +0 -24
  210. package/build/dex/se-vlr/config.js.map +0 -1
  211. package/build/dex/se-vlr/se-vlr-pool.d.ts +0 -39
  212. package/build/dex/se-vlr/se-vlr-pool.js +0 -70
  213. package/build/dex/se-vlr/se-vlr-pool.js.map +0 -1
  214. package/build/dex/se-vlr/se-vlr.d.ts +0 -35
  215. package/build/dex/se-vlr/se-vlr.js +0 -131
  216. package/build/dex/se-vlr/se-vlr.js.map +0 -1
  217. package/build/dex/se-vlr/types.d.ts +0 -6
  218. package/build/dex/se-vlr/types.js +0 -3
  219. package/build/dex/se-vlr/types.js.map +0 -1
  220. package/build/dex/shell.d.ts +0 -25
  221. package/build/dex/shell.js +0 -41
  222. package/build/dex/shell.js.map +0 -1
  223. package/build/dex/solidly/forks-override/aerodrome.d.ts +0 -14
  224. package/build/dex/solidly/forks-override/aerodrome.js +0 -46
  225. package/build/dex/solidly/forks-override/aerodrome.js.map +0 -1
  226. package/build/dex/solidly/forks-override/chronos.d.ts +0 -23
  227. package/build/dex/solidly/forks-override/chronos.js +0 -141
  228. package/build/dex/solidly/forks-override/chronos.js.map +0 -1
  229. package/build/dex/solidly/forks-override/usdfi.d.ts +0 -8
  230. package/build/dex/solidly/forks-override/usdfi.js +0 -15
  231. package/build/dex/solidly/forks-override/usdfi.js.map +0 -1
  232. package/build/dex/solidly/forks-override/velocimeter.d.ts +0 -23
  233. package/build/dex/solidly/forks-override/velocimeter.js +0 -77
  234. package/build/dex/solidly/forks-override/velocimeter.js.map +0 -1
  235. package/build/dex/tessera/types.d.ts +0 -3
  236. package/build/dex/tessera/types.js +0 -3
  237. package/build/dex/tessera/types.js.map +0 -1
  238. package/build/dex/trader-joe-v2.d.ts +0 -40
  239. package/build/dex/trader-joe-v2.js +0 -74
  240. package/build/dex/trader-joe-v2.js.map +0 -1
  241. package/build/dex/uniswap-v2/dfyn.d.ts +0 -19
  242. package/build/dex/uniswap-v2/dfyn.js +0 -61
  243. package/build/dex/uniswap-v2/dfyn.js.map +0 -1
  244. package/build/dex/uniswap-v2/excalibur.d.ts +0 -24
  245. package/build/dex/uniswap-v2/excalibur.js +0 -47
  246. package/build/dex/uniswap-v2/excalibur.js.map +0 -1
  247. package/build/dex/uniswap-v2/mdex.d.ts +0 -24
  248. package/build/dex/uniswap-v2/mdex.js +0 -50
  249. package/build/dex/uniswap-v2/mdex.js.map +0 -1
  250. package/build/dex/uniswap-v2/nomiswap-v2.d.ts +0 -24
  251. package/build/dex/uniswap-v2/nomiswap-v2.js +0 -57
  252. package/build/dex/uniswap-v2/nomiswap-v2.js.map +0 -1
  253. package/build/dex/uniswap-v3/scripts/bench-all-dexes.js +0 -160
  254. package/build/dex/uniswap-v3/scripts/bench-all-dexes.js.map +0 -1
  255. package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +0 -94
  256. package/build/dex/uniswap-v3/uniswap-v3-new.js +0 -923
  257. package/build/dex/uniswap-v3/uniswap-v3-new.js.map +0 -1
  258. package/build/dex/uniswap-v4/contract-math/Position.d.ts +0 -3
  259. package/build/dex/uniswap-v4/contract-math/Position.js +0 -10
  260. package/build/dex/uniswap-v4/contract-math/Position.js.map +0 -1
  261. package/build/dex/usual-bond/config.d.ts +0 -3
  262. package/build/dex/usual-bond/config.js +0 -13
  263. package/build/dex/usual-bond/config.js.map +0 -1
  264. package/build/dex/usual-bond/types.d.ts +0 -7
  265. package/build/dex/usual-bond/types.js +0 -3
  266. package/build/dex/usual-bond/types.js.map +0 -1
  267. package/build/dex/usual-bond/usual-bond.d.ts +0 -35
  268. package/build/dex/usual-bond/usual-bond.js +0 -176
  269. package/build/dex/usual-bond/usual-bond.js.map +0 -1
  270. package/build/dex/wusdm/config.d.ts +0 -3
  271. package/build/dex/wusdm/config.js +0 -43
  272. package/build/dex/wusdm/config.js.map +0 -1
  273. package/build/dex/wusdm/constants.d.ts +0 -2
  274. package/build/dex/wusdm/constants.js +0 -6
  275. package/build/dex/wusdm/constants.js.map +0 -1
  276. package/build/dex/wusdm/types.d.ts +0 -18
  277. package/build/dex/wusdm/types.js +0 -11
  278. package/build/dex/wusdm/types.js.map +0 -1
  279. package/build/dex/wusdm/wusdm-pool.d.ts +0 -21
  280. package/build/dex/wusdm/wusdm-pool.js +0 -74
  281. package/build/dex/wusdm/wusdm-pool.js.map +0 -1
  282. package/build/dex/wusdm/wusdm.d.ts +0 -46
  283. package/build/dex/wusdm/wusdm.js +0 -243
  284. package/build/dex/wusdm/wusdm.js.map +0 -1
  285. package/build/dex/zerox/config.d.ts +0 -2
  286. package/build/dex/zerox/config.js +0 -33
  287. package/build/dex/zerox/config.js.map +0 -1
  288. package/build/dex/zerox/index.d.ts +0 -22
  289. package/build/dex/zerox/index.js +0 -225
  290. package/build/dex/zerox/index.js.map +0 -1
  291. package/build/dex/zerox/order.d.ts +0 -88
  292. package/build/dex/zerox/order.js +0 -53
  293. package/build/dex/zerox/order.js.map +0 -1
  294. package/build/dex/zerox/types.d.ts +0 -73
  295. package/build/dex/zerox/types.js +0 -21
  296. package/build/dex/zerox/types.js.map +0 -1
  297. /package/build/dex/{uniswap-v3/scripts/bench-all-dexes.d.ts → fluid-dex/scripts/measure-calc-time.d.ts} +0 -0
  298. /package/build/{dex/infusion → generic-swap-transaction-builder/resolved}/types.js +0 -0
@@ -0,0 +1,8 @@
1
+ import type { OptimalRate } from '@paraswap/core';
2
+ import type { OrderedExecutorLeg, ResolvedLeg, RoutePlan, RoutePlanExchange, RoutePosition } from './encoding-types';
3
+ export declare function buildRoutePlan(priceRoute: OptimalRate): RoutePlan;
4
+ export declare function flattenRoutePlan(routePlan: RoutePlan): RoutePosition[];
5
+ export declare function walkRoutePlan(routePlan: RoutePlan): RoutePlanExchange[];
6
+ export declare function routePositionKey(position: RoutePosition): string;
7
+ export declare function getRoutePlanLegCount(routePlan: RoutePlan): number;
8
+ export declare function getOrderedExecutorLegs(routePlan: RoutePlan, resolvedLegs: ResolvedLeg[]): OrderedExecutorLeg[];
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildRoutePlan = buildRoutePlan;
4
+ exports.flattenRoutePlan = flattenRoutePlan;
5
+ exports.walkRoutePlan = walkRoutePlan;
6
+ exports.routePositionKey = routePositionKey;
7
+ exports.getRoutePlanLegCount = getRoutePlanLegCount;
8
+ exports.getOrderedExecutorLegs = getOrderedExecutorLegs;
9
+ function buildRoutePlan(priceRoute) {
10
+ return {
11
+ routes: priceRoute.bestRoute.map(route => ({
12
+ percent: route.percent,
13
+ swaps: route.swaps.map(swap => buildRoutePlanSwap(swap)),
14
+ })),
15
+ };
16
+ }
17
+ function flattenRoutePlan(routePlan) {
18
+ return walkRoutePlan(routePlan).map(({ routeIndex, swapIndex, swapExchangeIndex }) => ({
19
+ routeIndex,
20
+ swapIndex,
21
+ swapExchangeIndex,
22
+ }));
23
+ }
24
+ function walkRoutePlan(routePlan) {
25
+ return routePlan.routes.flatMap((route, routeIndex) => route.swaps.flatMap((swap, swapIndex) => swap.swapExchanges.map((swapExchange, swapExchangeIndex) => ({
26
+ routeIndex,
27
+ swapIndex,
28
+ swapExchangeIndex,
29
+ route,
30
+ swap,
31
+ swapExchange,
32
+ }))));
33
+ }
34
+ function routePositionKey(position) {
35
+ return [
36
+ position.routeIndex,
37
+ position.swapIndex,
38
+ position.swapExchangeIndex,
39
+ ].join(':');
40
+ }
41
+ function getRoutePlanLegCount(routePlan) {
42
+ return routePlan.routes.reduce((routeCount, route) => routeCount +
43
+ route.swaps.reduce((swapCount, swap) => swapCount + swap.swapExchanges.length, 0), 0);
44
+ }
45
+ function getOrderedExecutorLegs(routePlan, resolvedLegs) {
46
+ // Executor validation is deliberately local to bytecode traversal, even when
47
+ // callers already validated serialized boundary input.
48
+ const routePositions = walkRoutePlan(routePlan);
49
+ const routePositionKeys = new Set(routePositions.map(routePositionKey));
50
+ const resolvedLegByKey = new Map();
51
+ const duplicateKeys = new Set();
52
+ const extraKeys = new Set();
53
+ resolvedLegs.forEach(resolvedLeg => {
54
+ const key = routePositionKey(resolvedLeg);
55
+ if (resolvedLegByKey.has(key)) {
56
+ duplicateKeys.add(key);
57
+ }
58
+ if (!routePositionKeys.has(key)) {
59
+ extraKeys.add(key);
60
+ }
61
+ resolvedLegByKey.set(key, resolvedLeg);
62
+ });
63
+ if (duplicateKeys.size > 0) {
64
+ throw new Error(`duplicate resolved leg route position(s): ${[...duplicateKeys].join(', ')}`);
65
+ }
66
+ if (extraKeys.size > 0) {
67
+ throw new Error(`resolved leg route position(s) not present in route plan: ${[
68
+ ...extraKeys,
69
+ ].join(', ')}`);
70
+ }
71
+ return routePositions.map(routePosition => {
72
+ const key = routePositionKey(routePosition);
73
+ const resolvedLeg = resolvedLegByKey.get(key);
74
+ if (!resolvedLeg) {
75
+ throw new Error(`missing resolved leg for route position ${key}`);
76
+ }
77
+ return {
78
+ ...routePosition,
79
+ resolvedLeg,
80
+ };
81
+ });
82
+ }
83
+ function buildRoutePlanSwap(swap) {
84
+ return {
85
+ srcToken: normalizeAddress(swap.srcToken),
86
+ destToken: normalizeAddress(swap.destToken),
87
+ srcAmount: getSwapAmount(swap, 'srcAmount'),
88
+ destAmount: getSwapAmount(swap, 'destAmount'),
89
+ swapExchanges: swap.swapExchanges.map(swapExchange => ({
90
+ exchange: swapExchange.exchange,
91
+ percent: swapExchange.percent,
92
+ srcAmount: swapExchange.srcAmount,
93
+ destAmount: swapExchange.destAmount,
94
+ })),
95
+ };
96
+ }
97
+ function getSwapAmount(swap, amountField) {
98
+ const amount = swap[amountField];
99
+ if (amount !== undefined)
100
+ return amount;
101
+ return sumDecimalStrings(swap.swapExchanges.map(swapExchange => swapExchange[amountField]));
102
+ }
103
+ function sumDecimalStrings(amounts) {
104
+ return amounts.reduce((sum, amount) => sum + BigInt(amount), 0n).toString();
105
+ }
106
+ function normalizeAddress(address) {
107
+ return address.toLowerCase();
108
+ }
109
+ //# sourceMappingURL=route-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-plan.js","sourceRoot":"","sources":["../../src/executor/route-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ContractMethodV6, SwapSide } from '@paraswap/core';
2
+ export declare const DIRECT_CONTRACT_METHODS_V6: readonly [ContractMethodV6.swapExactAmountInOnUniswapV2, ContractMethodV6.swapExactAmountOutOnUniswapV2, ContractMethodV6.swapExactAmountInOnUniswapV3, ContractMethodV6.swapExactAmountOutOnUniswapV3, ContractMethodV6.swapExactAmountInOnBalancerV2, ContractMethodV6.swapExactAmountOutOnBalancerV2, ContractMethodV6.swapExactAmountInOnCurveV1, ContractMethodV6.swapExactAmountInOnCurveV2, ContractMethodV6.swapOnAugustusRFQTryBatchFill, ContractMethodV6.swapExactAmountInOutOnMakerPSM];
3
+ export type DirectContractMethodV6 = (typeof DIRECT_CONTRACT_METHODS_V6)[number];
4
+ export declare const DIRECT_CONTRACT_METHOD_SIDES_V6: Partial<Record<DirectContractMethodV6, SwapSide>>;
5
+ export declare function isDirectContractMethodV6(contractMethod: string): contractMethod is DirectContractMethodV6;
6
+ export declare function getDirectContractMethodSideV6(contractMethod: DirectContractMethodV6): SwapSide | undefined;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DIRECT_CONTRACT_METHOD_SIDES_V6 = exports.DIRECT_CONTRACT_METHODS_V6 = void 0;
4
+ exports.isDirectContractMethodV6 = isDirectContractMethodV6;
5
+ exports.getDirectContractMethodSideV6 = getDirectContractMethodSideV6;
6
+ const core_1 = require("@paraswap/core");
7
+ exports.DIRECT_CONTRACT_METHODS_V6 = [
8
+ core_1.ContractMethodV6.swapExactAmountInOnUniswapV2,
9
+ core_1.ContractMethodV6.swapExactAmountOutOnUniswapV2,
10
+ core_1.ContractMethodV6.swapExactAmountInOnUniswapV3,
11
+ core_1.ContractMethodV6.swapExactAmountOutOnUniswapV3,
12
+ core_1.ContractMethodV6.swapExactAmountInOnBalancerV2,
13
+ core_1.ContractMethodV6.swapExactAmountOutOnBalancerV2,
14
+ core_1.ContractMethodV6.swapExactAmountInOnCurveV1,
15
+ core_1.ContractMethodV6.swapExactAmountInOnCurveV2,
16
+ core_1.ContractMethodV6.swapOnAugustusRFQTryBatchFill,
17
+ core_1.ContractMethodV6.swapExactAmountInOutOnMakerPSM,
18
+ ];
19
+ const DIRECT_CONTRACT_METHOD_SET_V6 = new Set(exports.DIRECT_CONTRACT_METHODS_V6);
20
+ // Omits swapOnAugustusRFQTryBatchFill and swapExactAmountInOutOnMakerPSM:
21
+ // those methods do not encode side in the method name. An undefined lookup
22
+ // means side must come from the per-call route input.
23
+ exports.DIRECT_CONTRACT_METHOD_SIDES_V6 = {
24
+ [core_1.ContractMethodV6.swapExactAmountInOnUniswapV2]: core_1.SwapSide.SELL,
25
+ [core_1.ContractMethodV6.swapExactAmountOutOnUniswapV2]: core_1.SwapSide.BUY,
26
+ [core_1.ContractMethodV6.swapExactAmountInOnUniswapV3]: core_1.SwapSide.SELL,
27
+ [core_1.ContractMethodV6.swapExactAmountOutOnUniswapV3]: core_1.SwapSide.BUY,
28
+ [core_1.ContractMethodV6.swapExactAmountInOnBalancerV2]: core_1.SwapSide.SELL,
29
+ [core_1.ContractMethodV6.swapExactAmountOutOnBalancerV2]: core_1.SwapSide.BUY,
30
+ [core_1.ContractMethodV6.swapExactAmountInOnCurveV1]: core_1.SwapSide.SELL,
31
+ [core_1.ContractMethodV6.swapExactAmountInOnCurveV2]: core_1.SwapSide.SELL,
32
+ };
33
+ function isDirectContractMethodV6(contractMethod) {
34
+ return DIRECT_CONTRACT_METHOD_SET_V6.has(contractMethod);
35
+ }
36
+ function getDirectContractMethodSideV6(contractMethod) {
37
+ return exports.DIRECT_CONTRACT_METHOD_SIDES_V6[contractMethod];
38
+ }
39
+ //# sourceMappingURL=direct-methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-methods.js","sourceRoot":"","sources":["../../../src/generic-swap-transaction-builder/dex-encoder/direct-methods.ts"],"names":[],"mappings":";;;AAsCA,4DAIC;AAED,sEAIC;AAhDD,yCAA4D;AAE/C,QAAA,0BAA0B,GAAG;IACxC,uBAAgB,CAAC,4BAA4B;IAC7C,uBAAgB,CAAC,6BAA6B;IAC9C,uBAAgB,CAAC,4BAA4B;IAC7C,uBAAgB,CAAC,6BAA6B;IAC9C,uBAAgB,CAAC,6BAA6B;IAC9C,uBAAgB,CAAC,8BAA8B;IAC/C,uBAAgB,CAAC,0BAA0B;IAC3C,uBAAgB,CAAC,0BAA0B;IAC3C,uBAAgB,CAAC,6BAA6B;IAC9C,uBAAgB,CAAC,8BAA8B;CACD,CAAC;AAKjD,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAC3C,kCAA0B,CAC3B,CAAC;AAEF,0EAA0E;AAC1E,2EAA2E;AAC3E,sDAAsD;AACzC,QAAA,+BAA+B,GAExC;IACF,CAAC,uBAAgB,CAAC,4BAA4B,CAAC,EAAE,eAAQ,CAAC,IAAI;IAC9D,CAAC,uBAAgB,CAAC,6BAA6B,CAAC,EAAE,eAAQ,CAAC,GAAG;IAC9D,CAAC,uBAAgB,CAAC,4BAA4B,CAAC,EAAE,eAAQ,CAAC,IAAI;IAC9D,CAAC,uBAAgB,CAAC,6BAA6B,CAAC,EAAE,eAAQ,CAAC,GAAG;IAC9D,CAAC,uBAAgB,CAAC,6BAA6B,CAAC,EAAE,eAAQ,CAAC,IAAI;IAC/D,CAAC,uBAAgB,CAAC,8BAA8B,CAAC,EAAE,eAAQ,CAAC,GAAG;IAC/D,CAAC,uBAAgB,CAAC,0BAA0B,CAAC,EAAE,eAAQ,CAAC,IAAI;IAC5D,CAAC,uBAAgB,CAAC,0BAA0B,CAAC,EAAE,eAAQ,CAAC,IAAI;CAC7D,CAAC;AAEF,SAAgB,wBAAwB,CACtC,cAAsB;IAEtB,OAAO,6BAA6B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,6BAA6B,CAC3C,cAAsC;IAEtC,OAAO,uCAA+B,CAAC,cAAc,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './direct-methods';
2
+ export * from './ports';
3
+ export * from './ts-adapter';
4
+ export * from './types';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./direct-methods"), exports);
18
+ __exportStar(require("./ports"), exports);
19
+ __exportStar(require("./ts-adapter"), exports);
20
+ __exportStar(require("./types"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generic-swap-transaction-builder/dex-encoder/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,0CAAwB;AACxB,+CAA6B;AAC7B,0CAAwB"}
@@ -0,0 +1,26 @@
1
+ import type { ExecutorEncodingContext } from '../../executor/encoding-types';
2
+ import type { DexExchangeParam, DexParamInput, DirectParamInput, DirectParamResult, NeedWrapNativeInput, WethDepositWithdrawInput, WethDepositWithdrawResult } from './types';
3
+ export type MaybePromise<T> = T | Promise<T>;
4
+ export type DexEncoderPort = {
5
+ needWrapNative(input: NeedWrapNativeInput): MaybePromise<boolean>;
6
+ getDexParam(input: DexParamInput): MaybePromise<DexExchangeParam>;
7
+ };
8
+ export type DirectDexEncoderPort = {
9
+ getDirectParam(input: DirectParamInput): MaybePromise<DirectParamResult>;
10
+ };
11
+ export type DexEncoderLookup = {
12
+ network: number;
13
+ dexKey: string;
14
+ };
15
+ export type DirectDexEncoderLookup = DexEncoderLookup & {
16
+ contractMethod: DirectParamInput['contractMethod'];
17
+ };
18
+ export type DexEncoderRegistryPort = {
19
+ getDexEncoder(lookup: DexEncoderLookup): MaybePromise<DexEncoderPort>;
20
+ getDirectDexEncoder(lookup: DirectDexEncoderLookup): MaybePromise<DirectDexEncoderPort>;
21
+ };
22
+ export type WethCallDataProviderPort = {
23
+ getDepositWithdrawCallData(input: WethDepositWithdrawInput): MaybePromise<WethDepositWithdrawResult | undefined>;
24
+ };
25
+ export type CreateWethCallDataProviderPort = (context: ExecutorEncodingContext) => WethCallDataProviderPort;
26
+ export type CreateWethCallDataProvider = CreateWethCallDataProviderPort;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/generic-swap-transaction-builder/dex-encoder/ports.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import type { DexAdapterService } from '../../dex';
2
+ import type { ExecutorEncodingContext } from '../../executor/encoding-types';
3
+ import { type DirectParamInput } from './types';
4
+ import type { DexEncoderPort, DexEncoderRegistryPort, DirectDexEncoderPort, WethCallDataProviderPort } from './ports';
5
+ type TsDexAdapterService = Pick<DexAdapterService, 'network' | 'getTxBuilderDexByKey'>;
6
+ export declare function createTsDexEncoderRegistry(dexAdapterService: TsDexAdapterService): DexEncoderRegistryPort;
7
+ export declare class TsDexEncoderRegistryAdapter implements DexEncoderRegistryPort {
8
+ private readonly dexAdapterService;
9
+ constructor(dexAdapterService: TsDexAdapterService);
10
+ getDexEncoder({ network, dexKey, }: {
11
+ network: number;
12
+ dexKey: string;
13
+ }): Promise<DexEncoderPort>;
14
+ getDirectDexEncoder({ network, dexKey, contractMethod, }: {
15
+ network: number;
16
+ dexKey: string;
17
+ contractMethod: DirectParamInput['contractMethod'];
18
+ }): Promise<DirectDexEncoderPort>;
19
+ private assertNetwork;
20
+ }
21
+ export declare function createWethCallDataProvider(context: ExecutorEncodingContext): WethCallDataProviderPort;
22
+ export {};
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TsDexEncoderRegistryAdapter = void 0;
7
+ exports.createTsDexEncoderRegistry = createTsDexEncoderRegistry;
8
+ exports.createWethCallDataProvider = createWethCallDataProvider;
9
+ const abi_1 = require("@ethersproject/abi");
10
+ const core_1 = require("@paraswap/core");
11
+ const erc20_json_1 = __importDefault(require("../../abi/erc20.json"));
12
+ const constants_1 = require("../../constants");
13
+ const types_1 = require("../../dex/weth/types");
14
+ const types_2 = require("./types");
15
+ const direct_methods_1 = require("./direct-methods");
16
+ const ERC20_INTERFACE = new abi_1.Interface(erc20_json_1.default);
17
+ const DEX_EXCHANGE_PARAM_FIELDS = new Set([
18
+ 'needWrapNative',
19
+ 'needUnwrapNative',
20
+ 'skipApproval',
21
+ 'wethAddress',
22
+ 'exchangeData',
23
+ 'targetExchange',
24
+ 'dexFuncHasRecipient',
25
+ 'specialDexFlag',
26
+ 'transferSrcTokenBeforeSwap',
27
+ 'spender',
28
+ 'sendEthButSupportsInsertFromAmount',
29
+ 'specialDexSupportsInsertFromAmount',
30
+ 'swappedAmountNotPresentInExchangeData',
31
+ 'returnAmountPos',
32
+ 'insertFromAmountPos',
33
+ 'amountsPacked128',
34
+ 'permit2Approval',
35
+ ]);
36
+ function createTsDexEncoderRegistry(dexAdapterService) {
37
+ return new TsDexEncoderRegistryAdapter(dexAdapterService);
38
+ }
39
+ class TsDexEncoderRegistryAdapter {
40
+ dexAdapterService;
41
+ constructor(dexAdapterService) {
42
+ this.dexAdapterService = dexAdapterService;
43
+ }
44
+ async getDexEncoder({ network, dexKey, }) {
45
+ this.assertNetwork(network);
46
+ return new TsDexEncoderAdapter(dexKey, this.dexAdapterService.getTxBuilderDexByKey(dexKey));
47
+ }
48
+ async getDirectDexEncoder({ network, dexKey, contractMethod, }) {
49
+ this.assertNetwork(network);
50
+ if (!(0, direct_methods_1.isDirectContractMethodV6)(contractMethod)) {
51
+ throw new Error(`Unsupported V6 direct method ${contractMethod}`);
52
+ }
53
+ const dex = this.dexAdapterService.getTxBuilderDexByKey(dexKey);
54
+ if (!dex)
55
+ throw new Error(`Failed to find dex : ${dexKey}`);
56
+ if (!dex.getDirectParamV6) {
57
+ throw new Error(`Invalid DEX: dex should have getDirectParamV6: ${dexKey}`);
58
+ }
59
+ const supportedMethods = getSupportedDirectMethods(dex);
60
+ if (!supportedMethods.some(method => method.toLowerCase() === contractMethod.toLowerCase())) {
61
+ throw new Error(`Invalid DEX: ${dexKey} does not support direct method ${contractMethod}`);
62
+ }
63
+ return new TsDirectDexEncoderAdapter(dexKey, contractMethod, dex);
64
+ }
65
+ assertNetwork(network) {
66
+ if (network !== this.dexAdapterService.network) {
67
+ throw new Error(`DEX encoder registry network mismatch: lookup ${network}, adapter ${this.dexAdapterService.network}`);
68
+ }
69
+ }
70
+ }
71
+ exports.TsDexEncoderRegistryAdapter = TsDexEncoderRegistryAdapter;
72
+ class TsDexEncoderAdapter {
73
+ dexKey;
74
+ dex;
75
+ constructor(dexKey, dex) {
76
+ this.dexKey = dexKey;
77
+ this.dex = dex;
78
+ }
79
+ async needWrapNative(input) {
80
+ return resolveNeedWrapNative(this.dex.needWrapNative, input, this.dexKey);
81
+ }
82
+ async getDexParam(input) {
83
+ if (!this.dex.getDexParam) {
84
+ throw new Error(`Invalid DEX: dex should have getDexParam: ${this.dexKey}`);
85
+ }
86
+ const result = await this.dex.getDexParam(input.srcToken, input.destToken, input.srcAmount, input.destAmount, input.recipient, input.data, input.side, input.executorAddress);
87
+ return normalizeDexExchangeParam(result, input, this.dexKey);
88
+ }
89
+ }
90
+ class TsDirectDexEncoderAdapter {
91
+ dexKey;
92
+ contractMethod;
93
+ dex;
94
+ constructor(dexKey, contractMethod, dex) {
95
+ this.dexKey = dexKey;
96
+ this.contractMethod = contractMethod;
97
+ this.dex = dex;
98
+ }
99
+ async getDirectParam(input) {
100
+ if (input.contractMethod !== this.contractMethod) {
101
+ throw new Error(`Direct DEX encoder method mismatch: lookup ${this.contractMethod}, input ${input.contractMethod}`);
102
+ }
103
+ if (!this.dex.getDirectParamV6) {
104
+ throw new Error(`Invalid DEX: dex should have getDirectParamV6: ${this.dexKey}`);
105
+ }
106
+ const result = (await this.dex.getDirectParamV6(input.srcToken, input.destToken, input.srcAmount, input.destAmount, input.quotedAmount, input.data, input.side, input.permit, input.uuid, input.partnerAndFee, input.beneficiary, input.blockNumber, input.contractMethod));
107
+ return {
108
+ params: cloneJsonValue(result.params, `${this.dexKey}.params`),
109
+ };
110
+ }
111
+ }
112
+ function createWethCallDataProvider(context) {
113
+ return {
114
+ getDepositWithdrawCallData(input) {
115
+ return buildWethDepositWithdrawCallData(context, input);
116
+ },
117
+ };
118
+ }
119
+ function buildWethDepositWithdrawCallData(context, { srcAmountWeth, destAmountWeth, side }) {
120
+ const result = {};
121
+ let needWithdraw = false;
122
+ if (srcAmountWeth !== '0') {
123
+ result.deposit = {
124
+ callee: context.wrappedNativeTokenAddress,
125
+ calldata: ERC20_INTERFACE.encodeFunctionData(types_1.WethFunctions.deposit),
126
+ value: srcAmountWeth,
127
+ };
128
+ if (side === core_1.SwapSide.BUY)
129
+ needWithdraw = true;
130
+ }
131
+ if (needWithdraw || destAmountWeth !== '0') {
132
+ result.withdraw = {
133
+ callee: constants_1.NULL_ADDRESS,
134
+ calldata: ERC20_INTERFACE.encodeFunctionData(types_1.WethFunctions.withdraw, [
135
+ destAmountWeth,
136
+ ]),
137
+ value: '0',
138
+ };
139
+ }
140
+ return result;
141
+ }
142
+ function normalizeDexExchangeParam(raw, input, dexKey) {
143
+ if (!isPlainObject(raw)) {
144
+ throw new Error(`Invalid DEX: getDexParam must return an object for ${dexKey}`);
145
+ }
146
+ Object.keys(raw).forEach(field => {
147
+ if (!DEX_EXCHANGE_PARAM_FIELDS.has(field)) {
148
+ throw new Error(`Invalid DEX: unsupported getDexParam field ${field} for ${dexKey}`);
149
+ }
150
+ });
151
+ const record = raw;
152
+ const output = {
153
+ needWrapNative: resolveNeedWrapNative(record.needWrapNative, input, dexKey),
154
+ exchangeData: requiredHex(record.exchangeData, dexKey, 'exchangeData'),
155
+ targetExchange: requiredAddress(record.targetExchange, dexKey, 'targetExchange'),
156
+ dexFuncHasRecipient: requiredBoolean(record.dexFuncHasRecipient, dexKey, 'dexFuncHasRecipient'),
157
+ };
158
+ assignOptionalBoolean(output, record, dexKey, 'needUnwrapNative');
159
+ assignOptionalBoolean(output, record, dexKey, 'skipApproval');
160
+ assignOptionalAddress(output, record, dexKey, 'wethAddress');
161
+ assignOptionalNumber(output, record, dexKey, 'specialDexFlag');
162
+ assignOptionalAddress(output, record, dexKey, 'transferSrcTokenBeforeSwap');
163
+ assignOptionalAddress(output, record, dexKey, 'spender');
164
+ assignOptionalBoolean(output, record, dexKey, 'sendEthButSupportsInsertFromAmount');
165
+ assignOptionalBoolean(output, record, dexKey, 'specialDexSupportsInsertFromAmount');
166
+ assignOptionalBoolean(output, record, dexKey, 'swappedAmountNotPresentInExchangeData');
167
+ assignOptionalNumber(output, record, dexKey, 'returnAmountPos');
168
+ assignOptionalNumber(output, record, dexKey, 'insertFromAmountPos');
169
+ assignOptionalBoolean(output, record, dexKey, 'amountsPacked128');
170
+ assignOptionalBoolean(output, record, dexKey, 'permit2Approval');
171
+ return output;
172
+ }
173
+ function resolveNeedWrapNative(needWrapNative, input, dexKey) {
174
+ const resolved = typeof needWrapNative === 'function'
175
+ ? needWrapNative(...buildLegacyNeedWrapArgs(input))
176
+ : needWrapNative;
177
+ if (typeof resolved !== 'boolean') {
178
+ throw new Error(`Invalid DEX: needWrapNative must resolve to boolean for ${dexKey}`);
179
+ }
180
+ return resolved;
181
+ }
182
+ function buildLegacyNeedWrapArgs(input) {
183
+ const swapExchange = {
184
+ exchange: input.swapExchange.exchange,
185
+ srcAmount: input.swapExchange.srcAmount,
186
+ destAmount: input.swapExchange.destAmount,
187
+ percent: input.swapExchange.percent,
188
+ data: input.swapExchange.data,
189
+ };
190
+ const swap = {
191
+ srcToken: input.swap.srcToken,
192
+ destToken: input.swap.destToken,
193
+ srcDecimals: 0,
194
+ destDecimals: 0,
195
+ srcAmount: input.swap.srcAmount,
196
+ destAmount: input.swap.destAmount,
197
+ swapExchanges: [swapExchange],
198
+ };
199
+ const priceRoute = {
200
+ network: input.route.network,
201
+ side: input.route.side,
202
+ srcToken: input.route.srcToken,
203
+ destToken: input.route.destToken,
204
+ srcAmount: input.route.srcAmount,
205
+ destAmount: input.route.destAmount,
206
+ blockNumber: input.route.blockNumber,
207
+ bestRoute: [{ percent: input.route.routePercent, swaps: [swap] }],
208
+ };
209
+ return [priceRoute, swap, swapExchange];
210
+ }
211
+ function getSupportedDirectMethods(dex) {
212
+ const instanceProvider = dex;
213
+ if (typeof instanceProvider.getDirectFunctionNameV6 === 'function') {
214
+ return instanceProvider.getDirectFunctionNameV6();
215
+ }
216
+ const constructorProvider = dex.constructor;
217
+ if (typeof constructorProvider.getDirectFunctionNameV6 === 'function') {
218
+ return constructorProvider.getDirectFunctionNameV6();
219
+ }
220
+ return [];
221
+ }
222
+ function assignOptionalBoolean(output, record, dexKey, field) {
223
+ if (record[field] == null)
224
+ return;
225
+ output[field] = requiredBoolean(record[field], dexKey, field);
226
+ }
227
+ function assignOptionalAddress(output, record, dexKey, field) {
228
+ if (record[field] == null)
229
+ return;
230
+ output[field] = requiredAddress(record[field], dexKey, field);
231
+ }
232
+ function assignOptionalNumber(output, record, dexKey, field) {
233
+ if (record[field] == null)
234
+ return;
235
+ const value = requiredNumber(record[field], dexKey, field);
236
+ if (field === 'specialDexFlag' &&
237
+ (value < types_2.SPECIAL_DEX_FLAG_RESERVED_RANGE.min ||
238
+ value > types_2.SPECIAL_DEX_FLAG_RESERVED_RANGE.max)) {
239
+ throw new Error(`Invalid DEX: ${dexKey}.${field} must be within reserved range ${types_2.SPECIAL_DEX_FLAG_RESERVED_RANGE.min}-${types_2.SPECIAL_DEX_FLAG_RESERVED_RANGE.max}`);
240
+ }
241
+ output[field] = value;
242
+ }
243
+ function requiredBoolean(value, dexKey, field) {
244
+ if (typeof value !== 'boolean') {
245
+ throw new Error(`Invalid DEX: ${dexKey}.${field} must be boolean`);
246
+ }
247
+ return value;
248
+ }
249
+ function requiredNumber(value, dexKey, field) {
250
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
251
+ throw new Error(`Invalid DEX: ${dexKey}.${field} must be a finite number`);
252
+ }
253
+ return value;
254
+ }
255
+ function requiredAddress(value, dexKey, field) {
256
+ if (typeof value !== 'string' || !/^0x[a-fA-F0-9]{40}$/.test(value)) {
257
+ throw new Error(`Invalid DEX: ${dexKey}.${field} must be a 42-character hex address`);
258
+ }
259
+ return value.toLowerCase();
260
+ }
261
+ function requiredHex(value, dexKey, field) {
262
+ if (typeof value !== 'string' || !/^0x(?:[a-fA-F0-9]{2})*$/.test(value)) {
263
+ throw new Error(`Invalid DEX: ${dexKey}.${field} must be 0x-prefixed even-length hex`);
264
+ }
265
+ return value.toLowerCase();
266
+ }
267
+ function cloneJsonValue(value, field) {
268
+ const cloned = cloneDirectParamJsonValue(value, field);
269
+ if (!Array.isArray(cloned)) {
270
+ throw new Error(`Invalid DEX: ${field} must be an array`);
271
+ }
272
+ return cloned;
273
+ }
274
+ function cloneDirectParamJsonValue(value, field) {
275
+ if (value === null)
276
+ return null;
277
+ if (typeof value === 'string' ||
278
+ typeof value === 'boolean' ||
279
+ typeof value === 'number') {
280
+ if (typeof value === 'number' && !Number.isFinite(value)) {
281
+ throw new Error(`Invalid DEX: ${field} must be JSON-serializable; non-finite numbers are not supported`);
282
+ }
283
+ return value;
284
+ }
285
+ if (Array.isArray(value)) {
286
+ return value.map((item, index) => cloneDirectParamJsonValue(item, `${field}[${index}]`));
287
+ }
288
+ if (isPlainObject(value)) {
289
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [
290
+ key,
291
+ cloneDirectParamJsonValue(item, `${field}.${key}`),
292
+ ]));
293
+ }
294
+ throw new Error(`Invalid DEX: ${field} must be JSON-serializable; received ${typeof value}`);
295
+ }
296
+ function isPlainObject(value) {
297
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
298
+ }
299
+ //# sourceMappingURL=ts-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-adapter.js","sourceRoot":"","sources":["../../../src/generic-swap-transaction-builder/dex-encoder/ts-adapter.ts"],"names":[],"mappings":"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"}