@paraswap/dex-lib 3.5.6-maverick-v2-7 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  5. package/build/abi/wombat/pool.json +1289 -0
  6. package/build/constants.d.ts +2 -0
  7. package/build/constants.js +3 -1
  8. package/build/constants.js.map +1 -1
  9. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  10. package/build/dex/aave-v1/aave-v1.js +23 -0
  11. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  12. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  13. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  14. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  15. package/build/dex/compound.js +1 -1
  16. package/build/dex/compound.js.map +1 -1
  17. package/build/dex/index.js +0 -2
  18. package/build/dex/index.js.map +1 -1
  19. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  20. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  21. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  22. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  23. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  24. package/build/dex/maverick-v2/config.d.ts +2 -1
  25. package/build/dex/maverick-v2/config.js +6 -2
  26. package/build/dex/maverick-v2/config.js.map +1 -1
  27. package/build/dex/maverick-v2/maverick-v2.d.ts +3 -2
  28. package/build/dex/maverick-v2/maverick-v2.js +17 -6
  29. package/build/dex/maverick-v2/maverick-v2.js.map +1 -1
  30. package/build/dex/platypus/platypus.d.ts +2 -1
  31. package/build/dex/platypus/platypus.js +45 -0
  32. package/build/dex/platypus/platypus.js.map +1 -1
  33. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  34. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  35. package/build/dex/stable-pool.js +1 -8
  36. package/build/dex/stable-pool.js.map +1 -1
  37. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  38. package/build/dex/swaap-v1/swaap-v1.js +14 -0
  39. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  40. package/build/dex/uniswap-v2/uniswap-v2.d.ts +2 -2
  41. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  42. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  43. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  44. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  45. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  46. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  47. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  48. package/build/dex/uniswap-v3/uniswap-v3.d.ts +2 -2
  49. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  50. package/build/dex/zerox/index.d.ts +1 -1
  51. package/build/dex/zerox/index.js.map +1 -1
  52. package/build/executor/Executor03BytecodeBuilder.js +1 -12
  53. package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
  54. package/build/generic-swap-transaction-builder.d.ts +5 -3
  55. package/build/generic-swap-transaction-builder.js +22 -7
  56. package/build/generic-swap-transaction-builder.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/constants.ts +2 -0
  59. package/src/dex/index.ts +0 -2
  60. package/src/dex/maker-psm/scripts/gem.abi.json +136 -0
  61. package/src/dex/maker-psm/scripts/validate-state.ts +221 -0
  62. package/src/dex/maker-psm/scripts/vat.abi.json +243 -0
  63. package/src/dex/uniswap-v2/uniswap-v2.ts +2 -2
  64. package/src/dex/uniswap-v3/uniswap-v3.ts +2 -2
  65. package/src/dex/zerox/index.ts +1 -1
  66. package/src/executor/Executor03BytecodeBuilder.ts +1 -15
  67. package/src/generic-swap-transaction-builder.ts +40 -0
  68. package/tests/constants-e2e.ts +2 -2
  69. package/build/dex/etherfi/etherfi.d.ts +0 -26
  70. package/build/dex/etherfi/etherfi.js +0 -96
  71. package/build/dex/etherfi/etherfi.js.map +0 -1
  72. package/build/dex/sdai/config.d.ts +0 -11
  73. package/build/dex/sdai/config.js +0 -21
  74. package/build/dex/sdai/config.js.map +0 -1
  75. package/build/dex/sdai/constants.d.ts +0 -2
  76. package/build/dex/sdai/constants.js +0 -6
  77. package/build/dex/sdai/constants.js.map +0 -1
  78. package/build/dex/sdai/scripts/validate-state.js +0 -102
  79. package/build/dex/sdai/scripts/validate-state.js.map +0 -1
  80. package/build/dex/sdai/sdai-pool.d.ts +0 -16
  81. package/build/dex/sdai/sdai-pool.js +0 -85
  82. package/build/dex/sdai/sdai-pool.js.map +0 -1
  83. package/build/dex/sdai/sdai.d.ts +0 -51
  84. package/build/dex/sdai/sdai.js +0 -172
  85. package/build/dex/sdai/sdai.js.map +0 -1
  86. package/build/dex/sdai/types.d.ts +0 -21
  87. package/build/dex/sdai/types.js +0 -11
  88. package/build/dex/sdai/types.js.map +0 -1
  89. package/build/dex/sdai/utils.d.ts +0 -4
  90. package/build/dex/sdai/utils.js +0 -39
  91. package/build/dex/sdai/utils.js.map +0 -1
  92. package/src/abi/maverick-v2/MaverickV2Pool.json +0 -1234
  93. package/src/abi/maverick-v2/MaverickV2PoolLens.json +0 -1232
  94. package/src/abi/maverick-v2/MaverickV2Quoter.json +0 -278
  95. package/src/dex/maverick-v2/config.ts +0 -17
  96. package/src/dex/maverick-v2/maverick-math/maverick-basic-math.ts +0 -152
  97. package/src/dex/maverick-v2/maverick-math/maverick-bin-math.ts +0 -288
  98. package/src/dex/maverick-v2/maverick-math/maverick-delta-math.ts +0 -32
  99. package/src/dex/maverick-v2/maverick-math/maverick-math.ts +0 -30
  100. package/src/dex/maverick-v2/maverick-math/maverick-pool-lib.ts +0 -42
  101. package/src/dex/maverick-v2/maverick-math/maverick-pool-math.ts +0 -709
  102. package/src/dex/maverick-v2/maverick-math/maverick-swap-math.ts +0 -199
  103. package/src/dex/maverick-v2/maverick-math/maverick-tick-math.ts +0 -171
  104. package/src/dex/maverick-v2/maverick-math/maverick-twa-math.ts +0 -54
  105. package/src/dex/maverick-v2/maverick-v2-e2e.test.ts +0 -176
  106. package/src/dex/maverick-v2/maverick-v2-events.test.ts +0 -112
  107. package/src/dex/maverick-v2/maverick-v2-integration.test.ts +0 -269
  108. package/src/dex/maverick-v2/maverick-v2-pool.ts +0 -276
  109. package/src/dex/maverick-v2/maverick-v2.ts +0 -424
  110. package/src/dex/maverick-v2/types.ts +0 -152
  111. /package/build/dex/{sdai/scripts/validate-state.d.ts → solidly-v3/scripts/check-event-pool-event.d.ts} +0 -0
@@ -12,9 +12,11 @@ import {
12
12
  ETHER_ADDRESS,
13
13
  FEE_PERCENT_IN_BASIS_POINTS_MASK,
14
14
  IS_CAP_SURPLUS_MASK,
15
+ IS_DIRECT_TRANSFER_MASK,
15
16
  IS_REFERRAL_MASK,
16
17
  IS_SKIP_BLACKLIST_MASK,
17
18
  IS_TAKE_SURPLUS_MASK,
19
+ IS_USER_SURPLUS_MASK,
18
20
  NULL_ADDRESS,
19
21
  SwapSide,
20
22
  } from './constants';
@@ -43,6 +45,8 @@ interface FeeParams {
43
45
  feePercent: string;
44
46
  isTakeSurplus: boolean;
45
47
  isCapSurplus: boolean;
48
+ isSurplusToUser: boolean;
49
+ isDirectFeeTransfer: boolean;
46
50
  isReferral: boolean;
47
51
  isSkipBlacklist: boolean;
48
52
  }
@@ -209,6 +213,8 @@ export class GenericSwapTransactionBuilder {
209
213
  partnerFeePercent: string,
210
214
  takeSurplus: boolean,
211
215
  isCapSurplus: boolean,
216
+ isSurplusToUser: boolean,
217
+ isDirectFeeTransfer: boolean,
212
218
  beneficiary: Address,
213
219
  permit: string,
214
220
  deadline: string,
@@ -237,6 +243,8 @@ export class GenericSwapTransactionBuilder {
237
243
  partnerFeePercent,
238
244
  takeSurplus,
239
245
  isCapSurplus,
246
+ isSurplusToUser,
247
+ isDirectFeeTransfer,
240
248
  priceRoute,
241
249
  });
242
250
 
@@ -280,6 +288,8 @@ export class GenericSwapTransactionBuilder {
280
288
  partnerFeePercent: string,
281
289
  takeSurplus: boolean,
282
290
  isCapSurplus: boolean,
291
+ isSurplusToUser: boolean,
292
+ isDirectFeeTransfer: boolean,
283
293
  permit: string,
284
294
  uuid: string,
285
295
  beneficiary: Address,
@@ -324,6 +334,8 @@ export class GenericSwapTransactionBuilder {
324
334
  partnerFeePercent,
325
335
  takeSurplus,
326
336
  isCapSurplus,
337
+ isSurplusToUser,
338
+ isDirectFeeTransfer,
327
339
  priceRoute,
328
340
  });
329
341
 
@@ -349,6 +361,8 @@ export class GenericSwapTransactionBuilder {
349
361
  priceRoute,
350
362
  takeSurplus,
351
363
  isCapSurplus,
364
+ isSurplusToUser,
365
+ isDirectFeeTransfer,
352
366
  partnerAddress,
353
367
  partnerFeePercent,
354
368
  skipBlacklist = false,
@@ -358,6 +372,8 @@ export class GenericSwapTransactionBuilder {
358
372
  partnerFeePercent: string;
359
373
  takeSurplus: boolean;
360
374
  isCapSurplus: boolean;
375
+ isSurplusToUser: boolean;
376
+ isDirectFeeTransfer: boolean;
361
377
  priceRoute: OptimalRate;
362
378
  skipBlacklist?: boolean;
363
379
  }) {
@@ -367,6 +383,8 @@ export class GenericSwapTransactionBuilder {
367
383
  feePercent: '0',
368
384
  isTakeSurplus: takeSurplus,
369
385
  isCapSurplus,
386
+ isSurplusToUser,
387
+ isDirectFeeTransfer,
370
388
  isReferral: true,
371
389
  isSkipBlacklist: skipBlacklist,
372
390
  })
@@ -375,6 +393,8 @@ export class GenericSwapTransactionBuilder {
375
393
  feePercent: partnerFeePercent,
376
394
  isTakeSurplus: takeSurplus,
377
395
  isCapSurplus,
396
+ isSurplusToUser,
397
+ isDirectFeeTransfer,
378
398
  isSkipBlacklist: skipBlacklist,
379
399
  isReferral: false,
380
400
  });
@@ -391,6 +411,8 @@ export class GenericSwapTransactionBuilder {
391
411
  partnerFeePercent,
392
412
  takeSurplus,
393
413
  isCapSurplus,
414
+ isSurplusToUser,
415
+ isDirectFeeTransfer,
394
416
  gasPrice,
395
417
  maxFeePerGas,
396
418
  maxPriorityFeePerGas,
@@ -408,6 +430,8 @@ export class GenericSwapTransactionBuilder {
408
430
  partnerFeePercent: string;
409
431
  takeSurplus?: boolean;
410
432
  isCapSurplus?: boolean;
433
+ isSurplusToUser?: boolean;
434
+ isDirectFeeTransfer?: boolean;
411
435
  gasPrice?: string;
412
436
  maxFeePerGas?: string;
413
437
  maxPriorityFeePerGas?: string;
@@ -438,6 +462,8 @@ export class GenericSwapTransactionBuilder {
438
462
  partnerFeePercent,
439
463
  takeSurplus ?? false,
440
464
  isCapSurplus ?? true,
465
+ isSurplusToUser ?? false,
466
+ isDirectFeeTransfer ?? false,
441
467
  permit || '0x',
442
468
  uuid,
443
469
  _beneficiary,
@@ -452,6 +478,8 @@ export class GenericSwapTransactionBuilder {
452
478
  partnerFeePercent,
453
479
  takeSurplus ?? false,
454
480
  isCapSurplus ?? true,
481
+ isSurplusToUser ?? false,
482
+ isDirectFeeTransfer ?? false,
455
483
  _beneficiary,
456
484
  permit || '0x',
457
485
  deadline,
@@ -485,6 +513,8 @@ export class GenericSwapTransactionBuilder {
485
513
  feePercent,
486
514
  isTakeSurplus,
487
515
  isCapSurplus,
516
+ isSurplusToUser,
517
+ isDirectFeeTransfer,
488
518
  isReferral,
489
519
  isSkipBlacklist,
490
520
  }: FeeParams): string {
@@ -522,6 +552,16 @@ export class GenericSwapTransactionBuilder {
522
552
  partialFeeCodeWithBitFlags.or(IS_CAP_SURPLUS_MASK);
523
553
  }
524
554
 
555
+ if (isSurplusToUser) {
556
+ partialFeeCodeWithBitFlags =
557
+ partialFeeCodeWithBitFlags.or(IS_USER_SURPLUS_MASK);
558
+ }
559
+
560
+ if (isDirectFeeTransfer) {
561
+ partialFeeCodeWithBitFlags = partialFeeCodeWithBitFlags.or(
562
+ IS_DIRECT_TRANSFER_MASK,
563
+ );
564
+ }
525
565
  // Combine partnerBigInt and feePercentBigInt
526
566
  const feeCode = partialFeeCodeWithPartnerAddress.or(
527
567
  partialFeeCodeWithBitFlags,
@@ -1575,9 +1575,9 @@ export const Holders: {
1575
1575
  },
1576
1576
  [Network.BASE]: {
1577
1577
  WETH: '0x4bb6b2efe7036020ba6f02a05602546c9f25bf28',
1578
- PRIME: '0xe3879b7359695f802d6FD56Bb76fD82C362Dafd6',
1578
+ PRIME: '0x956bcc6b56c99db382d9d97a30ba5f1402144b3e',
1579
1579
  ETH: '0xd34ea7278e6bd48defe656bbe263aef11101469c',
1580
- MAV: '0xf977814e90da44bfa03b6295a0616a897441acec',
1580
+ MAV: '0x7499785aa5d1bdf0a0ac862c1ef3698d3cba6568',
1581
1581
  USDC: '0xaac391f166f33cdaefaa4afa6616a3bea66b694d',
1582
1582
  USDbC: '0x4bb6b2efe7036020ba6f02a05602546c9f25bf28',
1583
1583
  DAI: '0x20f03e26968b179025f65c1f4afadfd3959c8d03',
@@ -1,26 +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
- declare type EtherFiData = void;
8
- declare type eETHPoolDepositParam = [];
9
- declare type weETHWrap = [_eETHAmount: string];
10
- declare type weETHUnwrap = [_weETHAmount: string];
11
- declare type EtherFiParam = eETHPoolDepositParam | weETHWrap | weETHUnwrap;
12
- export declare class EtherFi extends SimpleExchange implements IDexTxBuilder<EtherFiData, EtherFiParam> {
13
- static dexKeys: string[];
14
- eETHPoolInterface: Interface;
15
- weETHInterface: Interface;
16
- needWrapNative: boolean;
17
- eETH: string;
18
- eETHPool: string;
19
- weETH: string;
20
- constructor(dexHelper: IDexHelper);
21
- is_eETH: (token: string) => boolean;
22
- is_weETH: (token: string) => boolean;
23
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: EtherFiData, side: SwapSide): Promise<SimpleExchangeParam>;
24
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: EtherFiData, side: SwapSide): AdapterExchangeParam;
25
- }
26
- export {};
@@ -1,96 +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.EtherFi = 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 eETHPool_json_1 = __importDefault(require("../../abi/etherfi/eETHPool.json"));
11
- const weETH_json_1 = __importDefault(require("../../abi/etherfi/weETH.json"));
12
- const utils_1 = require("../../utils");
13
- const ts_essentials_1 = require("ts-essentials");
14
- const types_1 = require("../weth/types");
15
- var EtherFiFunctions;
16
- (function (EtherFiFunctions) {
17
- EtherFiFunctions["deposit"] = "deposit";
18
- EtherFiFunctions["wrap"] = "wrap";
19
- EtherFiFunctions["unwrap"] = "unwrap";
20
- })(EtherFiFunctions || (EtherFiFunctions = {}));
21
- const EtherFiConfig = {
22
- 1: {
23
- eETH: '0x35fa164735182de50811e8e2e824cfb9b6118ac2',
24
- eETHPool: '0x308861a430be4cce5502d0a12724771fc6daf216',
25
- weETH: '0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee',
26
- },
27
- };
28
- class EtherFi extends simple_exchange_1.SimpleExchange {
29
- constructor(dexHelper) {
30
- super(dexHelper, 'etherfi');
31
- this.needWrapNative = false;
32
- this.is_eETH = (token) => token.toLowerCase() === this.eETH;
33
- this.is_weETH = (token) => token.toLowerCase() === this.weETH;
34
- this.eETHPoolInterface = new abi_1.Interface(eETHPool_json_1.default);
35
- this.weETHInterface = new abi_1.Interface(weETH_json_1.default);
36
- this.eETH = EtherFiConfig[this.network].eETH.toLowerCase();
37
- this.eETHPool = EtherFiConfig[this.network].eETHPool.toLowerCase();
38
- this.weETH = EtherFiConfig[this.network].weETH.toLowerCase();
39
- }
40
- async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
41
- const [Interface, swapCallee, swapFunction, swapFunctionParams] = (() => {
42
- if (this.is_weETH(destToken)) {
43
- (0, ts_essentials_1.assert)(this.is_eETH(srcToken), 'srcToken should be eETH');
44
- return [
45
- this.weETHInterface,
46
- this.weETH,
47
- EtherFiFunctions.wrap,
48
- [srcAmount],
49
- ];
50
- }
51
- if (this.is_weETH(srcToken)) {
52
- (0, ts_essentials_1.assert)(this.is_eETH(destToken), 'destToken should be eETH');
53
- return [
54
- this.weETHInterface,
55
- this.weETH,
56
- EtherFiFunctions.unwrap,
57
- [srcAmount],
58
- ];
59
- }
60
- if (this.is_eETH(destToken)) {
61
- (0, ts_essentials_1.assert)(this.isWETH(srcToken) || (0, utils_1.isETHAddress)(srcToken), 'srcToken should be (w)eth');
62
- return [
63
- this.eETHPoolInterface,
64
- this.eETHPool,
65
- EtherFiFunctions.deposit,
66
- [],
67
- ];
68
- }
69
- throw new Error('LOGIC ERROR');
70
- })();
71
- const swapData = Interface.encodeFunctionData(swapFunction, swapFunctionParams);
72
- // if src token is WETH, we need to withdraw from weth and pass eth value on call. For other cases, we need to approve and perform call
73
- const isSrcTokenWeth = this.isWETH(srcToken);
74
- return this.buildSimpleParamWithoutWETHConversion(isSrcTokenWeth ? constants_1.ETHER_ADDRESS : srcToken, srcAmount, destToken, destAmount, swapData, swapCallee, swapCallee, '0', isSrcTokenWeth
75
- ? {
76
- callees: [this.dexHelper.config.data.wrappedNativeTokenAddress],
77
- calldata: [
78
- this.erc20Interface.encodeFunctionData(types_1.WethFunctions.withdraw, [
79
- srcAmount,
80
- ]),
81
- ],
82
- values: ['0'],
83
- }
84
- : undefined);
85
- }
86
- getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
87
- return {
88
- targetExchange: constants_1.NULL_ADDRESS,
89
- payload: '0x',
90
- networkFee: '0',
91
- };
92
- }
93
- }
94
- exports.EtherFi = EtherFi;
95
- EtherFi.dexKeys = ['etherfi'];
96
- //# sourceMappingURL=etherfi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"etherfi.js","sourceRoot":"","sources":["../../../src/dex/etherfi/etherfi.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { SDaiParams } from './types';
2
- import { DexConfigMap } from '../../types';
3
- export declare const SDaiConfig: DexConfigMap<SDaiParams>;
4
- export declare const Adapters: {
5
- [chainId: number]: {
6
- [side: string]: {
7
- name: string;
8
- index: number;
9
- }[];
10
- };
11
- };
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Adapters = exports.SDaiConfig = void 0;
4
- const constants_1 = require("../../constants");
5
- const core_1 = require("@paraswap/core");
6
- exports.SDaiConfig = {
7
- sdai: {
8
- [constants_1.Network.MAINNET]: {
9
- sdaiAddress: '0x83F20F44975D03b1b09e64809B757c47f942BEeA',
10
- daiAddress: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
11
- potAddress: '0x197E90f9FAD81970bA7976f33CbD77088E5D7cf7',
12
- },
13
- },
14
- };
15
- exports.Adapters = {
16
- [constants_1.Network.MAINNET]: {
17
- [core_1.SwapSide.SELL]: [{ name: 'Adapter06', index: 1 }],
18
- [core_1.SwapSide.BUY]: [{ name: 'BuyAdapter02', index: 4 }],
19
- },
20
- };
21
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/sdai/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAC1C,yCAA0C;AAE7B,QAAA,UAAU,GAA6B;IAClD,IAAI,EAAE;QACJ,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,WAAW,EAAE,4CAA4C;YACzD,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,4CAA4C;SACzD;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAIjB;IACF,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,eAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClD,CAAC,eAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACrD;CACF,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const SDAI_DEPOSIT_GAS_COST = 165000;
2
- export declare const SDAI_REDEEM_GAS_COST = 90000;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SDAI_REDEEM_GAS_COST = exports.SDAI_DEPOSIT_GAS_COST = void 0;
4
- exports.SDAI_DEPOSIT_GAS_COST = 165000;
5
- exports.SDAI_REDEEM_GAS_COST = 90000;
6
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/sdai/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,MAAO,CAAC;AAChC,QAAA,oBAAoB,GAAG,KAAM,CAAC"}
@@ -1,102 +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
- /* eslint-disable no-console */
7
- const dotenv_1 = __importDefault(require("dotenv"));
8
- dotenv_1.default.config();
9
- const constants_1 = require("../../../constants");
10
- const dex_helper_1 = require("../../../dex-helper");
11
- const ethers_1 = require("ethers");
12
- const sdai_1 = require("../sdai");
13
- const config_1 = require("../config");
14
- const utils_1 = require("../utils");
15
- const abi_1 = require("@ethersproject/abi");
16
- const pot_json_1 = __importDefault(require("../../../abi/maker-psm/pot.json"));
17
- const network = constants_1.Network.MAINNET;
18
- const dexKey = 'sdai';
19
- const { potAddress } = config_1.SDaiConfig[dexKey][network];
20
- const blockHeaders = {};
21
- const dexHelper = new dex_helper_1.DummyDexHelper(network);
22
- const logger = dexHelper.getLogger(dexKey);
23
- function preprocessField(value) {
24
- if (typeof value === 'bigint' ||
25
- typeof value === 'number' ||
26
- ethers_1.ethers.BigNumber.isBigNumber(value)) {
27
- return value.toString();
28
- }
29
- return value;
30
- }
31
- function compareAndLogDifferences(obj1, obj2, keyNames, checkEachKey = false) {
32
- let isValid = true;
33
- let keys = keyNames;
34
- if (checkEachKey) {
35
- // find common keys
36
- const keys1 = Object.keys(obj1);
37
- const keys2 = new Set(Object.keys(obj2));
38
- keys = keys1.filter(key => keys2.has(key));
39
- }
40
- for (let fieldName of keys) {
41
- const value1 = preprocessField(obj1[fieldName]);
42
- const value2 = preprocessField(obj2[fieldName]);
43
- if (value1 !== value2) {
44
- console.log(`${fieldName.toString()} mismatch: actual: ${value1} vs pool: ${value2}`);
45
- isValid = false;
46
- }
47
- }
48
- return isValid;
49
- }
50
- async function isPoolStateEqualToReal(state, blockNumber) {
51
- const expected = await (0, utils_1.getOnChainState)(dexHelper.multiContract, potAddress, new abi_1.Interface(pot_json_1.default), blockNumber);
52
- const isValidState = compareAndLogDifferences(state, expected, [
53
- 'rho',
54
- 'dsr',
55
- 'dsr',
56
- ]);
57
- return isValidState;
58
- }
59
- async function checkPoolStateForBlockRange(startBlockNumber, endBlockNumber) {
60
- const network = constants_1.Network.MAINNET;
61
- const dexKey = 'sdai';
62
- const dexHelper = new dex_helper_1.DummyDexHelper(network);
63
- const sdai = new sdai_1.SDai(network, dexKey, dexHelper);
64
- const pool = await sdai.eventPool;
65
- const logsToDispatch = await dexHelper.provider.getLogs({
66
- fromBlock: startBlockNumber,
67
- toBlock: endBlockNumber,
68
- address: potAddress,
69
- });
70
- console.log(logsToDispatch.length);
71
- // group logs by block number
72
- const logsByBlockNumber = {};
73
- for (let log of logsToDispatch) {
74
- if (!logsByBlockNumber[log.blockNumber]) {
75
- logsByBlockNumber[log.blockNumber] = [];
76
- }
77
- logsByBlockNumber[log.blockNumber].push(log);
78
- }
79
- const sortedBlocks = Object.keys(logsByBlockNumber)
80
- .map(Number)
81
- .sort((a, b) => Number(a) - Number(b));
82
- for (let blockNumber of sortedBlocks) {
83
- if (!blockHeaders[blockNumber]) {
84
- blockHeaders[blockNumber] = await dexHelper.web3Provider.eth.getBlock(blockNumber);
85
- }
86
- await pool?.update(logsByBlockNumber[blockNumber], {
87
- [blockNumber]: blockHeaders[blockNumber],
88
- });
89
- }
90
- const state = pool?.getState(startBlockNumber);
91
- return isPoolStateEqualToReal(state, endBlockNumber);
92
- }
93
- async function main() {
94
- // use findBreakingBlock to find the block where the state is broken
95
- // console.log(await findBreakingBlock(startBlockNumber, endBlockNumber));
96
- // previously broken block 150502863
97
- console.log(await checkPoolStateForBlockRange(19199247 - 10000, 19199247));
98
- }
99
- main()
100
- .then(() => console.log('Done'))
101
- .catch(e => console.error(e));
102
- //# sourceMappingURL=validate-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-state.js","sourceRoot":"","sources":["../../../../src/dex/sdai/scripts/validate-state.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+B;AAC/B,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,kDAA6C;AAC7C,oDAAqD;AAGrD,mCAAgC;AAChC,kCAA+B;AAC/B,sCAAuC;AACvC,oCAA2C;AAC3C,4CAA+C;AAC/C,+EAAqD;AAErD,MAAM,OAAO,GAAG,mBAAO,CAAC,OAAO,CAAC;AAChC,MAAM,MAAM,GAAG,MAAM,CAAC;AAEtB,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AACnD,MAAM,YAAY,GAAgC,EAAE,CAAC;AAErD,MAAM,SAAS,GAAG,IAAI,2BAAc,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAE3C,SAAS,eAAe,CAAC,KAAU;IACjC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,eAAM,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EACnC;QACA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KACzB;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAO,EACP,IAAO,EACP,QAAkC,EAClC,YAAY,GAAG,KAAK;IAEpB,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,IAAI,GAAG,QAAQ,CAAC;IAEpB,IAAI,YAAY,EAAE;QAChB,mBAAmB;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAA6B,CAAC;KACxE;IAED,KAAK,IAAI,SAAS,IAAI,IAAI,EAAE;QAC1B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhD,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,OAAO,CAAC,GAAG,CACT,GAAG,SAAS,CAAC,QAAQ,EAAE,sBAAsB,MAAM,aAAa,MAAM,EAAE,CACzE,CAAC;YACF,OAAO,GAAG,KAAK,CAAC;SACjB;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAoB,EACpB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAe,EACpC,SAAS,CAAC,aAAa,EACvB,UAAU,EACV,IAAI,eAAS,CAAC,kBAAM,CAAC,EACrB,WAAW,CACZ,CAAC;IAEF,MAAM,YAAY,GAAG,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE;QAC7D,KAAK;QACL,KAAK;QACL,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,gBAAwB,EACxB,cAAsB;IAEtB,MAAM,OAAO,GAAG,mBAAO,CAAC,OAAO,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,SAAS,GAAG,IAAI,2BAAc,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;IAElC,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,SAAS,EAAE,gBAAgB;QAC3B,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,UAAU;KACpB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAEnC,6BAA6B;IAC7B,MAAM,iBAAiB,GAA0B,EAAE,CAAC;IACpD,KAAK,IAAI,GAAG,IAAI,cAAc,EAAE;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YACvC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;SACzC;QACD,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC9C;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAChD,GAAG,CAAC,MAAM,CAAC;SACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,KAAK,IAAI,WAAW,IAAI,YAAY,EAAE;QACpC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;YAC9B,YAAY,CAAC,WAAW,CAAC,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CACnE,WAAW,CACZ,CAAC;SACH;QAED,MAAM,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE;YACjD,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC;SACzC,CAAC,CAAC;KACJ;IAED,MAAM,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAkB,CAAC;IAChE,OAAO,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,oEAAoE;IACpE,0EAA0E;IAC1E,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,2BAA2B,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC/B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,16 +0,0 @@
1
- import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
2
- import { Interface } from '@ethersproject/abi';
3
- import type { IDexHelper } from '../../dex-helper';
4
- import type { AsyncOrSync, DeepReadonly } from 'ts-essentials';
5
- import type { Address, BlockHeader, Log, Logger } from '../../types';
6
- import type { SDaiPoolState } from './types';
7
- export declare class SDaiEventPool extends StatefulEventSubscriber<SDaiPoolState> {
8
- protected dexHelper: IDexHelper;
9
- private potAddress;
10
- private potInterface;
11
- constructor(parentName: string, dexHelper: IDexHelper, potAddress: Address, potInterface: Interface, logger: Logger);
12
- protected processLog(state: DeepReadonly<SDaiPoolState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): AsyncOrSync<DeepReadonly<SDaiPoolState> | null>;
13
- generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<SDaiPoolState>>;
14
- convertToSDai(daiAmount: bigint, blockNumber: number): bigint;
15
- convertToDai(sdaiAmount: bigint, blockNumber: number): bigint;
16
- }
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SDaiEventPool = void 0;
4
- const bigint_constants_1 = require("../../bigint-constants");
5
- const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
6
- const utils_1 = require("./utils");
7
- const RAY = bigint_constants_1.BI_POWS[27];
8
- const ZERO = BigInt(0);
9
- const TWO = BigInt(2);
10
- const HALF = RAY / TWO;
11
- // function file(bytes32,uint256)
12
- const FILE_TOPICHASH = `0x29ae811400000000000000000000000000000000000000000000000000000000`;
13
- // function drip()
14
- const DRIP_TOPICHASH = `0x9f678cca00000000000000000000000000000000000000000000000000000000`;
15
- // function cage()
16
- const CAGE_TOPICHASH = `0x6924500900000000000000000000000000000000000000000000000000000000`;
17
- // bytes32 repr of "dsr" string
18
- const DSR_TOPIC = `0x6473720000000000000000000000000000000000000000000000000000000000`;
19
- const rpow = (x, n) => {
20
- if (!x && !n)
21
- return RAY;
22
- if (!x)
23
- return ZERO;
24
- let z = n % TWO > ZERO ? x : RAY;
25
- for (n = n / TWO; n; n /= TWO) {
26
- x = (x * x + HALF) / RAY;
27
- if (n % TWO > ZERO) {
28
- z = (z * x + HALF) / RAY;
29
- }
30
- }
31
- return z;
32
- };
33
- const calcChi = (state, currentTimestamp) => {
34
- currentTimestamp || (currentTimestamp = Math.floor(Date.now() / 1000));
35
- if (!state.live)
36
- return RAY;
37
- const { dsr: dsr_, chi: chi_, rho: rho_ } = state;
38
- const now = BigInt(currentTimestamp);
39
- const rho = BigInt(rho_);
40
- const dsr = BigInt(dsr_);
41
- const chi = BigInt(chi_);
42
- return now > rho ? (rpow(dsr, now - rho) * chi) / RAY : chi;
43
- };
44
- class SDaiEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
45
- constructor(parentName, dexHelper, potAddress, potInterface, logger) {
46
- super(parentName, 'sdai', dexHelper, logger);
47
- this.dexHelper = dexHelper;
48
- this.potAddress = potAddress;
49
- this.potInterface = potInterface;
50
- this.addressesSubscribed = [potAddress];
51
- }
52
- processLog(state, log, blockHeader) {
53
- if (log.topics[0] === FILE_TOPICHASH && log.topics[2] === DSR_TOPIC) {
54
- return {
55
- ...state,
56
- dsr: BigInt(log.topics[3]).toString(),
57
- };
58
- }
59
- if (log.topics[0] === DRIP_TOPICHASH) {
60
- return {
61
- ...state,
62
- rho: blockHeader.timestamp.toString(),
63
- chi: calcChi(state, +blockHeader.timestamp).toString(),
64
- };
65
- }
66
- return null;
67
- }
68
- async generateState(blockNumber = 'latest') {
69
- return (0, utils_1.getOnChainState)(this.dexHelper.multiContract, this.potAddress, this.potInterface, blockNumber);
70
- }
71
- convertToSDai(daiAmount, blockNumber) {
72
- const state = this.getState(blockNumber);
73
- if (!state)
74
- throw new Error(`SDai state at ${blockNumber} does not exists`);
75
- return (daiAmount * RAY) / calcChi(state);
76
- }
77
- convertToDai(sdaiAmount, blockNumber) {
78
- const state = this.getState(blockNumber);
79
- if (!state)
80
- throw new Error(`SDai state at ${blockNumber} does not exists`);
81
- return (sdaiAmount * calcChi(state)) / RAY;
82
- }
83
- }
84
- exports.SDaiEventPool = SDaiEventPool;
85
- //# sourceMappingURL=sdai-pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdai-pool.js","sourceRoot":"","sources":["../../../src/dex/sdai/sdai-pool.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import { SimpleExchange } from '../simple-exchange';
2
- import { IDex } from '../idex';
3
- import { SDaiParams, SDaiData } from './types';
4
- import { Network, SwapSide } from '../../constants';
5
- import { AdapterExchangeParam, Address, ExchangePrices, Logger, PoolLiquidity, PoolPrices, SimpleExchangeParam, Token } from '../../types';
6
- import { IDexHelper } from '../../dex-helper';
7
- import { Interface } from 'ethers/lib/utils';
8
- import { SDaiEventPool } from './sdai-pool';
9
- export declare class SDai extends SimpleExchange implements IDex<SDaiData, SDaiParams> {
10
- protected network: Network;
11
- protected dexHelper: IDexHelper;
12
- readonly daiAddress: string;
13
- readonly sdaiAddress: string;
14
- readonly potAddress: string;
15
- protected adapters: {
16
- [side: string]: {
17
- name: string;
18
- index: number;
19
- }[];
20
- };
21
- protected sdaiInterface: Interface;
22
- protected potInterface: Interface;
23
- readonly hasConstantPriceLargeAmounts = true;
24
- readonly isFeeOnTransferSupported = false;
25
- static dexKeysWithNetwork: {
26
- key: string;
27
- networks: Network[];
28
- }[];
29
- readonly eventPool: SDaiEventPool;
30
- logger: Logger;
31
- constructor(network: Network, dexKey: string, dexHelper: IDexHelper, daiAddress?: string, sdaiAddress?: string, potAddress?: string, adapters?: {
32
- [side: string]: {
33
- name: string;
34
- index: number;
35
- }[];
36
- }, sdaiInterface?: Interface, potInterface?: Interface);
37
- getAdapters(side: SwapSide): {
38
- name: string;
39
- index: number;
40
- }[] | null;
41
- isSDai(tokenAddress: Address): boolean;
42
- isDai(tokenAddress: Address): boolean;
43
- isAppropriatePair(srcToken: Token, destToken: Token): boolean;
44
- initializePricing(blockNumber: number): Promise<void>;
45
- getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
46
- getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<SDaiData>>;
47
- getCalldataGasCost(poolPrices: PoolPrices<SDaiData>): number | number[];
48
- getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
49
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: SDaiData, side: SwapSide): Promise<SimpleExchangeParam>;
50
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: SDaiData, side: SwapSide): AdapterExchangeParam;
51
- }