@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.
- package/.vscode/launch.json +53 -0
- package/.vscode/settings.json +2 -0
- package/.vscode/tasks.json +15 -0
- package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
- package/build/abi/wombat/pool.json +1289 -0
- package/build/constants.d.ts +2 -0
- package/build/constants.js +3 -1
- package/build/constants.js.map +1 -1
- package/build/dex/aave-v1/aave-v1.d.ts +2 -1
- package/build/dex/aave-v1/aave-v1.js +23 -0
- package/build/dex/aave-v1/aave-v1.js.map +1 -1
- package/build/dex/aave-v2/tokens-avalanche.json +44 -0
- package/build/dex/aave-v2/tokens-mainnet.json +188 -0
- package/build/dex/aave-v2/tokens-polygon.json +44 -0
- package/build/dex/compound.js +1 -1
- package/build/dex/compound.js.map +1 -1
- package/build/dex/index.js +0 -2
- package/build/dex/index.js.map +1 -1
- package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
- package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
- package/build/dex/maker-psm/scripts/validate-state.js +185 -0
- package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
- package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
- package/build/dex/maverick-v2/config.d.ts +2 -1
- package/build/dex/maverick-v2/config.js +6 -2
- package/build/dex/maverick-v2/config.js.map +1 -1
- package/build/dex/maverick-v2/maverick-v2.d.ts +3 -2
- package/build/dex/maverick-v2/maverick-v2.js +17 -6
- package/build/dex/maverick-v2/maverick-v2.js.map +1 -1
- package/build/dex/platypus/platypus.d.ts +2 -1
- package/build/dex/platypus/platypus.js +45 -0
- package/build/dex/platypus/platypus.js.map +1 -1
- package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
- package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
- package/build/dex/stable-pool.js +1 -8
- package/build/dex/stable-pool.js.map +1 -1
- package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
- package/build/dex/swaap-v1/swaap-v1.js +14 -0
- package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
- package/build/dex/uniswap-v2/uniswap-v2.d.ts +2 -2
- package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
- package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
- package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
- package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
- package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
- package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
- package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
- package/build/dex/uniswap-v3/uniswap-v3.d.ts +2 -2
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/build/dex/zerox/index.d.ts +1 -1
- package/build/dex/zerox/index.js.map +1 -1
- package/build/executor/Executor03BytecodeBuilder.js +1 -12
- package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
- package/build/generic-swap-transaction-builder.d.ts +5 -3
- package/build/generic-swap-transaction-builder.js +22 -7
- package/build/generic-swap-transaction-builder.js.map +1 -1
- package/package.json +2 -2
- package/src/constants.ts +2 -0
- package/src/dex/index.ts +0 -2
- package/src/dex/maker-psm/scripts/gem.abi.json +136 -0
- package/src/dex/maker-psm/scripts/validate-state.ts +221 -0
- package/src/dex/maker-psm/scripts/vat.abi.json +243 -0
- package/src/dex/uniswap-v2/uniswap-v2.ts +2 -2
- package/src/dex/uniswap-v3/uniswap-v3.ts +2 -2
- package/src/dex/zerox/index.ts +1 -1
- package/src/executor/Executor03BytecodeBuilder.ts +1 -15
- package/src/generic-swap-transaction-builder.ts +40 -0
- package/tests/constants-e2e.ts +2 -2
- package/build/dex/etherfi/etherfi.d.ts +0 -26
- package/build/dex/etherfi/etherfi.js +0 -96
- package/build/dex/etherfi/etherfi.js.map +0 -1
- package/build/dex/sdai/config.d.ts +0 -11
- package/build/dex/sdai/config.js +0 -21
- package/build/dex/sdai/config.js.map +0 -1
- package/build/dex/sdai/constants.d.ts +0 -2
- package/build/dex/sdai/constants.js +0 -6
- package/build/dex/sdai/constants.js.map +0 -1
- package/build/dex/sdai/scripts/validate-state.js +0 -102
- package/build/dex/sdai/scripts/validate-state.js.map +0 -1
- package/build/dex/sdai/sdai-pool.d.ts +0 -16
- package/build/dex/sdai/sdai-pool.js +0 -85
- package/build/dex/sdai/sdai-pool.js.map +0 -1
- package/build/dex/sdai/sdai.d.ts +0 -51
- package/build/dex/sdai/sdai.js +0 -172
- package/build/dex/sdai/sdai.js.map +0 -1
- package/build/dex/sdai/types.d.ts +0 -21
- package/build/dex/sdai/types.js +0 -11
- package/build/dex/sdai/types.js.map +0 -1
- package/build/dex/sdai/utils.d.ts +0 -4
- package/build/dex/sdai/utils.js +0 -39
- package/build/dex/sdai/utils.js.map +0 -1
- package/src/abi/maverick-v2/MaverickV2Pool.json +0 -1234
- package/src/abi/maverick-v2/MaverickV2PoolLens.json +0 -1232
- package/src/abi/maverick-v2/MaverickV2Quoter.json +0 -278
- package/src/dex/maverick-v2/config.ts +0 -17
- package/src/dex/maverick-v2/maverick-math/maverick-basic-math.ts +0 -152
- package/src/dex/maverick-v2/maverick-math/maverick-bin-math.ts +0 -288
- package/src/dex/maverick-v2/maverick-math/maverick-delta-math.ts +0 -32
- package/src/dex/maverick-v2/maverick-math/maverick-math.ts +0 -30
- package/src/dex/maverick-v2/maverick-math/maverick-pool-lib.ts +0 -42
- package/src/dex/maverick-v2/maverick-math/maverick-pool-math.ts +0 -709
- package/src/dex/maverick-v2/maverick-math/maverick-swap-math.ts +0 -199
- package/src/dex/maverick-v2/maverick-math/maverick-tick-math.ts +0 -171
- package/src/dex/maverick-v2/maverick-math/maverick-twa-math.ts +0 -54
- package/src/dex/maverick-v2/maverick-v2-e2e.test.ts +0 -176
- package/src/dex/maverick-v2/maverick-v2-events.test.ts +0 -112
- package/src/dex/maverick-v2/maverick-v2-integration.test.ts +0 -269
- package/src/dex/maverick-v2/maverick-v2-pool.ts +0 -276
- package/src/dex/maverick-v2/maverick-v2.ts +0 -424
- package/src/dex/maverick-v2/types.ts +0 -152
- /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,
|
package/tests/constants-e2e.ts
CHANGED
|
@@ -1575,9 +1575,9 @@ export const Holders: {
|
|
|
1575
1575
|
},
|
|
1576
1576
|
[Network.BASE]: {
|
|
1577
1577
|
WETH: '0x4bb6b2efe7036020ba6f02a05602546c9f25bf28',
|
|
1578
|
-
PRIME: '
|
|
1578
|
+
PRIME: '0x956bcc6b56c99db382d9d97a30ba5f1402144b3e',
|
|
1579
1579
|
ETH: '0xd34ea7278e6bd48defe656bbe263aef11101469c',
|
|
1580
|
-
MAV: '
|
|
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
|
-
};
|
package/build/dex/sdai/config.js
DELETED
|
@@ -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,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":"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"}
|
|
@@ -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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"}
|
package/build/dex/sdai/sdai.d.ts
DELETED
|
@@ -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
|
-
}
|