@paraswap/dex-lib 3.7.7-skip-approval.3 → 3.7.8-oswap

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 (222) hide show
  1. package/build/abi/inception/inception-ineth-pool.json +1062 -0
  2. package/build/abi/inception/inception-ineth.json +609 -0
  3. package/build/abi/inception/inception-vault.json +991 -0
  4. package/build/abi/oswap/oswap.abi.json +452 -0
  5. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  6. package/build/dex/aave-v1/aave-v1.js +22 -0
  7. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  8. package/build/dex/aave-v3/aave-v3.js +1 -2
  9. package/build/dex/aave-v3/aave-v3.js.map +1 -1
  10. package/build/dex/aave-v3-stata/aave-v3-stata.js +0 -1
  11. package/build/dex/aave-v3-stata/aave-v3-stata.js.map +1 -1
  12. package/build/dex/angle-staked-stable/angle-staked-stable.js +1 -4
  13. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -1
  14. package/build/dex/compound/compound.js +1 -2
  15. package/build/dex/compound/compound.js.map +1 -1
  16. package/build/dex/etherfi.js +1 -4
  17. package/build/dex/etherfi.js.map +1 -1
  18. package/build/dex/idle-dao/idle-dao-pool.d.ts +56 -0
  19. package/build/dex/idle-dao/idle-dao-pool.js +176 -0
  20. package/build/dex/idle-dao/idle-dao-pool.js.map +1 -0
  21. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +16 -0
  22. package/build/dex/idle-dao/idle-dao-pooling-pool.js +57 -0
  23. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +1 -0
  24. package/build/dex/idle-dao/idle-dao.js +0 -1
  25. package/build/dex/idle-dao/idle-dao.js.map +1 -1
  26. package/build/dex/idle-dao/scripts.d.ts +9 -0
  27. package/build/dex/idle-dao/scripts.js +552 -0
  28. package/build/dex/idle-dao/scripts.js.map +1 -0
  29. package/build/dex/inception/config.d.ts +5 -0
  30. package/build/dex/inception/config.js +100 -0
  31. package/build/dex/inception/config.js.map +1 -0
  32. package/build/dex/inception/inception-native.d.ts +43 -0
  33. package/build/dex/inception/inception-native.js +131 -0
  34. package/build/dex/inception/inception-native.js.map +1 -0
  35. package/build/dex/inception/inception-pool.d.ts +18 -0
  36. package/build/dex/inception/inception-pool.js +32 -0
  37. package/build/dex/inception/inception-pool.js.map +1 -0
  38. package/build/dex/inception/inception.d.ts +42 -0
  39. package/build/dex/inception/inception.js +128 -0
  40. package/build/dex/inception/inception.js.map +1 -0
  41. package/build/dex/inception/types.d.ts +11 -0
  42. package/build/dex/inception/types.js +3 -0
  43. package/build/dex/inception/types.js.map +1 -0
  44. package/build/dex/inception/utils.d.ts +4 -0
  45. package/build/dex/inception/utils.js +22 -0
  46. package/build/dex/inception/utils.js.map +1 -0
  47. package/build/dex/index.js +2 -0
  48. package/build/dex/index.js.map +1 -1
  49. package/build/dex/mStable.js +1 -1
  50. package/build/dex/mStable.js.map +1 -1
  51. package/build/dex/oswap/config.d.ts +5 -0
  52. package/build/dex/oswap/config.js +31 -0
  53. package/build/dex/oswap/config.js.map +1 -0
  54. package/build/dex/oswap/oswap-pool.d.ts +51 -0
  55. package/build/dex/oswap/oswap-pool.js +150 -0
  56. package/build/dex/oswap/oswap-pool.js.map +1 -0
  57. package/build/dex/oswap/oswap.d.ts +46 -0
  58. package/build/dex/oswap/oswap.js +263 -0
  59. package/build/dex/oswap/oswap.js.map +1 -0
  60. package/build/dex/oswap/types.d.ts +20 -0
  61. package/build/dex/oswap/types.js +3 -0
  62. package/build/dex/oswap/types.js.map +1 -0
  63. package/build/dex/platypus/platypus.d.ts +2 -1
  64. package/build/dex/platypus/platypus.js +31 -0
  65. package/build/dex/platypus/platypus.js.map +1 -1
  66. package/build/dex/simple-exchange.d.ts +1 -1
  67. package/build/dex/simple-exchange.js +2 -4
  68. package/build/dex/simple-exchange.js.map +1 -1
  69. package/build/dex/spark/spark.js +1 -1
  70. package/build/dex/spark/spark.js.map +1 -1
  71. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  72. package/build/dex/swaap-v1/swaap-v1.js +10 -0
  73. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  74. package/build/executor/Executor01BytecodeBuilder.js +0 -1
  75. package/build/executor/Executor01BytecodeBuilder.js.map +1 -1
  76. package/build/executor/Executor02BytecodeBuilder.js +0 -1
  77. package/build/executor/Executor02BytecodeBuilder.js.map +1 -1
  78. package/build/executor/Executor03BytecodeBuilder.js +0 -1
  79. package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
  80. package/build/generic-swap-transaction-builder.js +2 -2
  81. package/build/generic-swap-transaction-builder.js.map +1 -1
  82. package/build/types.d.ts +0 -1
  83. package/build/utils.d.ts +1 -1
  84. package/package.json +1 -1
  85. package/src/abi/oswap/oswap.abi.json +452 -0
  86. package/src/dex/aave-v3/aave-v3-e2e.test.ts +9 -4
  87. package/src/dex/aave-v3/aave-v3.ts +0 -5
  88. package/src/dex/aave-v3-stata/aave-v3-stata.ts +0 -1
  89. package/src/dex/angle-staked-stable/angle-staked-stable.ts +0 -8
  90. package/src/dex/compound/compound.ts +0 -5
  91. package/src/dex/etherfi.ts +0 -5
  92. package/src/dex/idle-dao/idle-dao.ts +0 -1
  93. package/src/dex/index.ts +2 -0
  94. package/src/dex/mStable.ts +0 -4
  95. package/src/dex/oswap/config.ts +32 -0
  96. package/src/dex/oswap/oswap-e2e.test.ts +91 -0
  97. package/src/dex/oswap/oswap-events.test.ts +88 -0
  98. package/src/dex/oswap/oswap-integration.test.ts +287 -0
  99. package/src/dex/oswap/oswap-pool.ts +190 -0
  100. package/src/dex/oswap/oswap.ts +359 -0
  101. package/src/dex/oswap/types.ts +29 -0
  102. package/src/dex/simple-exchange.ts +5 -5
  103. package/src/dex/spark/spark-e2e.test.ts +1 -9
  104. package/src/dex/spark/spark.ts +0 -4
  105. package/src/executor/Executor01BytecodeBuilder.ts +0 -1
  106. package/src/executor/Executor02BytecodeBuilder.ts +0 -1
  107. package/src/executor/Executor03BytecodeBuilder.ts +0 -1
  108. package/src/executor/executor01-bytecode-builder-e2e.test.ts +0 -25
  109. package/src/executor/executor02-bytecode-builder-e2e.test.ts +0 -29
  110. package/src/generic-swap-transaction-builder.ts +1 -2
  111. package/src/types.ts +0 -1
  112. package/tests/constants-e2e.ts +13 -13
  113. package/tests/utils-e2e.ts +1 -1
  114. package/build/abi/Uncompressor.json +0 -250
  115. package/build/dex/bProtocol.d.ts +0 -18
  116. package/build/dex/bProtocol.js +0 -39
  117. package/build/dex/bProtocol.js.map +0 -1
  118. package/build/dex/bancor.d.ts +0 -26
  119. package/build/dex/bancor.js +0 -58
  120. package/build/dex/bancor.js.map +0 -1
  121. package/build/dex/compound.d.ts +0 -18
  122. package/build/dex/compound.js +0 -46
  123. package/build/dex/compound.js.map +0 -1
  124. package/build/dex/curve-v2.d.ts +0 -58
  125. package/build/dex/curve-v2.js +0 -180
  126. package/build/dex/curve-v2.js.map +0 -1
  127. package/build/dex/dodo-v1.d.ts +0 -33
  128. package/build/dex/dodo-v1.js +0 -63
  129. package/build/dex/dodo-v1.js.map +0 -1
  130. package/build/dex/etherfi/etherfi.d.ts +0 -26
  131. package/build/dex/etherfi/etherfi.js +0 -96
  132. package/build/dex/etherfi/etherfi.js.map +0 -1
  133. package/build/dex/lido.d.ts +0 -19
  134. package/build/dex/lido.js +0 -42
  135. package/build/dex/lido.js.map +0 -1
  136. package/build/dex/onebit.d.ts +0 -25
  137. package/build/dex/onebit.js +0 -42
  138. package/build/dex/onebit.js.map +0 -1
  139. package/build/dex/sdai/config.d.ts +0 -11
  140. package/build/dex/sdai/config.js +0 -21
  141. package/build/dex/sdai/config.js.map +0 -1
  142. package/build/dex/sdai/constants.d.ts +0 -2
  143. package/build/dex/sdai/constants.js +0 -6
  144. package/build/dex/sdai/constants.js.map +0 -1
  145. package/build/dex/sdai/scripts/validate-state.d.ts +0 -1
  146. package/build/dex/sdai/scripts/validate-state.js +0 -102
  147. package/build/dex/sdai/scripts/validate-state.js.map +0 -1
  148. package/build/dex/sdai/sdai-pool.d.ts +0 -16
  149. package/build/dex/sdai/sdai-pool.js +0 -85
  150. package/build/dex/sdai/sdai-pool.js.map +0 -1
  151. package/build/dex/sdai/sdai.d.ts +0 -51
  152. package/build/dex/sdai/sdai.js +0 -172
  153. package/build/dex/sdai/sdai.js.map +0 -1
  154. package/build/dex/sdai/types.d.ts +0 -21
  155. package/build/dex/sdai/types.js +0 -11
  156. package/build/dex/sdai/types.js.map +0 -1
  157. package/build/dex/sdai/utils.d.ts +0 -4
  158. package/build/dex/sdai/utils.js +0 -39
  159. package/build/dex/sdai/utils.js.map +0 -1
  160. package/build/dex/smoothy.d.ts +0 -26
  161. package/build/dex/smoothy.js +0 -48
  162. package/build/dex/smoothy.js.map +0 -1
  163. package/build/dex/stable-pool.d.ts +0 -28
  164. package/build/dex/stable-pool.js +0 -62
  165. package/build/dex/stable-pool.js.map +0 -1
  166. package/build/dex/trader-joe-v2.1.d.ts +0 -43
  167. package/build/dex/trader-joe-v2.1.js +0 -79
  168. package/build/dex/trader-joe-v2.1.js.map +0 -1
  169. package/build/executor/compressor/Compressor.d.ts +0 -23
  170. package/build/executor/compressor/Compressor.js +0 -144
  171. package/build/executor/compressor/Compressor.js.map +0 -1
  172. package/build/executor/compressor/compress.d.ts +0 -17
  173. package/build/executor/compressor/compress.js +0 -187
  174. package/build/executor/compressor/compress.js.map +0 -1
  175. package/build/executor/compressor/compress_functions/addressSubstitution.d.ts +0 -6
  176. package/build/executor/compressor/compress_functions/addressSubstitution.js +0 -29
  177. package/build/executor/compressor/compress_functions/addressSubstitution.js.map +0 -1
  178. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.d.ts +0 -10
  179. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js +0 -40
  180. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js.map +0 -1
  181. package/build/executor/compressor/compress_functions/byteSubstitution.d.ts +0 -11
  182. package/build/executor/compressor/compress_functions/byteSubstitution.js +0 -64
  183. package/build/executor/compressor/compress_functions/byteSubstitution.js.map +0 -1
  184. package/build/executor/compressor/compress_functions/ffSubstitution.d.ts +0 -7
  185. package/build/executor/compressor/compress_functions/ffSubstitution.js +0 -54
  186. package/build/executor/compressor/compress_functions/ffSubstitution.js.map +0 -1
  187. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.d.ts +0 -8
  188. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js +0 -67
  189. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js.map +0 -1
  190. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.d.ts +0 -8
  191. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js +0 -61
  192. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js.map +0 -1
  193. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.d.ts +0 -6
  194. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js +0 -37
  195. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js.map +0 -1
  196. package/build/executor/compressor/compress_functions/searchUnusedBytes.d.ts +0 -9
  197. package/build/executor/compressor/compress_functions/searchUnusedBytes.js +0 -33
  198. package/build/executor/compressor/compress_functions/searchUnusedBytes.js.map +0 -1
  199. package/build/executor/compressor/fetchSaved.d.ts +0 -0
  200. package/build/executor/compressor/fetchSaved.js +0 -17
  201. package/build/executor/compressor/fetchSaved.js.map +0 -1
  202. package/build/executor/compressor/utils/computeCostL2.d.ts +0 -2
  203. package/build/executor/compressor/utils/computeCostL2.js +0 -14
  204. package/build/executor/compressor/utils/computeCostL2.js.map +0 -1
  205. package/build/executor/compressor/utils/findLongestDuplicatedString.d.ts +0 -2
  206. package/build/executor/compressor/utils/findLongestDuplicatedString.js +0 -30
  207. package/build/executor/compressor/utils/findLongestDuplicatedString.js.map +0 -1
  208. package/build/executor/compressor/utils/getAllIndexes.d.ts +0 -2
  209. package/build/executor/compressor/utils/getAllIndexes.js +0 -12
  210. package/build/executor/compressor/utils/getAllIndexes.js.map +0 -1
  211. package/build/executor/compressor/utils/getByteForAddress.d.ts +0 -2
  212. package/build/executor/compressor/utils/getByteForAddress.js +0 -14
  213. package/build/executor/compressor/utils/getByteForAddress.js.map +0 -1
  214. package/build/executor/compressor/utils/intTo2Bytes.d.ts +0 -2
  215. package/build/executor/compressor/utils/intTo2Bytes.js +0 -14
  216. package/build/executor/compressor/utils/intTo2Bytes.js.map +0 -1
  217. package/build/executor/compressor/utils/intTo3Bytes.d.ts +0 -2
  218. package/build/executor/compressor/utils/intTo3Bytes.js +0 -18
  219. package/build/executor/compressor/utils/intTo3Bytes.js.map +0 -1
  220. package/build/executor/compressor/utils/intToByte.d.ts +0 -2
  221. package/build/executor/compressor/utils/intToByte.js +0 -10
  222. package/build/executor/compressor/utils/intToByte.js.map +0 -1
@@ -23,35 +23,6 @@ describe('Executor02ByteCodeBuilder e2e tests', () => {
23
23
  describe('SimpleSwap', () => {
24
24
  const contractMethod = ContractMethod.simpleSwap;
25
25
 
26
- describe('stUSD -> USDA via Angle Staked Stable USD', () => {
27
- const dexKeys = ['AngleStakedStableUSD'];
28
-
29
- const tokenASymbol: string = 'stUSD';
30
- const tokenBSymbol: string = 'USDA';
31
- const tokenAAmount: string = '60000000000000000000';
32
-
33
- const side = SwapSide.SELL;
34
-
35
- it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
36
- await testE2E(
37
- tokens[tokenASymbol],
38
- tokens[tokenBSymbol],
39
- holders[tokenASymbol],
40
- tokenAAmount,
41
- side,
42
- dexKeys,
43
- contractMethod,
44
- network,
45
- provider,
46
- undefined,
47
- undefined,
48
- undefined,
49
- 200,
50
- 2000,
51
- );
52
- });
53
- });
54
-
55
26
  describe('ETH -> SUSHI via SushiSwapV3 and UniswapV3', () => {
56
27
  const dexKeys = ['SushiSwapV3', 'UniswapV3'];
57
28
 
@@ -674,7 +674,6 @@ export class GenericSwapTransactionBuilder {
674
674
  priceRoute: OptimalRate,
675
675
  dexExchangeParams: DexExchangeParam[],
676
676
  maybeWethCallData?: DepositWithdrawReturn,
677
- skipApproval?: boolean,
678
677
  ): Promise<DexExchangeBuildParam[]> {
679
678
  const spender = bytecodeBuilder.getAddress();
680
679
  const tokenTargetMapping: {
@@ -716,7 +715,7 @@ export class GenericSwapTransactionBuilder {
716
715
  ];
717
716
 
718
717
  approvals.forEach((alreadyApproved, index) => {
719
- if (!alreadyApproved && !skipApproval) {
718
+ if (!alreadyApproved) {
720
719
  const [token, target] = tokenTargetMapping[index].params;
721
720
  const exchangeParamIndex = tokenTargetMapping[index].exchangeParamIndex;
722
721
  const curExchangeParam = dexExchangeParams[exchangeParamIndex];
package/src/types.ts CHANGED
@@ -159,7 +159,6 @@ export type AdapterExchangeParam = {
159
159
 
160
160
  export type DexExchangeParam = {
161
161
  needWrapNative: boolean;
162
- skipApproval?: boolean;
163
162
  wethAddress?: string;
164
163
  exchangeData: string;
165
164
  targetExchange: string;
@@ -91,14 +91,6 @@ export const Tokens: {
91
91
  address: '0x8f8221aFbB33998d8584A2B05749bA73c37a938a',
92
92
  decimals: 18,
93
93
  },
94
- eETH: {
95
- address: '0x35fA164735182de50811E8e2E824cFb9B6118ac2',
96
- decimals: 18,
97
- },
98
- weETH: {
99
- address: '0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee',
100
- decimals: 18,
101
- },
102
94
  AMPL: {
103
95
  address: '0xd46ba6d942050d489dbd938a2c909a5d5039a161',
104
96
  decimals: 9,
@@ -491,6 +483,14 @@ export const Tokens: {
491
483
  address: '0x83f20f44975d03b1b09e64809b757c47f942beea',
492
484
  decimals: 18,
493
485
  },
486
+ eETH: {
487
+ address: '0x35fa164735182de50811e8e2e824cfb9b6118ac2',
488
+ decimals: 18,
489
+ },
490
+ weETH: {
491
+ address: '0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee',
492
+ decimals: 18,
493
+ },
494
494
  stataUSDT: {
495
495
  address: '0x862c57d48becb45583aeba3f489696d22466ca1b',
496
496
  decimals: 6,
@@ -1543,7 +1543,7 @@ export const Holders: {
1543
1543
  USDD: '0xf89d7b9c864f589bbf53a82105107622b35eaa40',
1544
1544
  alETH: '0x500a4f1280a0b63f47862d658b6c335cc939aaed',
1545
1545
  SHIBA: '0x73af3bcf944a6559933396c1577b257e2054d935',
1546
- aEthWETH: '0x931433324E6B0b5B04E3460ef3fb3f78dda3c721',
1546
+ aEthWETH: '0xfEA3F5b06D41Cb1526b9cAf8be63c5b37C475f23',
1547
1547
  dUSDC: '0x2FC2F705110A7F46Ce85F701d7217EF1018f01A3',
1548
1548
  PSP: '0xE5E5440a1CE69C5cf67BFFA74d185e57c31b43E5',
1549
1549
  EUROC: '0x64AE5802620398143FC7113037769175F74825Ea',
@@ -1741,8 +1741,8 @@ export const Holders: {
1741
1741
  EURA: '0x6dd7b830896b56812aa667bdd14b71c8b3252f8e',
1742
1742
  stEUR: '0xE588611e7A2392507879E3be80531654b85C16aA',
1743
1743
  USDA: '0xa86ff337db9107b54862d30d1a598f8be847b05e',
1744
- stUSD: '0xBa511aAd739358b2F34285f9E2d5344017b7DcaD',
1745
- stataUSDT: '0xc5042f9d9a18e95547864438455c8f05b4987399',
1744
+ stUSD: '0xa9ddd91249dfdd450e81e1c56ab60e1a62651701',
1745
+ stataUSDT: '0x403D37c861fb54b8F37a3A1870aBce335954840B',
1746
1746
  aaveUSDT: '0xAfa788fab589fe61C23DF76905558f4734444D67',
1747
1747
  crvUSD: '0x9755e99bdb99495d3d31d953785d993c6df8552e',
1748
1748
  },
@@ -1764,9 +1764,9 @@ export const Holders: {
1764
1764
  rETH: '0x4c2e69e58b14de9afedfb94319519ce34e087283',
1765
1765
  WBTC: '0xb9c8f0d3254007ee4b98970b94544e473cd610ec',
1766
1766
  frxETH: '0x4d4edf8291d169f975b99914b6ab3326abb45938',
1767
- EURA: '0x9A760aa1Fe631fD9aC0Aee0965736121c7c132cc',
1767
+ EURA: '0xC18dAC166eDa9538933258d21A272C1775C19c73',
1768
1768
  stEUR: '0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701',
1769
- USDA: '0x7dFf12833a6f0e88f610E79E11E9506848cCF187',
1769
+ USDA: '0xC18dAC166eDa9538933258d21A272C1775C19c73',
1770
1770
  stUSD: '0xC98b0729695A25152B8D5b6B95709070605A7F60',
1771
1771
  crvUSD: '0x528e7aF33043Da06ca3DD407626a71DbBD3173D6',
1772
1772
  LUSD: '0xf0a9abb11958a071e168f2ee5bcbacf1abbde9cf',
@@ -473,7 +473,7 @@ export async function testE2E(
473
473
  ? new APIParaswapSDK(network, dexKeys, '')
474
474
  : new LocalParaswapSDK(network, dexKeys, '', limitOrderProvider);
475
475
 
476
- await paraswap.initializePricing?.();
476
+ if (paraswap.initializePricing) await paraswap.initializePricing();
477
477
 
478
478
  if (sleepMs) {
479
479
  await sleep(sleepMs);
@@ -1,250 +0,0 @@
1
- [
2
- {
3
- "inputs": [
4
- {
5
- "internalType": "address[]",
6
- "name": "_savedAddresses",
7
- "type": "address[]"
8
- },
9
- {
10
- "internalType": "bytes4[]",
11
- "name": "_methodPrefixes",
12
- "type": "bytes4[]"
13
- },
14
- { "internalType": "address", "name": "_augustus", "type": "address" },
15
- { "internalType": "address", "name": "_owner", "type": "address" }
16
- ],
17
- "stateMutability": "nonpayable",
18
- "type": "constructor"
19
- },
20
- { "inputs": [], "name": "NotOwnerOrAugustus", "type": "error" },
21
- {
22
- "inputs": [
23
- { "internalType": "address", "name": "owner", "type": "address" }
24
- ],
25
- "name": "OwnableInvalidOwner",
26
- "type": "error"
27
- },
28
- {
29
- "inputs": [
30
- { "internalType": "address", "name": "account", "type": "address" }
31
- ],
32
- "name": "OwnableUnauthorizedAccount",
33
- "type": "error"
34
- },
35
- {
36
- "anonymous": false,
37
- "inputs": [
38
- {
39
- "indexed": true,
40
- "internalType": "address",
41
- "name": "addressToSave",
42
- "type": "address"
43
- },
44
- {
45
- "indexed": true,
46
- "internalType": "bytes3",
47
- "name": "byteToSave",
48
- "type": "bytes3"
49
- }
50
- ],
51
- "name": "AddressSaved",
52
- "type": "event"
53
- },
54
- {
55
- "anonymous": false,
56
- "inputs": [
57
- {
58
- "indexed": true,
59
- "internalType": "bytes4",
60
- "name": "methodPrefixToSave",
61
- "type": "bytes4"
62
- },
63
- {
64
- "indexed": true,
65
- "internalType": "uint256",
66
- "name": "indexSaved",
67
- "type": "uint256"
68
- }
69
- ],
70
- "name": "MethodPrefixSaved",
71
- "type": "event"
72
- },
73
- {
74
- "anonymous": false,
75
- "inputs": [
76
- {
77
- "indexed": true,
78
- "internalType": "address",
79
- "name": "previousOwner",
80
- "type": "address"
81
- },
82
- {
83
- "indexed": true,
84
- "internalType": "address",
85
- "name": "newOwner",
86
- "type": "address"
87
- }
88
- ],
89
- "name": "OwnershipTransferred",
90
- "type": "event"
91
- },
92
- {
93
- "inputs": [],
94
- "name": "MAX_UINT24",
95
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
96
- "stateMutability": "view",
97
- "type": "function"
98
- },
99
- {
100
- "inputs": [],
101
- "name": "MAX_UINT8",
102
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
103
- "stateMutability": "view",
104
- "type": "function"
105
- },
106
- {
107
- "inputs": [{ "internalType": "address", "name": "", "type": "address" }],
108
- "name": "addressToByte",
109
- "outputs": [{ "internalType": "bytes3", "name": "", "type": "bytes3" }],
110
- "stateMutability": "view",
111
- "type": "function"
112
- },
113
- {
114
- "inputs": [],
115
- "name": "augustus",
116
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
117
- "stateMutability": "view",
118
- "type": "function"
119
- },
120
- {
121
- "inputs": [
122
- { "internalType": "bytes3", "name": "inputByte", "type": "bytes3" }
123
- ],
124
- "name": "getAddressForByte",
125
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
126
- "stateMutability": "view",
127
- "type": "function"
128
- },
129
- {
130
- "inputs": [],
131
- "name": "getAllSavedAddresses",
132
- "outputs": [
133
- { "internalType": "address[]", "name": "", "type": "address[]" }
134
- ],
135
- "stateMutability": "view",
136
- "type": "function"
137
- },
138
- {
139
- "inputs": [],
140
- "name": "getAllSavedByteForMethodPrefixes",
141
- "outputs": [{ "internalType": "bytes4[]", "name": "", "type": "bytes4[]" }],
142
- "stateMutability": "view",
143
- "type": "function"
144
- },
145
- {
146
- "inputs": [
147
- { "internalType": "address", "name": "addressToGet", "type": "address" }
148
- ],
149
- "name": "getByteForAddress",
150
- "outputs": [{ "internalType": "bytes3", "name": "", "type": "bytes3" }],
151
- "stateMutability": "view",
152
- "type": "function"
153
- },
154
- {
155
- "inputs": [],
156
- "name": "owner",
157
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
158
- "stateMutability": "view",
159
- "type": "function"
160
- },
161
- {
162
- "inputs": [],
163
- "name": "renounceOwnership",
164
- "outputs": [],
165
- "stateMutability": "nonpayable",
166
- "type": "function"
167
- },
168
- {
169
- "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
170
- "name": "savedAddresses",
171
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
172
- "stateMutability": "view",
173
- "type": "function"
174
- },
175
- {
176
- "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
177
- "name": "savedMethodPrefixes",
178
- "outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
179
- "stateMutability": "view",
180
- "type": "function"
181
- },
182
- {
183
- "inputs": [
184
- { "internalType": "address", "name": "addressToSave", "type": "address" }
185
- ],
186
- "name": "setByteForAddress",
187
- "outputs": [],
188
- "stateMutability": "nonpayable",
189
- "type": "function"
190
- },
191
- {
192
- "inputs": [
193
- {
194
- "internalType": "address[]",
195
- "name": "addressesToSave",
196
- "type": "address[]"
197
- }
198
- ],
199
- "name": "setByteForAddresses",
200
- "outputs": [],
201
- "stateMutability": "nonpayable",
202
- "type": "function"
203
- },
204
- {
205
- "inputs": [
206
- {
207
- "internalType": "bytes4",
208
- "name": "methodPrefixToSave",
209
- "type": "bytes4"
210
- }
211
- ],
212
- "name": "setByteForMethodPrefix",
213
- "outputs": [],
214
- "stateMutability": "nonpayable",
215
- "type": "function"
216
- },
217
- {
218
- "inputs": [
219
- {
220
- "internalType": "bytes4[]",
221
- "name": "methodPrefixesToSave",
222
- "type": "bytes4[]"
223
- }
224
- ],
225
- "name": "setByteMethodPrefixes",
226
- "outputs": [],
227
- "stateMutability": "nonpayable",
228
- "type": "function"
229
- },
230
- {
231
- "inputs": [
232
- { "internalType": "address", "name": "newOwner", "type": "address" }
233
- ],
234
- "name": "transferOwnership",
235
- "outputs": [],
236
- "stateMutability": "nonpayable",
237
- "type": "function"
238
- },
239
- {
240
- "inputs": [
241
- { "internalType": "bytes", "name": "compressedData", "type": "bytes" }
242
- ],
243
- "name": "uncompress",
244
- "outputs": [
245
- { "internalType": "bytes", "name": "uncompressedData", "type": "bytes" }
246
- ],
247
- "stateMutability": "nonpayable",
248
- "type": "function"
249
- }
250
- ]
@@ -1,18 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { SwapSide } from '../constants';
3
- import { AdapterExchangeParam, SimpleExchangeParam } from '../types';
4
- import { IDexTxBuilder } from './idex';
5
- import { SimpleExchange } from './simple-exchange';
6
- import { IDexHelper } from '../dex-helper';
7
- export declare type BProtocolData = {
8
- exchange: string;
9
- };
10
- declare type BProtocolParam = [lusdAmount: string, minEthReturn: string, dest: string];
11
- export declare class BProtocol extends SimpleExchange implements IDexTxBuilder<BProtocolData, BProtocolParam> {
12
- static dexKeys: string[];
13
- exchangeRouterInterface: Interface;
14
- constructor(dexHelper: IDexHelper);
15
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: BProtocolData, side: SwapSide): AdapterExchangeParam;
16
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: BProtocolData, side: SwapSide): Promise<SimpleExchangeParam>;
17
- }
18
- export {};
@@ -1,39 +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.BProtocol = void 0;
7
- const abi_1 = require("@ethersproject/abi");
8
- const simple_exchange_1 = require("./simple-exchange");
9
- const BProtocol_json_1 = __importDefault(require("../abi/BProtocol.json"));
10
- var BProtocolFunctions;
11
- (function (BProtocolFunctions) {
12
- BProtocolFunctions["swap"] = "swap";
13
- })(BProtocolFunctions || (BProtocolFunctions = {}));
14
- class BProtocol extends simple_exchange_1.SimpleExchange {
15
- constructor(dexHelper) {
16
- super(dexHelper, 'bprotocol');
17
- this.exchangeRouterInterface = new abi_1.Interface(BProtocol_json_1.default);
18
- }
19
- getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
20
- return {
21
- targetExchange: data.exchange,
22
- payload: '0x',
23
- networkFee: '0',
24
- };
25
- }
26
- async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
27
- const swapFunction = BProtocolFunctions.swap;
28
- const swapFunctionParams = [
29
- srcAmount,
30
- destAmount,
31
- this.augustusAddress,
32
- ];
33
- const swapData = this.exchangeRouterInterface.encodeFunctionData(swapFunction, swapFunctionParams);
34
- return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, data.exchange);
35
- }
36
- }
37
- exports.BProtocol = BProtocol;
38
- BProtocol.dexKeys = ['bprotocol'];
39
- //# sourceMappingURL=bProtocol.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bProtocol.js","sourceRoot":"","sources":["../../src/dex/bProtocol.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA6D;AAI7D,uDAAmD;AACnD,2EAAiD;AAOjD,IAAK,kBAEJ;AAFD,WAAK,kBAAkB;IACrB,mCAAa,CAAA;AACf,CAAC,EAFI,kBAAkB,KAAlB,kBAAkB,QAEtB;AAED,MAAa,SACX,SAAQ,gCAAc;IAMtB,YAAY,SAAqB;QAC/B,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC9B,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAS,CAC1C,wBAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,eAAe,CACb,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAmB,EACnB,IAAc;QAEd,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,QAAQ;YAC7B,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAmB,EACnB,IAAc;QAEd,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC;QAC7C,MAAM,kBAAkB,GAAmB;YACzC,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,QAAQ,CACd,CAAC;IACJ,CAAC;;AAxDH,8BAyDC;AArDQ,iBAAO,GAAG,CAAC,WAAW,CAAC,CAAC"}
@@ -1,26 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { SwapSide } from '../constants';
3
- import { AdapterExchangeParam, Address, SimpleExchangeParam } from '../types';
4
- import { IDexTxBuilder } from './idex';
5
- import { SimpleExchange } from './simple-exchange';
6
- import { IDexHelper } from '../dex-helper';
7
- export declare type BancorData = {
8
- minDestToken: string;
9
- path: Address[];
10
- bancorNetwork?: string;
11
- };
12
- declare type BancorParam = [
13
- path: Address[],
14
- srcAmount: string,
15
- minDestToken: string,
16
- affiliateAccount: string,
17
- affiliateFee: string
18
- ];
19
- export declare class Bancor extends SimpleExchange implements IDexTxBuilder<BancorData, BancorParam> {
20
- static dexKeys: string[];
21
- exchangeRouterInterface: Interface;
22
- constructor(dexHelper: IDexHelper);
23
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: BancorData, side: SwapSide): AdapterExchangeParam;
24
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: BancorData, side: SwapSide): Promise<SimpleExchangeParam>;
25
- }
26
- export {};
@@ -1,58 +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.Bancor = 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 Bancor_json_1 = __importDefault(require("../abi/Bancor.json"));
11
- const BANCOR_NETWORK = {
12
- 1: '0x2F9EC37d6CcFFf1caB21733BdaDEdE11c823cCB0',
13
- };
14
- const BancorRegistry = {
15
- 1: '0x52ae12abe5d8bd778bd5397f99ca900624cfadd4',
16
- };
17
- var BancorFunctions;
18
- (function (BancorFunctions) {
19
- BancorFunctions["convert2"] = "convert2";
20
- })(BancorFunctions || (BancorFunctions = {}));
21
- class Bancor extends simple_exchange_1.SimpleExchange {
22
- constructor(dexHelper) {
23
- super(dexHelper, 'bancor');
24
- this.exchangeRouterInterface = new abi_1.Interface(Bancor_json_1.default);
25
- }
26
- getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
27
- if (side === constants_1.SwapSide.BUY)
28
- throw new Error(`Buy not supported`);
29
- const { path } = data;
30
- const payload = this.abiCoder.encodeParameter({
31
- ParentStruct: {
32
- path: 'address[]',
33
- },
34
- }, { path });
35
- return {
36
- targetExchange: BancorRegistry[this.network],
37
- payload,
38
- networkFee: '0',
39
- };
40
- }
41
- async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
42
- if (side === constants_1.SwapSide.BUY)
43
- throw new Error(`Buy not supported`);
44
- const defaultArgs = [
45
- data.path,
46
- srcAmount,
47
- data.minDestToken || '1',
48
- constants_1.NULL_ADDRESS,
49
- '0',
50
- ];
51
- const swapMethod = BancorFunctions.convert2;
52
- const swapData = this.exchangeRouterInterface.encodeFunctionData(swapMethod, defaultArgs);
53
- return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, data.bancorNetwork || BANCOR_NETWORK[this.network]);
54
- }
55
- }
56
- exports.Bancor = Bancor;
57
- Bancor.dexKeys = ['bancor'];
58
- //# sourceMappingURL=bancor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bancor.js","sourceRoot":"","sources":["../../src/dex/bancor.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA6D;AAC7D,4CAAsD;AAGtD,uDAAmD;AACnD,qEAA2C;AAI3C,MAAM,cAAc,GAAkC;IACpD,CAAC,EAAE,4CAA4C;CAChD,CAAC;AAEF,MAAM,cAAc,GAAkC;IACpD,CAAC,EAAE,4CAA4C;CAChD,CAAC;AAgBF,IAAK,eAEJ;AAFD,WAAK,eAAe;IAClB,wCAAqB,CAAA;AACvB,CAAC,EAFI,eAAe,KAAf,eAAe,QAEnB;AAED,MAAa,MACX,SAAQ,gCAAc;IAMtB,YAAY,SAAqB;QAC/B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3B,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,IAAI,IAAI,KAAK,oBAAQ,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEhE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC3C;YACE,YAAY,EAAE;gBACZ,IAAI,EAAE,WAAW;aAClB;SACF,EACD,EAAE,IAAI,EAAE,CACT,CAAC;QAEF,OAAO;YACL,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;YAC5C,OAAO;YACP,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAgB,EAChB,IAAc;QAEd,IAAI,IAAI,KAAK,oBAAQ,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG;YAClB,IAAI,CAAC,IAAI;YACT,SAAS;YACT,IAAI,CAAC,YAAY,IAAI,GAAG;YACxB,wBAAY;YACZ,GAAG;SACJ,CAAC;QACF,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAC9D,UAAU,EACV,WAAW,CACZ,CAAC;QAEF,OAAO,IAAI,CAAC,qCAAqC,CAC/C,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CACnD,CAAC;IACJ,CAAC;;AAtEH,wBAuEC;AAnEQ,cAAO,GAAG,CAAC,QAAQ,CAAC,CAAC"}
@@ -1,18 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { SwapSide } from '../constants';
3
- import { AdapterExchangeParam, SimpleExchangeParam } from '../types';
4
- import { IDexTxBuilder } from './idex';
5
- import { SimpleExchange } from './simple-exchange';
6
- import { IDexHelper } from '../dex-helper';
7
- export declare type CompoundData = {
8
- fromCToken: boolean;
9
- };
10
- declare type CompoundParam = [srcAmount: string];
11
- export declare class Compound extends SimpleExchange implements IDexTxBuilder<CompoundData, CompoundParam> {
12
- static dexKeys: string[];
13
- cethInterface: Interface;
14
- constructor(dexHelper: IDexHelper);
15
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: CompoundData, side: SwapSide): AdapterExchangeParam;
16
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: CompoundData, side: SwapSide): Promise<SimpleExchangeParam>;
17
- }
18
- export {};
@@ -1,46 +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.Compound = 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 Compound_CETH_json_1 = __importDefault(require("../abi/Compound_CETH.json")); // CETH abi
11
- const utils_1 = require("../utils");
12
- var CompoundFunctions;
13
- (function (CompoundFunctions) {
14
- CompoundFunctions["redeem"] = "redeem";
15
- CompoundFunctions["mint"] = "mint";
16
- })(CompoundFunctions || (CompoundFunctions = {}));
17
- class Compound extends simple_exchange_1.SimpleExchange {
18
- constructor(dexHelper) {
19
- super(dexHelper, 'compound');
20
- this.cethInterface = new abi_1.Interface(Compound_CETH_json_1.default);
21
- }
22
- getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
23
- const cToken = data.fromCToken ? srcToken : destToken; // Warning
24
- const payload = this.abiCoder.encodeParameter({
25
- ParentStruct: {
26
- cToken: 'address',
27
- },
28
- }, { cToken });
29
- return {
30
- // target exchange is not used by the contract
31
- targetExchange: constants_1.NULL_ADDRESS,
32
- payload,
33
- networkFee: '0',
34
- };
35
- }
36
- async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
37
- const cToken = data.fromCToken ? srcToken : destToken;
38
- const swapData = (0, utils_1.isETHAddress)(srcToken)
39
- ? this.cethInterface.encodeFunctionData(CompoundFunctions.mint)
40
- : this.erc20Interface.encodeFunctionData(data.fromCToken ? CompoundFunctions.redeem : CompoundFunctions.mint, [srcAmount]);
41
- return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, cToken, undefined, undefined, undefined, data.fromCToken);
42
- }
43
- }
44
- exports.Compound = Compound;
45
- Compound.dexKeys = ['compound'];
46
- //# sourceMappingURL=compound.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compound.js","sourceRoot":"","sources":["../../src/dex/compound.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA6D;AAC7D,4CAAsD;AAGtD,uDAAmD;AACnD,mFAA6C,CAAC,WAAW;AACzD,oCAAwC;AAQxC,IAAK,iBAGJ;AAHD,WAAK,iBAAiB;IACpB,sCAAiB,CAAA;IACjB,kCAAa,CAAA;AACf,CAAC,EAHI,iBAAiB,KAAjB,iBAAiB,QAGrB;AAED,MAAa,QACX,SAAQ,gCAAc;IAMtB,YAAY,SAAqB;QAC/B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,eAAS,CAAC,4BAAsB,CAAC,CAAC;IAC7D,CAAC;IAED,eAAe,CACb,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAkB,EAClB,IAAc;QAEd,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;QAEjE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC3C;YACE,YAAY,EAAE;gBACZ,MAAM,EAAE,SAAS;aAClB;SACF,EACD,EAAE,MAAM,EAAE,CACX,CAAC;QAEF,OAAO;YACL,8CAA8C;YAC9C,cAAc,EAAE,wBAAY;YAC5B,OAAO;YACP,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAkB,EAClB,IAAc;QAEd,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC/D,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CACpC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EACnE,CAAC,SAAS,CAAC,CACZ,CAAC;QAEN,OAAO,IAAI,CAAC,qCAAqC,CAC/C,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;;AAnEH,4BAoEC;AAhEQ,gBAAO,GAAG,CAAC,UAAU,CAAC,CAAC"}