@paraswap/dex-lib 4.8.26 → 4.8.27

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 (268) hide show
  1. package/build/dex/balancer-v2/balancer-v2.d.ts +0 -1
  2. package/build/dex/balancer-v2/balancer-v2.js +0 -4
  3. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  4. package/build/dex/bebop/bebop.d.ts +0 -1
  5. package/build/dex/bebop/bebop.js +0 -8
  6. package/build/dex/bebop/bebop.js.map +1 -1
  7. package/build/dex/cables/cables.d.ts +0 -1
  8. package/build/dex/cables/cables.js +0 -3
  9. package/build/dex/cables/cables.js.map +1 -1
  10. package/build/dex/curve-v1/curve-v1.d.ts +0 -1
  11. package/build/dex/curve-v1/curve-v1.js +0 -4
  12. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  13. package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +0 -1
  14. package/build/dex/curve-v1-factory/curve-v1-factory.js +0 -4
  15. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  16. package/build/dex/curve-v2/curve-v2.d.ts +0 -1
  17. package/build/dex/curve-v2/curve-v2.js +0 -4
  18. package/build/dex/curve-v2/curve-v2.js.map +1 -1
  19. package/build/dex/hashflow/hashflow.d.ts +0 -1
  20. package/build/dex/hashflow/hashflow.js +0 -5
  21. package/build/dex/hashflow/hashflow.js.map +1 -1
  22. package/build/dex/idex.d.ts +0 -1
  23. package/build/dex/lite-psm/lite-psm.d.ts +0 -1
  24. package/build/dex/lite-psm/lite-psm.js +0 -3
  25. package/build/dex/lite-psm/lite-psm.js.map +1 -1
  26. package/build/dex/native/native.d.ts +0 -1
  27. package/build/dex/native/native.js +0 -6
  28. package/build/dex/native/native.js.map +1 -1
  29. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.d.ts +0 -1
  30. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +0 -5
  31. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
  32. package/build/dex/solidly-v3/solidly-v3.d.ts +0 -1
  33. package/build/dex/solidly-v3/solidly-v3.js +0 -4
  34. package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
  35. package/build/dex/uniswap-v3/uniswap-v3.d.ts +0 -1
  36. package/build/dex/uniswap-v3/uniswap-v3.js +0 -4
  37. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  38. package/build/dex/uniswap-v4/api-go/compare-pricing.d.ts +1 -0
  39. package/build/dex/uniswap-v4/api-go/compare-pricing.js +187 -0
  40. package/build/dex/uniswap-v4/api-go/compare-pricing.js.map +1 -0
  41. package/build/dex/uniswap-v4/api-go/compare-states.d.ts +1 -0
  42. package/build/dex/uniswap-v4/api-go/compare-states.js +149 -0
  43. package/build/dex/uniswap-v4/api-go/compare-states.js.map +1 -0
  44. package/build/dex/uniswap-v4/api-go/fetch-pool-key.d.ts +0 -0
  45. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js +140 -0
  46. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js.map +1 -0
  47. package/build/implementations/local-paraswap-sdk.js +9 -4
  48. package/build/implementations/local-paraswap-sdk.js.map +1 -1
  49. package/build/tenderly-simulation.d.ts +221 -0
  50. package/build/tenderly-simulation.js +517 -0
  51. package/build/tenderly-simulation.js.map +1 -0
  52. package/package.json +1 -1
  53. package/build/abi/BProtocol.json +0 -1155
  54. package/build/abi/Jarvis.json +0 -1172
  55. package/build/abi/MStableAsset.json +0 -1545
  56. package/build/abi/OneInchLp.json +0 -1304
  57. package/build/abi/Onebit.json +0 -736
  58. package/build/abi/Shell.json +0 -1294
  59. package/build/abi/TraderJoeV2Router.json +0 -50
  60. package/build/abi/idle-dao/idle-cdo-factory.json +0 -38
  61. package/build/abi/idle-dao/idle-cdo.json +0 -1245
  62. package/build/abi/infusion/InfusionFactory.json +0 -147
  63. package/build/abi/infusion/InfusionPair.json +0 -658
  64. package/build/abi/infusion/InfusionRouter.json +0 -442
  65. package/build/abi/maker-psm/pot.json +0 -322
  66. package/build/abi/maker-psm/psm.json +0 -243
  67. package/build/abi/maker-psm/vat.json +0 -363
  68. package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +0 -773
  69. package/build/abi/quick-perps/fast-price-events.json +0 -70
  70. package/build/abi/quick-perps/fast-price-feed.json +0 -741
  71. package/build/abi/quick-perps/reader.json +0 -313
  72. package/build/abi/quick-perps/vault-price-feed.json +0 -323
  73. package/build/abi/quick-perps/vault.json +0 -1953
  74. package/build/abi/uniswap-v2/excalibur-pool.json +0 -881
  75. package/build/abi/uniswap-v2/mdex-factory.json +0 -759
  76. package/build/abi/wUSDM.json +0 -757
  77. package/build/abi/zrx.v2.json +0 -1967
  78. package/build/abi/zrx.v3.json +0 -3454
  79. package/build/abi/zrx.v4.json +0 -2193
  80. package/build/dex/OneInchLp.d.ts +0 -24
  81. package/build/dex/OneInchLp.js +0 -43
  82. package/build/dex/OneInchLp.js.map +0 -1
  83. package/build/dex/bProtocol/bProtocol.d.ts +0 -15
  84. package/build/dex/bProtocol/bProtocol.js +0 -56
  85. package/build/dex/bProtocol/bProtocol.js.map +0 -1
  86. package/build/dex/bProtocol/types.d.ts +0 -11
  87. package/build/dex/bProtocol/types.js +0 -8
  88. package/build/dex/bProtocol/types.js.map +0 -1
  89. package/build/dex/ekubo/pools/base-pool.d.ts +0 -47
  90. package/build/dex/ekubo/pools/base-pool.js +0 -184
  91. package/build/dex/ekubo/pools/base-pool.js.map +0 -1
  92. package/build/dex/ekubo/pools/iface.d.ts +0 -46
  93. package/build/dex/ekubo/pools/iface.js +0 -75
  94. package/build/dex/ekubo/pools/iface.js.map +0 -1
  95. package/build/dex/ekubo/pools/math/price.d.ts +0 -7
  96. package/build/dex/ekubo/pools/math/price.js +0 -112
  97. package/build/dex/ekubo/pools/math/price.js.map +0 -1
  98. package/build/dex/ekubo/pools/oracle-pool.d.ts +0 -10
  99. package/build/dex/ekubo/pools/oracle-pool.js +0 -19
  100. package/build/dex/ekubo/pools/oracle-pool.js.map +0 -1
  101. package/build/dex/ekubo/pools/pool-utils.d.ts +0 -44
  102. package/build/dex/ekubo/pools/pool-utils.js +0 -240
  103. package/build/dex/ekubo/pools/pool-utils.js.map +0 -1
  104. package/build/dex/idle-dao/config.d.ts +0 -5
  105. package/build/dex/idle-dao/config.js +0 -24
  106. package/build/dex/idle-dao/config.js.map +0 -1
  107. package/build/dex/idle-dao/idle-dao.d.ts +0 -42
  108. package/build/dex/idle-dao/idle-dao.js +0 -279
  109. package/build/dex/idle-dao/idle-dao.js.map +0 -1
  110. package/build/dex/idle-dao/token_list.d.ts +0 -4
  111. package/build/dex/idle-dao/token_list.js +0 -289
  112. package/build/dex/idle-dao/token_list.js.map +0 -1
  113. package/build/dex/idle-dao/tokens.d.ts +0 -9
  114. package/build/dex/idle-dao/tokens.js +0 -68
  115. package/build/dex/idle-dao/tokens.js.map +0 -1
  116. package/build/dex/idle-dao/types.d.ts +0 -35
  117. package/build/dex/idle-dao/types.js +0 -11
  118. package/build/dex/idle-dao/types.js.map +0 -1
  119. package/build/dex/idle-dao/utils.d.ts +0 -8
  120. package/build/dex/idle-dao/utils.js +0 -149
  121. package/build/dex/idle-dao/utils.js.map +0 -1
  122. package/build/dex/infusion/config.d.ts +0 -3
  123. package/build/dex/infusion/config.js +0 -20
  124. package/build/dex/infusion/config.js.map +0 -1
  125. package/build/dex/infusion/infusion-stable-pool.d.ts +0 -4
  126. package/build/dex/infusion/infusion-stable-pool.js +0 -74
  127. package/build/dex/infusion/infusion-stable-pool.js.map +0 -1
  128. package/build/dex/infusion/infusion.d.ts +0 -51
  129. package/build/dex/infusion/infusion.js +0 -500
  130. package/build/dex/infusion/infusion.js.map +0 -1
  131. package/build/dex/infusion/types.d.ts +0 -45
  132. package/build/dex/infusion/types.js +0 -3
  133. package/build/dex/infusion/types.js.map +0 -1
  134. package/build/dex/infusion/utils/isStablePair.d.ts +0 -2
  135. package/build/dex/infusion/utils/isStablePair.js +0 -18
  136. package/build/dex/infusion/utils/isStablePair.js.map +0 -1
  137. package/build/dex/jarvis.d.ts +0 -56
  138. package/build/dex/jarvis.js +0 -163
  139. package/build/dex/jarvis.js.map +0 -1
  140. package/build/dex/mStable.d.ts +0 -44
  141. package/build/dex/mStable.js +0 -75
  142. package/build/dex/mStable.js.map +0 -1
  143. package/build/dex/maker-psm/config.d.ts +0 -11
  144. package/build/dex/maker-psm/config.js +0 -53
  145. package/build/dex/maker-psm/config.js.map +0 -1
  146. package/build/dex/maker-psm/maker-psm.d.ts +0 -103
  147. package/build/dex/maker-psm/maker-psm.js +0 -493
  148. package/build/dex/maker-psm/maker-psm.js.map +0 -1
  149. package/build/dex/maker-psm/types.d.ts +0 -39
  150. package/build/dex/maker-psm/types.js +0 -3
  151. package/build/dex/maker-psm/types.js.map +0 -1
  152. package/build/dex/onebit/onebit.d.ts +0 -16
  153. package/build/dex/onebit/onebit.js +0 -61
  154. package/build/dex/onebit/onebit.js.map +0 -1
  155. package/build/dex/onebit/types.d.ts +0 -14
  156. package/build/dex/onebit/types.js +0 -8
  157. package/build/dex/onebit/types.js.map +0 -1
  158. package/build/dex/quick-perps/config.d.ts +0 -11
  159. package/build/dex/quick-perps/config.js +0 -27
  160. package/build/dex/quick-perps/config.js.map +0 -1
  161. package/build/dex/quick-perps/fast-price-feed.d.ts +0 -26
  162. package/build/dex/quick-perps/fast-price-feed.js +0 -184
  163. package/build/dex/quick-perps/fast-price-feed.js.map +0 -1
  164. package/build/dex/quick-perps/pool.d.ts +0 -21
  165. package/build/dex/quick-perps/pool.js +0 -229
  166. package/build/dex/quick-perps/pool.js.map +0 -1
  167. package/build/dex/quick-perps/quick-perps.d.ts +0 -53
  168. package/build/dex/quick-perps/quick-perps.js +0 -247
  169. package/build/dex/quick-perps/quick-perps.js.map +0 -1
  170. package/build/dex/quick-perps/types.d.ts +0 -98
  171. package/build/dex/quick-perps/types.js +0 -3
  172. package/build/dex/quick-perps/types.js.map +0 -1
  173. package/build/dex/quick-perps/usdq.d.ts +0 -15
  174. package/build/dex/quick-perps/usdq.js +0 -62
  175. package/build/dex/quick-perps/usdq.js.map +0 -1
  176. package/build/dex/quick-perps/vault-price-feed.d.ts +0 -43
  177. package/build/dex/quick-perps/vault-price-feed.js +0 -203
  178. package/build/dex/quick-perps/vault-price-feed.js.map +0 -1
  179. package/build/dex/quick-perps/vault-utils.d.ts +0 -8
  180. package/build/dex/quick-perps/vault-utils.js +0 -42
  181. package/build/dex/quick-perps/vault-utils.js.map +0 -1
  182. package/build/dex/quick-perps/vault.d.ts +0 -46
  183. package/build/dex/quick-perps/vault.js +0 -182
  184. package/build/dex/quick-perps/vault.js.map +0 -1
  185. package/build/dex/se-vlr/config.d.ts +0 -3
  186. package/build/dex/se-vlr/config.js +0 -24
  187. package/build/dex/se-vlr/config.js.map +0 -1
  188. package/build/dex/se-vlr/se-vlr-pool.d.ts +0 -39
  189. package/build/dex/se-vlr/se-vlr-pool.js +0 -70
  190. package/build/dex/se-vlr/se-vlr-pool.js.map +0 -1
  191. package/build/dex/se-vlr/se-vlr.d.ts +0 -35
  192. package/build/dex/se-vlr/se-vlr.js +0 -131
  193. package/build/dex/se-vlr/se-vlr.js.map +0 -1
  194. package/build/dex/se-vlr/types.d.ts +0 -6
  195. package/build/dex/se-vlr/types.js +0 -3
  196. package/build/dex/se-vlr/types.js.map +0 -1
  197. package/build/dex/shell.d.ts +0 -25
  198. package/build/dex/shell.js +0 -41
  199. package/build/dex/shell.js.map +0 -1
  200. package/build/dex/solidly/forks-override/aerodrome.d.ts +0 -14
  201. package/build/dex/solidly/forks-override/aerodrome.js +0 -46
  202. package/build/dex/solidly/forks-override/aerodrome.js.map +0 -1
  203. package/build/dex/solidly/forks-override/chronos.d.ts +0 -23
  204. package/build/dex/solidly/forks-override/chronos.js +0 -141
  205. package/build/dex/solidly/forks-override/chronos.js.map +0 -1
  206. package/build/dex/solidly/forks-override/usdfi.d.ts +0 -8
  207. package/build/dex/solidly/forks-override/usdfi.js +0 -15
  208. package/build/dex/solidly/forks-override/usdfi.js.map +0 -1
  209. package/build/dex/solidly/forks-override/velocimeter.d.ts +0 -23
  210. package/build/dex/solidly/forks-override/velocimeter.js +0 -77
  211. package/build/dex/solidly/forks-override/velocimeter.js.map +0 -1
  212. package/build/dex/trader-joe-v2.d.ts +0 -40
  213. package/build/dex/trader-joe-v2.js +0 -74
  214. package/build/dex/trader-joe-v2.js.map +0 -1
  215. package/build/dex/uniswap-v2/dfyn.d.ts +0 -19
  216. package/build/dex/uniswap-v2/dfyn.js +0 -61
  217. package/build/dex/uniswap-v2/dfyn.js.map +0 -1
  218. package/build/dex/uniswap-v2/excalibur.d.ts +0 -24
  219. package/build/dex/uniswap-v2/excalibur.js +0 -47
  220. package/build/dex/uniswap-v2/excalibur.js.map +0 -1
  221. package/build/dex/uniswap-v2/mdex.d.ts +0 -24
  222. package/build/dex/uniswap-v2/mdex.js +0 -50
  223. package/build/dex/uniswap-v2/mdex.js.map +0 -1
  224. package/build/dex/uniswap-v2/nomiswap-v2.d.ts +0 -24
  225. package/build/dex/uniswap-v2/nomiswap-v2.js +0 -57
  226. package/build/dex/uniswap-v2/nomiswap-v2.js.map +0 -1
  227. package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +0 -94
  228. package/build/dex/uniswap-v3/uniswap-v3-new.js +0 -923
  229. package/build/dex/uniswap-v3/uniswap-v3-new.js.map +0 -1
  230. package/build/dex/uniswap-v4/contract-math/Position.d.ts +0 -3
  231. package/build/dex/uniswap-v4/contract-math/Position.js +0 -10
  232. package/build/dex/uniswap-v4/contract-math/Position.js.map +0 -1
  233. package/build/dex/usual-bond/config.d.ts +0 -3
  234. package/build/dex/usual-bond/config.js +0 -13
  235. package/build/dex/usual-bond/config.js.map +0 -1
  236. package/build/dex/usual-bond/types.d.ts +0 -7
  237. package/build/dex/usual-bond/types.js +0 -3
  238. package/build/dex/usual-bond/types.js.map +0 -1
  239. package/build/dex/usual-bond/usual-bond.d.ts +0 -35
  240. package/build/dex/usual-bond/usual-bond.js +0 -176
  241. package/build/dex/usual-bond/usual-bond.js.map +0 -1
  242. package/build/dex/wusdm/config.d.ts +0 -3
  243. package/build/dex/wusdm/config.js +0 -43
  244. package/build/dex/wusdm/config.js.map +0 -1
  245. package/build/dex/wusdm/constants.d.ts +0 -2
  246. package/build/dex/wusdm/constants.js +0 -6
  247. package/build/dex/wusdm/constants.js.map +0 -1
  248. package/build/dex/wusdm/types.d.ts +0 -18
  249. package/build/dex/wusdm/types.js +0 -11
  250. package/build/dex/wusdm/types.js.map +0 -1
  251. package/build/dex/wusdm/wusdm-pool.d.ts +0 -21
  252. package/build/dex/wusdm/wusdm-pool.js +0 -74
  253. package/build/dex/wusdm/wusdm-pool.js.map +0 -1
  254. package/build/dex/wusdm/wusdm.d.ts +0 -46
  255. package/build/dex/wusdm/wusdm.js +0 -243
  256. package/build/dex/wusdm/wusdm.js.map +0 -1
  257. package/build/dex/zerox/config.d.ts +0 -2
  258. package/build/dex/zerox/config.js +0 -33
  259. package/build/dex/zerox/config.js.map +0 -1
  260. package/build/dex/zerox/index.d.ts +0 -22
  261. package/build/dex/zerox/index.js +0 -225
  262. package/build/dex/zerox/index.js.map +0 -1
  263. package/build/dex/zerox/order.d.ts +0 -88
  264. package/build/dex/zerox/order.js +0 -53
  265. package/build/dex/zerox/order.js.map +0 -1
  266. package/build/dex/zerox/types.d.ts +0 -73
  267. package/build/dex/zerox/types.js +0 -21
  268. package/build/dex/zerox/types.js.map +0 -1
@@ -1,493 +0,0 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.MakerPsm = exports.MakerPsmEventPool = void 0;
40
- const abi_1 = require("@ethersproject/abi");
41
- const constants_1 = require("../../constants");
42
- const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
43
- const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
44
- const utils_1 = require("../../utils");
45
- const simple_exchange_1 = require("../simple-exchange");
46
- const config_1 = require("./config");
47
- const psm_json_1 = __importDefault(require("../../abi/maker-psm/psm.json"));
48
- const vat_json_1 = __importDefault(require("../../abi/maker-psm/vat.json"));
49
- const bigint_constants_1 = require("../../bigint-constants");
50
- const types_1 = require("../../executor/types");
51
- const bytes_1 = require("@ethersproject/bytes");
52
- const core_1 = require("@paraswap/core");
53
- const ethers_1 = require("ethers");
54
- const vatInterface = new abi_1.Interface(vat_json_1.default);
55
- const psmInterface = new abi_1.Interface(psm_json_1.default);
56
- const WAD = bigint_constants_1.BI_POWS[18];
57
- const bigIntify = (b) => BigInt(b.toString());
58
- const ceilDiv = (a, b) => (a + b - 1n) / b;
59
- async function getOnChainState(multiContract, poolConfigs, vatAddress, blockNumber) {
60
- const callData = poolConfigs
61
- .map(c => [
62
- {
63
- target: c.psmAddress,
64
- callData: psmInterface.encodeFunctionData('tin', []),
65
- },
66
- {
67
- target: c.psmAddress,
68
- callData: psmInterface.encodeFunctionData('tout', []),
69
- },
70
- {
71
- target: vatAddress,
72
- callData: vatInterface.encodeFunctionData('ilks', [c.identifier]),
73
- },
74
- ])
75
- .flat();
76
- const res = await multiContract.methods
77
- .aggregate(callData)
78
- .call({}, blockNumber);
79
- let i = 0;
80
- return poolConfigs.map(c => {
81
- const tin = bigIntify(psmInterface.decodeFunctionResult('tin', res.returnData[i++])[0]);
82
- const tout = bigIntify(psmInterface.decodeFunctionResult('tout', res.returnData[i++])[0]);
83
- const ilks = vatInterface.decodeFunctionResult('ilks', res.returnData[i++]);
84
- const Art = bigIntify(ilks.Art);
85
- const line = bigIntify(ilks.line);
86
- const rate = bigIntify(ilks.rate);
87
- return {
88
- tin,
89
- tout,
90
- Art,
91
- line,
92
- rate,
93
- };
94
- });
95
- }
96
- class MakerPsmEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
97
- network;
98
- dexHelper;
99
- poolConfig;
100
- vatAddress;
101
- handlers = {};
102
- logDecoder;
103
- to18ConversionFactor;
104
- bytes32Tout = '0x746f757400000000000000000000000000000000000000000000000000000000'; // bytes32('tout')
105
- bytes32Tin = '0x74696e0000000000000000000000000000000000000000000000000000000000'; // bytes32('tin')
106
- constructor(parentName, network, dexHelper, logger, poolConfig, vatAddress) {
107
- super(parentName, poolConfig.identifier, dexHelper, logger);
108
- this.network = network;
109
- this.dexHelper = dexHelper;
110
- this.poolConfig = poolConfig;
111
- this.vatAddress = vatAddress;
112
- this.logDecoder = (log) => psmInterface.parseLog(log);
113
- this.addressesSubscribed = [poolConfig.psmAddress];
114
- this.to18ConversionFactor = (0, utils_1.getBigIntPow)(18 - poolConfig.gem.decimals);
115
- // Add handlers
116
- this.handlers['File'] = this.handleFile.bind(this);
117
- this.handlers['SellGem'] = this.handleSellGem.bind(this);
118
- this.handlers['BuyGem'] = this.handleBuyGem.bind(this);
119
- }
120
- handleFile(event, pool, log) {
121
- if (event.args.what === this.bytes32Tin) {
122
- pool.tin = bigIntify(event.args.data);
123
- }
124
- else if (event.args.what === this.bytes32Tout) {
125
- pool.tout = bigIntify(event.args.data);
126
- }
127
- return pool;
128
- }
129
- handleSellGem(event, pool, log) {
130
- pool.Art += bigIntify(event.args.value) * this.to18ConversionFactor;
131
- return pool;
132
- }
133
- handleBuyGem(event, pool, log) {
134
- pool.Art -= bigIntify(event.args.value) * this.to18ConversionFactor;
135
- return pool;
136
- }
137
- getIdentifier() {
138
- return `${this.parentName}_${this.poolConfig.psmAddress}`.toLowerCase();
139
- }
140
- /**
141
- * The function is called every time any of the subscribed
142
- * addresses release log. The function accepts the current
143
- * state, updates the state according to the log, and returns
144
- * the updated state.
145
- * @param state - Current state of event subscriber
146
- * @param log - Log released by one of the subscribed addresses
147
- * @returns Updates state of the event subscriber after the log
148
- */
149
- processLog(state, log) {
150
- try {
151
- const event = this.logDecoder(log);
152
- if (event.name in this.handlers) {
153
- return this.handlers[event.name](event, state, log);
154
- }
155
- return state;
156
- }
157
- catch (e) {
158
- this.logger.error(`Error_${this.parentName}_processLog could not parse the log with topic ${log.topics}:`, e);
159
- return null;
160
- }
161
- }
162
- /**
163
- * The function generates state using on-chain calls. This
164
- * function is called to regenerate state if the event based
165
- * system fails to fetch events and the local state is no
166
- * more correct.
167
- * @param blockNumber - Blocknumber for which the state should
168
- * should be generated
169
- * @returns state of the event subscriber at blocknumber
170
- */
171
- async generateState(blockNumber) {
172
- return (await getOnChainState(this.dexHelper.multiContract, [this.poolConfig], this.vatAddress, blockNumber))[0];
173
- }
174
- }
175
- exports.MakerPsmEventPool = MakerPsmEventPool;
176
- class MakerPsm extends simple_exchange_1.SimpleExchange {
177
- network;
178
- dexHelper;
179
- adapters;
180
- dai;
181
- vatAddress;
182
- poolConfigs;
183
- eventPools;
184
- // warning: There is limit on swap
185
- hasConstantPriceLargeAmounts = true;
186
- isFeeOnTransferSupported = false;
187
- static dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.MakerPsmConfig);
188
- logger;
189
- constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network], dai = config_1.MakerPsmConfig[dexKey][network].dai, vatAddress = config_1.MakerPsmConfig[dexKey][network].vatAddress, poolConfigs = config_1.MakerPsmConfig[dexKey][network].pools) {
190
- super(dexHelper, dexKey);
191
- this.network = network;
192
- this.dexHelper = dexHelper;
193
- this.adapters = adapters;
194
- this.dai = dai;
195
- this.vatAddress = vatAddress;
196
- this.poolConfigs = poolConfigs;
197
- this.logger = dexHelper.getLogger(dexKey);
198
- this.eventPools = {};
199
- poolConfigs.forEach(p => (this.eventPools[p.gem.address.toLowerCase()] = new MakerPsmEventPool(dexKey, network, dexHelper, this.logger, p, this.vatAddress)));
200
- }
201
- static getDirectFunctionNameV6() {
202
- return [core_1.ContractMethodV6.swapExactAmountInOutOnMakerPSM];
203
- }
204
- async initializePricing(blockNumber) {
205
- const poolStates = await getOnChainState(this.dexHelper.multiContract, this.poolConfigs, this.vatAddress, blockNumber);
206
- await Promise.all(this.poolConfigs.map(async (p, i) => {
207
- const eventPool = this.eventPools[p.gem.address.toLowerCase()];
208
- await eventPool.initialize(blockNumber, {
209
- state: poolStates[i],
210
- });
211
- }));
212
- }
213
- // Returns the list of contract adapters (name and index)
214
- // for a buy/sell. Return null if there are no adapters.
215
- getAdapters(side) {
216
- return this.adapters[side];
217
- }
218
- getEventPool(srcToken, destToken) {
219
- const srcAddress = srcToken.address.toLowerCase();
220
- const destAddress = destToken.address.toLowerCase();
221
- return ((srcAddress === this.dai.address && this.eventPools[destAddress]) ||
222
- (destAddress === this.dai.address && this.eventPools[srcAddress]) ||
223
- null);
224
- }
225
- // Returns list of pool identifiers that can be used
226
- // for a given swap. poolIdentifiers must be unique
227
- // across DEXes.
228
- async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
229
- const eventPool = this.getEventPool(srcToken, destToken);
230
- if (!eventPool)
231
- return [];
232
- return [eventPool.getIdentifier()];
233
- }
234
- async getPoolState(pool, blockNumber) {
235
- const eventState = pool.getState(blockNumber);
236
- if (eventState)
237
- return eventState;
238
- const onChainState = await pool.generateState(blockNumber);
239
- pool.setState(onChainState, blockNumber);
240
- return onChainState;
241
- }
242
- computePrices(isSrcDai, to18ConversionFactor, side, amounts, poolState) {
243
- const sellGemCheck = (dart) => (dart + poolState.Art) * poolState.rate <= poolState.line;
244
- const buyGemCheck = (dart) => dart <= poolState.Art;
245
- return amounts.map(a => {
246
- if (side === constants_1.SwapSide.SELL) {
247
- if (isSrcDai) {
248
- const gemAmt18 = (a * WAD) / (WAD + poolState.tout);
249
- if (buyGemCheck(gemAmt18))
250
- return gemAmt18 / to18ConversionFactor;
251
- }
252
- else {
253
- const gemAmt18 = to18ConversionFactor * a;
254
- if (sellGemCheck(gemAmt18))
255
- return gemAmt18 - (gemAmt18 * poolState.tin) / WAD;
256
- }
257
- }
258
- else {
259
- if (isSrcDai) {
260
- const gemAmt18 = to18ConversionFactor * a;
261
- if (buyGemCheck(gemAmt18))
262
- return gemAmt18 + (gemAmt18 * poolState.tout) / WAD;
263
- }
264
- else {
265
- const gemAmt18 = (a * WAD) / (WAD - poolState.tin);
266
- if (sellGemCheck(gemAmt18))
267
- return gemAmt18 / to18ConversionFactor;
268
- }
269
- }
270
- return 0n;
271
- });
272
- }
273
- // Returns pool prices for amounts.
274
- // If limitPools is defined only pools in limitPools
275
- // should be used. If limitPools is undefined then
276
- // any pools can be used.
277
- async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
278
- const eventPool = this.getEventPool(srcToken, destToken);
279
- if (!eventPool)
280
- return null;
281
- const poolIdentifier = eventPool.getIdentifier();
282
- if (limitPools && !limitPools.includes(poolIdentifier))
283
- return null;
284
- const poolState = await this.getPoolState(eventPool, blockNumber);
285
- const unitVolume = (0, utils_1.getBigIntPow)((side === constants_1.SwapSide.SELL ? srcToken : destToken).decimals);
286
- const isSrcDai = srcToken.address.toLowerCase() === this.dai.address;
287
- const gem = isSrcDai ? destToken : srcToken;
288
- const toll = (side === constants_1.SwapSide.SELL && isSrcDai) ||
289
- (side === constants_1.SwapSide.BUY && !isSrcDai)
290
- ? poolState.tout
291
- : poolState.tin;
292
- const [unit, ...prices] = this.computePrices(isSrcDai, eventPool.to18ConversionFactor, side, [unitVolume, ...amounts], poolState);
293
- return [
294
- {
295
- prices,
296
- unit,
297
- data: {
298
- toll: toll.toString(),
299
- psmAddress: eventPool.poolConfig.psmAddress,
300
- gemJoinAddress: eventPool.poolConfig.gemJoinAddress,
301
- gemDecimals: gem.decimals,
302
- },
303
- poolAddresses: [eventPool.poolConfig.psmAddress],
304
- exchange: this.dexKey,
305
- gasCost: 200 * 1000,
306
- poolIdentifier,
307
- },
308
- ];
309
- }
310
- // Returns estimated gas cost of calldata for this DEX in multiSwap
311
- getCalldataGasCost(poolPrices) {
312
- return (CALLDATA_GAS_COST.DEX_OVERHEAD +
313
- CALLDATA_GAS_COST.LENGTH_SMALL +
314
- CALLDATA_GAS_COST.ADDRESS +
315
- // TODO: pools have toll as zero currently but may change
316
- CALLDATA_GAS_COST.ZERO +
317
- // Either 1 (18 decimals) or 1e12 = 0xe8d4a51000 (6 decimals)
318
- CALLDATA_GAS_COST.wordNonZeroBytes(poolPrices.data.gemDecimals === 6 ? 4 : 1));
319
- }
320
- getPsmParams(srcToken, srcAmount, destAmount, data, side) {
321
- const isSrcDai = srcToken.toLowerCase() === this.dai.address;
322
- const to18ConversionFactor = (0, utils_1.getBigIntPow)(18 - data.gemDecimals);
323
- if (side === constants_1.SwapSide.SELL) {
324
- if (isSrcDai) {
325
- const gemAmt18 = (BigInt(srcAmount) * WAD) / (WAD + BigInt(data.toll));
326
- return {
327
- isGemSell: false,
328
- gemAmount: (gemAmt18 / to18ConversionFactor).toString(),
329
- };
330
- }
331
- else {
332
- return { isGemSell: true, gemAmount: srcAmount };
333
- }
334
- }
335
- else {
336
- if (isSrcDai) {
337
- return { isGemSell: false, gemAmount: destAmount };
338
- }
339
- else {
340
- const gemAmt = ceilDiv(BigInt(destAmount) * WAD, (WAD - BigInt(data.toll)) * to18ConversionFactor);
341
- return {
342
- isGemSell: true,
343
- gemAmount: gemAmt.toString(),
344
- };
345
- }
346
- }
347
- }
348
- // Encode params required by the exchange adapter
349
- // Used for multiSwap, buy & megaSwap
350
- getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
351
- const to18ConversionFactor = (0, utils_1.getBigIntPow)(18 - data.gemDecimals);
352
- const payload = this.abiCoder.encodeParameter({
353
- ParentStruct: {
354
- gemJoinAddress: 'address',
355
- toll: 'uint256',
356
- to18ConversionFactor: 'uint256',
357
- },
358
- }, {
359
- gemJoinAddress: data.gemJoinAddress,
360
- toll: data.toll,
361
- to18ConversionFactor,
362
- });
363
- return {
364
- targetExchange: data.psmAddress,
365
- networkFee: '0',
366
- payload,
367
- };
368
- }
369
- // Encode call data used by simpleSwap like routers
370
- // Used for simpleSwap & simpleBuy
371
- async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
372
- const { isGemSell, gemAmount } = this.getPsmParams(srcToken, srcAmount, destAmount, data, side);
373
- const swapData = psmInterface.encodeFunctionData(isGemSell ? 'sellGem' : 'buyGem', [this.augustusAddress, gemAmount]);
374
- return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, data.psmAddress, isGemSell ? data.gemJoinAddress : data.psmAddress);
375
- }
376
- getTokenFromAddress(address) {
377
- return { address, decimals: 0 };
378
- }
379
- async preProcessTransaction(optimalSwapExchange, srcToken, destToken, side, options) {
380
- if (!optimalSwapExchange.data) {
381
- throw new Error(`Error_${this.dexKey}_preProcessTransaction payload is not received`);
382
- }
383
- let isApproved = false;
384
- // isApproved is only used in direct method and available only for v6, then no need to check approve for v5
385
- // because it's either done in getSimpleParam or approve call in the adapter smart contract
386
- if (options.version === core_1.ParaSwapVersion.V6 && options.isDirectMethod) {
387
- isApproved = await this.dexHelper.augustusApprovals.hasApproval(options.executionContractAddress, srcToken.address, srcToken.address.toLowerCase() === this.dai.address.toLowerCase()
388
- ? optimalSwapExchange.data.psmAddress
389
- : optimalSwapExchange.data.gemJoinAddress);
390
- }
391
- return [
392
- {
393
- ...optimalSwapExchange,
394
- data: { ...optimalSwapExchange.data, isApproved },
395
- },
396
- {},
397
- ];
398
- }
399
- getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
400
- const { isGemSell, gemAmount } = this.getPsmParams(srcToken, srcAmount, destAmount, data, side);
401
- let exchangeData = psmInterface.encodeFunctionData(isGemSell ? 'sellGem' : 'buyGem', [recipient, gemAmount]);
402
- // append toll and to18ConversionFactor & set specialDexFlag = SWAP_ON_MAKER_PSM to
403
- // - `buyGem` on Ex1 & Ex2
404
- // - `sellGem` on Ex3
405
- let specialDexFlag = types_1.SpecialDex.DEFAULT;
406
- if ((side === constants_1.SwapSide.SELL && !isGemSell) ||
407
- (side === constants_1.SwapSide.BUY && isGemSell)) {
408
- exchangeData = (0, bytes_1.hexConcat)([
409
- exchangeData,
410
- (0, bytes_1.hexZeroPad)((0, bytes_1.hexlify)(BigInt(data.toll)), 32),
411
- (0, bytes_1.hexZeroPad)((0, bytes_1.hexlify)((0, utils_1.getBigIntPow)(18 - data.gemDecimals)), 32),
412
- ]);
413
- specialDexFlag = types_1.SpecialDex.SWAP_ON_MAKER_PSM;
414
- }
415
- return {
416
- needWrapNative: this.needWrapNative,
417
- dexFuncHasRecipient: true,
418
- exchangeData,
419
- targetExchange: data.psmAddress,
420
- specialDexFlag,
421
- spender: isGemSell ? data.gemJoinAddress : data.psmAddress,
422
- returnAmountPos: undefined,
423
- };
424
- }
425
- getDirectParamV6(srcToken, destToken, fromAmount, toAmount, quotedAmount, data, side, permit, uuid, partnerAndFee, beneficiary, blockNumber, contractMethod) {
426
- if (!contractMethod)
427
- throw new Error(`contractMethod need to be passed`);
428
- if (!MakerPsm.getDirectFunctionNameV6().includes(contractMethod)) {
429
- throw new Error(`Invalid contract method ${contractMethod}`);
430
- }
431
- const beneficiaryParam = ethers_1.BigNumber.from(beneficiary);
432
- const approveParam = !data.isApproved
433
- ? ethers_1.BigNumber.from(1).shl(255)
434
- : ethers_1.BigNumber.from(0);
435
- const directionParam = side === constants_1.SwapSide.SELL ? ethers_1.BigNumber.from(0) : ethers_1.BigNumber.from(1).shl(254);
436
- const beneficiaryDirectionApproveFlag = beneficiaryParam
437
- .or(directionParam)
438
- .or(approveParam);
439
- const to18ConversionFactor = (0, utils_1.getBigIntPow)(18 - data.gemDecimals);
440
- const metadata = (0, bytes_1.hexConcat)([
441
- (0, bytes_1.hexZeroPad)((0, utils_1.uuidToBytes16)(uuid), 16),
442
- (0, bytes_1.hexZeroPad)((0, bytes_1.hexlify)(blockNumber), 16),
443
- ]);
444
- const params = [
445
- srcToken,
446
- // not used on the contract, but used for analytics
447
- destToken,
448
- fromAmount,
449
- toAmount,
450
- data.toll,
451
- to18ConversionFactor.toString(),
452
- data.psmAddress,
453
- data.gemJoinAddress,
454
- metadata,
455
- beneficiaryDirectionApproveFlag.toString(),
456
- ];
457
- const payload = [params, permit];
458
- const encoder = (...params) => {
459
- return this.augustusV6Interface.encodeFunctionData(core_1.ContractMethodV6.swapExactAmountInOutOnMakerPSM, [...params]);
460
- };
461
- return { params: payload, encoder, networkFee: '0' };
462
- }
463
- // Returns list of top pools based on liquidity. Max
464
- // limit number pools should be returned.
465
- async getTopPoolsForToken(tokenAddress, limit) {
466
- const _tokenAddress = tokenAddress.toLowerCase();
467
- // Liquidity depends on the swapping side hence we simply use the min
468
- // Its always in terms of stable coin hence liquidityUSD = liquidity
469
- const minLiq = (poolState) => {
470
- const buyLimit = poolState.Art;
471
- const sellLimit = (poolState.line - poolState.Art * poolState.rate) / poolState.rate;
472
- return (2 *
473
- parseInt(((buyLimit > sellLimit ? sellLimit : buyLimit) / bigint_constants_1.BI_POWS[18]).toString()));
474
- };
475
- const isDai = _tokenAddress === this.dai.address;
476
- const validPoolConfigs = isDai
477
- ? this.poolConfigs
478
- : this.eventPools[_tokenAddress]
479
- ? [this.eventPools[_tokenAddress].poolConfig]
480
- : [];
481
- if (!validPoolConfigs.length)
482
- return [];
483
- const poolStates = await getOnChainState(this.dexHelper.multiContract, validPoolConfigs, this.vatAddress, 'latest');
484
- return validPoolConfigs.map((p, i) => ({
485
- exchange: this.dexKey,
486
- address: p.psmAddress,
487
- liquidityUSD: minLiq(poolStates[i]),
488
- connectorTokens: [isDai ? p.gem : this.dai],
489
- }));
490
- }
491
- }
492
- exports.MakerPsm = MakerPsm;
493
- //# sourceMappingURL=maker-psm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"maker-psm.js","sourceRoot":"","sources":["../../../src/dex/maker-psm/maker-psm.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { Address, NumberAsString, Token } from '../../types';
2
- export type PoolState = {
3
- tin: bigint;
4
- tout: bigint;
5
- Art: bigint;
6
- rate: bigint;
7
- line: bigint;
8
- };
9
- export type MakerPsmData = {
10
- psmAddress: Address;
11
- gemJoinAddress: Address;
12
- gemDecimals: number;
13
- toll: string;
14
- isApproved?: boolean;
15
- };
16
- export type PoolConfig = {
17
- gem: Token;
18
- gemJoinAddress: Address;
19
- psmAddress: Address;
20
- identifier: string;
21
- };
22
- export type DexParams = {
23
- dai: Token;
24
- vatAddress: Address;
25
- pools: PoolConfig[];
26
- };
27
- export type MakerPsmParams = [
28
- srcToken: Address,
29
- destToken: Address,
30
- fromAmount: NumberAsString,
31
- toAmount: NumberAsString,
32
- toll: NumberAsString,
33
- to18ConversionFactor: NumberAsString,
34
- exchange: Address,
35
- gemJoinAddress: Address,
36
- metadata: string,
37
- beneficiaryDirectionApproveFlag: NumberAsString
38
- ];
39
- export type MakerPsmDirectPayload = [params: MakerPsmParams, permit: string];
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/maker-psm/types.ts"],"names":[],"mappings":""}
@@ -1,16 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { SwapSide } from '../../constants';
3
- import { AdapterExchangeParam, Address, DexExchangeParam, NumberAsString, SimpleExchangeParam } from '../../types';
4
- import { IDexTxBuilder } from '../idex';
5
- import { SimpleExchange } from '../simple-exchange';
6
- import { IDexHelper } from '../../dex-helper';
7
- import { OnebitData, OnebitParam } from './types';
8
- export declare class Onebit extends SimpleExchange implements IDexTxBuilder<OnebitData, OnebitParam> {
9
- static dexKeys: string[];
10
- exchangeRouterInterface: Interface;
11
- needWrapNative: boolean;
12
- constructor(dexHelper: IDexHelper);
13
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: OnebitData, side: SwapSide): AdapterExchangeParam;
14
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: OnebitData, side: SwapSide): Promise<SimpleExchangeParam>;
15
- getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: OnebitData, _side: SwapSide): DexExchangeParam;
16
- }
@@ -1,61 +0,0 @@
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.Onebit = void 0;
7
- const abi_1 = require("@ethersproject/abi");
8
- const constants_1 = require("../../constants");
9
- const simple_exchange_1 = require("../simple-exchange");
10
- const Onebit_json_1 = __importDefault(require("../../abi/Onebit.json"));
11
- const types_1 = require("./types");
12
- const utils_1 = require("../../executor/utils");
13
- class Onebit extends simple_exchange_1.SimpleExchange {
14
- constructor(dexHelper) {
15
- super(dexHelper, 'omm1');
16
- this.needWrapNative = true;
17
- this.exchangeRouterInterface = new abi_1.Interface(Onebit_json_1.default);
18
- }
19
- getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
20
- return {
21
- targetExchange: data.router,
22
- payload: '0x',
23
- networkFee: '0',
24
- };
25
- }
26
- async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
27
- const swapFunction = types_1.OnebitFunctions.swapTokensWithTrust;
28
- const swapFunctionParams = [
29
- srcToken,
30
- destToken,
31
- srcAmount,
32
- destAmount,
33
- this.augustusAddress,
34
- ];
35
- const swapData = this.exchangeRouterInterface.encodeFunctionData(swapFunction, swapFunctionParams);
36
- return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, data.router);
37
- }
38
- getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, _side) {
39
- const swapFunction = types_1.OnebitFunctions.swapTokensWithTrust;
40
- const swapFunctionParams = [
41
- srcToken,
42
- destToken,
43
- srcAmount,
44
- destAmount,
45
- recipient,
46
- ];
47
- const swapData = this.exchangeRouterInterface.encodeFunctionData(swapFunction, swapFunctionParams);
48
- return {
49
- needWrapNative: this.needWrapNative,
50
- dexFuncHasRecipient: true,
51
- exchangeData: swapData,
52
- targetExchange: data.router,
53
- returnAmountPos: _side === constants_1.SwapSide.SELL
54
- ? (0, utils_1.extractReturnAmountPosition)(this.exchangeRouterInterface, swapFunction)
55
- : undefined,
56
- };
57
- }
58
- }
59
- exports.Onebit = Onebit;
60
- Onebit.dexKeys = ['omm1'];
61
- //# sourceMappingURL=onebit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onebit.js","sourceRoot":"","sources":["../../../src/dex/onebit/onebit.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA6D;AAE7D,+CAA2C;AAS3C,wDAAoD;AACpD,wEAA8C;AAE9C,mCAAmE;AACnE,gDAAmE;AAEnE,MAAa,MACX,SAAQ,gCAAc;IAOtB,YAAY,SAAqB;QAC/B,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAH3B,mBAAc,GAAG,IAAI,CAAC;QAIpB,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAS,CAAC,qBAA2B,CAAC,CAAC;IAC5E,CAAC;IAED,eAAe,CACb,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAgB,EAChB,IAAc;QAEd,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,MAAM;YAC3B,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAgB,EAChB,IAAc;QAEd,MAAM,YAAY,GAAG,uBAAe,CAAC,mBAAmB,CAAC;QACzD,MAAM,kBAAkB,GAAgB;YACtC,QAAQ;YACR,SAAS;YACT,SAAS;YACT,UAAU;YACV,IAAI,CAAC,eAAe;SACrB,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAC9D,YAAY,EACZ,kBAAkB,CACnB,CAAC;QAEF,OAAO,IAAI,CAAC,qCAAqC,CAC/C,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED,WAAW,CACT,QAAiB,EACjB,SAAkB,EAClB,SAAyB,EACzB,UAA0B,EAC1B,SAAkB,EAClB,IAAgB,EAChB,KAAe;QAEf,MAAM,YAAY,GAAG,uBAAe,CAAC,mBAAmB,CAAC;QACzD,MAAM,kBAAkB,GAAgB;YACtC,QAAQ;YACR,SAAS;YACT,SAAS;YACT,UAAU;YACV,SAAS;SACV,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAC9D,YAAY,EACZ,kBAAkB,CACnB,CAAC;QAEF,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,mBAAmB,EAAE,IAAI;YACzB,YAAY,EAAE,QAAQ;YACtB,cAAc,EAAE,IAAI,CAAC,MAAM;YAC3B,eAAe,EACb,KAAK,KAAK,oBAAQ,CAAC,IAAI;gBACrB,CAAC,CAAC,IAAA,mCAA2B,EACzB,IAAI,CAAC,uBAAuB,EAC5B,YAAY,CACb;gBACH,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;;AA9FH,wBA+FC;AA3FQ,cAAO,GAAG,CAAC,MAAM,CAAC,CAAC"}