@paraswap/dex-lib 4.1.11-erc-4626.0 → 4.1.11-erc-4626.2
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/build/abi/ERC4626.json +34 -0
- package/build/dex/erc4626/erc-4626-pool.js +17 -11
- package/build/dex/erc4626/erc-4626-pool.js.map +1 -1
- package/build/dex/erc4626/erc4626.js +8 -8
- package/build/dex/erc4626/erc4626.js.map +1 -1
- package/build/dex/erc4626/types.d.ts +4 -0
- package/build/dex/erc4626/types.js.map +1 -1
- package/package.json +1 -1
- package/src/abi/ERC4626.json +34 -0
- package/src/dex/erc4626/erc-4626-pool.ts +19 -14
- package/src/dex/erc4626/erc4626-event.test.ts +1 -7
- package/src/dex/erc4626/erc4626.ts +8 -8
- package/src/dex/erc4626/types.ts +4 -0
package/build/abi/ERC4626.json
CHANGED
|
@@ -753,5 +753,39 @@
|
|
|
753
753
|
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
|
754
754
|
"stateMutability": "nonpayable",
|
|
755
755
|
"type": "function"
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
"anonymous": false,
|
|
759
|
+
"inputs": [
|
|
760
|
+
{
|
|
761
|
+
"indexed": true,
|
|
762
|
+
"name": "dst",
|
|
763
|
+
"type": "address"
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"indexed": false,
|
|
767
|
+
"name": "wad",
|
|
768
|
+
"type": "uint256"
|
|
769
|
+
}
|
|
770
|
+
],
|
|
771
|
+
"name": "Deposit",
|
|
772
|
+
"type": "event"
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"anonymous": false,
|
|
776
|
+
"inputs": [
|
|
777
|
+
{
|
|
778
|
+
"indexed": true,
|
|
779
|
+
"name": "src",
|
|
780
|
+
"type": "address"
|
|
781
|
+
},
|
|
782
|
+
{
|
|
783
|
+
"indexed": false,
|
|
784
|
+
"name": "wad",
|
|
785
|
+
"type": "uint256"
|
|
786
|
+
}
|
|
787
|
+
],
|
|
788
|
+
"name": "Withdrawal",
|
|
789
|
+
"type": "event"
|
|
756
790
|
}
|
|
757
791
|
]
|
|
@@ -27,19 +27,25 @@ class ERC4626EventPool extends stateful_event_subscriber_1.StatefulEventSubscrib
|
|
|
27
27
|
this.logDecoder = (log) => this.wrapperInterface.parseLog(log);
|
|
28
28
|
}
|
|
29
29
|
async processLog(state, log, blockHeader) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
log.
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
try {
|
|
31
|
+
const event = this.logDecoder(log);
|
|
32
|
+
if (log.topics[0] === this.transferTopic &&
|
|
33
|
+
log.address.toLowerCase() === this.asset &&
|
|
34
|
+
event.args.to.toLowerCase() === this.vault) {
|
|
35
|
+
return this.handleAssetTransferToVault(event, state, log);
|
|
36
|
+
}
|
|
37
|
+
if (log.topics[0] === this.depositTopic) {
|
|
38
|
+
return this.handleDeposit(event, state, log);
|
|
39
|
+
}
|
|
40
|
+
if (log.topics[0] === this.withdrawTopic) {
|
|
41
|
+
return this.handleWithdraw(event, state, log);
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
35
44
|
}
|
|
36
|
-
|
|
37
|
-
|
|
45
|
+
catch (error) {
|
|
46
|
+
this.logger.error(`Error processing log: ${log}, error: ${error}`);
|
|
47
|
+
return null;
|
|
38
48
|
}
|
|
39
|
-
if (log.topics[0] === this.withdrawTopic) {
|
|
40
|
-
return this.handleWithdraw(event, state, log);
|
|
41
|
-
}
|
|
42
|
-
return null;
|
|
43
49
|
}
|
|
44
50
|
async generateState(blockNumber = 'latest') {
|
|
45
51
|
const calls = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc-4626-pool.js","sourceRoot":"","sources":["../../../src/dex/erc4626/erc-4626-pool.ts"],"names":[],"mappings":";;;AAAA,+EAA0E;AAO1E,iDAAqD;AAGrD,MAAa,gBAAiB,SAAQ,mDAAyC;IAOjE;IACF;IACA;IACA;IAEA;IACA;IACA;IAbV,UAAU,CAAoB;IAE9B,YACE,UAAkB,EAClB,OAAgB,EAChB,QAAgB,EACN,SAAqB,EACvB,KAAc,EACd,KAAc,EACd,gBAA2B,EACnC,MAAc,EACN,YAAoB,EACpB,aAAqB,EACrB,aAAqB;QAE7B,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QATrC,cAAS,GAAT,SAAS,CAAY;QACvB,UAAK,GAAL,KAAK,CAAS;QACd,UAAK,GAAL,KAAK,CAAS;QACd,qBAAgB,GAAhB,gBAAgB,CAAW;QAE3B,iBAAY,GAAZ,YAAY,CAAQ;QACpB,kBAAa,GAAb,aAAa,CAAQ;QACrB,kBAAa,GAAb,aAAa,CAAQ;QAG7B,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IAES,KAAK,CAAC,UAAU,CACxB,KAAqC,EACrC,GAAkB,EAClB,WAAkC;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"erc-4626-pool.js","sourceRoot":"","sources":["../../../src/dex/erc4626/erc-4626-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,6 @@ const bigint_constants_1 = require("../../bigint-constants");
|
|
|
47
47
|
const erc_4626_pool_1 = require("./erc-4626-pool");
|
|
48
48
|
const abi_1 = require("@ethersproject/abi");
|
|
49
49
|
const ERC4626_json_1 = __importDefault(require("../../abi/ERC4626.json"));
|
|
50
|
-
const erc20_json_1 = __importDefault(require("../../abi/erc20.json"));
|
|
51
50
|
const constants_2 = require("./constants");
|
|
52
51
|
const utils_2 = require("../../executor/utils");
|
|
53
52
|
class ERC4626 extends simple_exchange_1.SimpleExchange {
|
|
@@ -63,12 +62,7 @@ class ERC4626 extends simple_exchange_1.SimpleExchange {
|
|
|
63
62
|
static dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.ERC4626Config);
|
|
64
63
|
eventPool;
|
|
65
64
|
logger;
|
|
66
|
-
constructor(network, dexKey, dexHelper, vault = config_1.ERC4626Config[dexKey][network].vault, asset = config_1.ERC4626Config[dexKey][network].asset, erc4626Interface = new abi_1.Interface(
|
|
67
|
-
// Vault abi
|
|
68
|
-
...ERC4626_json_1.default,
|
|
69
|
-
// asset abi (specifically to handle Transfer to vault event)
|
|
70
|
-
...erc20_json_1.default,
|
|
71
|
-
])) {
|
|
65
|
+
constructor(network, dexKey, dexHelper, vault = config_1.ERC4626Config[dexKey][network].vault, asset = config_1.ERC4626Config[dexKey][network].asset, erc4626Interface = new abi_1.Interface(ERC4626_json_1.default)) {
|
|
72
66
|
super(dexHelper, dexKey);
|
|
73
67
|
this.network = network;
|
|
74
68
|
this.dexKey = dexKey;
|
|
@@ -144,7 +138,13 @@ class ERC4626 extends simple_exchange_1.SimpleExchange {
|
|
|
144
138
|
unit: bigint_constants_1.BI_POWS[18],
|
|
145
139
|
prices: amounts.map(amount => calcFunction(amount, state)),
|
|
146
140
|
gasCost: isWrap ? 60000 : 70000,
|
|
147
|
-
data: {
|
|
141
|
+
data: {
|
|
142
|
+
exchange: `${this.vault}`,
|
|
143
|
+
state: {
|
|
144
|
+
totalShares: state.totalShares.toString(),
|
|
145
|
+
totalAssets: state.totalAssets.toString(),
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
148
|
poolAddresses: [this.vault],
|
|
149
149
|
exchange: this.dexKey,
|
|
150
150
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc4626.js","sourceRoot":"","sources":["../../../src/dex/erc4626/erc4626.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,+CAAoD;AACpD,2EAA6D;AAC7D,uCAAoD;AAGpD,mCAKiB;AACjB,wDAAoD;AACpD,qCAAyC;AACzC,6DAAiD;AACjD,mDAAmD;AACnD,4CAA+C;AAC/C,0EAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"erc4626.js","sourceRoot":"","sources":["../../../src/dex/erc4626/erc4626.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/erc4626/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/erc4626/types.ts"],"names":[],"mappings":";;;AAeA,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;IACrB,iCAAa,CAAA;AACf,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B"}
|
package/package.json
CHANGED
package/src/abi/ERC4626.json
CHANGED
|
@@ -753,5 +753,39 @@
|
|
|
753
753
|
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
|
754
754
|
"stateMutability": "nonpayable",
|
|
755
755
|
"type": "function"
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
"anonymous": false,
|
|
759
|
+
"inputs": [
|
|
760
|
+
{
|
|
761
|
+
"indexed": true,
|
|
762
|
+
"name": "dst",
|
|
763
|
+
"type": "address"
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"indexed": false,
|
|
767
|
+
"name": "wad",
|
|
768
|
+
"type": "uint256"
|
|
769
|
+
}
|
|
770
|
+
],
|
|
771
|
+
"name": "Deposit",
|
|
772
|
+
"type": "event"
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"anonymous": false,
|
|
776
|
+
"inputs": [
|
|
777
|
+
{
|
|
778
|
+
"indexed": true,
|
|
779
|
+
"name": "src",
|
|
780
|
+
"type": "address"
|
|
781
|
+
},
|
|
782
|
+
{
|
|
783
|
+
"indexed": false,
|
|
784
|
+
"name": "wad",
|
|
785
|
+
"type": "uint256"
|
|
786
|
+
}
|
|
787
|
+
],
|
|
788
|
+
"name": "Withdrawal",
|
|
789
|
+
"type": "event"
|
|
756
790
|
}
|
|
757
791
|
]
|
|
@@ -36,21 +36,26 @@ export class ERC4626EventPool extends StatefulEventSubscriber<ERC4626PoolState>
|
|
|
36
36
|
log: Readonly<Log>,
|
|
37
37
|
blockHeader: Readonly<BlockHeader>,
|
|
38
38
|
): Promise<DeepReadonly<ERC4626PoolState> | null> {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
try {
|
|
40
|
+
const event = this.logDecoder(log);
|
|
41
|
+
if (
|
|
42
|
+
log.topics[0] === this.transferTopic &&
|
|
43
|
+
log.address.toLowerCase() === this.asset &&
|
|
44
|
+
event.args.to.toLowerCase() === this.vault
|
|
45
|
+
) {
|
|
46
|
+
return this.handleAssetTransferToVault(event, state, log);
|
|
47
|
+
}
|
|
48
|
+
if (log.topics[0] === this.depositTopic) {
|
|
49
|
+
return this.handleDeposit(event, state, log);
|
|
50
|
+
}
|
|
51
|
+
if (log.topics[0] === this.withdrawTopic) {
|
|
52
|
+
return this.handleWithdraw(event, state, log);
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
} catch (error) {
|
|
56
|
+
this.logger.error(`Error processing log: ${log}, error: ${error}`);
|
|
57
|
+
return null;
|
|
46
58
|
}
|
|
47
|
-
if (log.topics[0] === this.depositTopic) {
|
|
48
|
-
return this.handleDeposit(event, state, log);
|
|
49
|
-
}
|
|
50
|
-
if (log.topics[0] === this.withdrawTopic) {
|
|
51
|
-
return this.handleWithdraw(event, state, log);
|
|
52
|
-
}
|
|
53
|
-
return null;
|
|
54
59
|
}
|
|
55
60
|
|
|
56
61
|
async generateState(
|
|
@@ -7,7 +7,6 @@ import { ERC4626Config } from './config';
|
|
|
7
7
|
import { Network } from '../../constants';
|
|
8
8
|
import { DummyDexHelper } from '../../dex-helper/index';
|
|
9
9
|
import ERC4626_ABI from '../../abi/ERC4626.json';
|
|
10
|
-
import ERC20ABI from '../../abi/erc20.json';
|
|
11
10
|
import { DEPOSIT_TOPIC, TRANSFER_TOPIC, WITHDRAW_TOPIC } from './constants';
|
|
12
11
|
import { testEventSubscriber } from '../../../tests/utils-events';
|
|
13
12
|
import { ERC4626PoolState } from './types';
|
|
@@ -83,12 +82,7 @@ describe('Wusdm', function () {
|
|
|
83
82
|
const wUSDMAddress = ERC4626Config[dexKey][network].vault;
|
|
84
83
|
const USDMAddress = ERC4626Config[dexKey][network].asset;
|
|
85
84
|
|
|
86
|
-
const wUSDMIface: Interface = new Interface(
|
|
87
|
-
// Vault abi
|
|
88
|
-
...ERC4626_ABI,
|
|
89
|
-
// asset abi (specifically to handle Transfer to vault event)
|
|
90
|
-
...ERC20ABI,
|
|
91
|
-
]);
|
|
85
|
+
const wUSDMIface: Interface = new Interface(ERC4626_ABI);
|
|
92
86
|
|
|
93
87
|
const blockNumbers = Array.from(
|
|
94
88
|
new Set(
|
|
@@ -28,7 +28,6 @@ import { BI_POWS } from '../../bigint-constants';
|
|
|
28
28
|
import { ERC4626EventPool } from './erc-4626-pool';
|
|
29
29
|
import { Interface } from '@ethersproject/abi';
|
|
30
30
|
import ERC4626_ABI from '../../abi/ERC4626.json';
|
|
31
|
-
import ERC20ABI from '../../abi/erc20.json';
|
|
32
31
|
import { DEPOSIT_TOPIC, TRANSFER_TOPIC, WITHDRAW_TOPIC } from './constants';
|
|
33
32
|
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
34
33
|
|
|
@@ -52,12 +51,7 @@ export class ERC4626
|
|
|
52
51
|
readonly dexHelper: IDexHelper,
|
|
53
52
|
readonly vault: string = ERC4626Config[dexKey][network].vault,
|
|
54
53
|
readonly asset: string = ERC4626Config[dexKey][network].asset,
|
|
55
|
-
readonly erc4626Interface: Interface = new Interface(
|
|
56
|
-
// Vault abi
|
|
57
|
-
...ERC4626_ABI,
|
|
58
|
-
// asset abi (specifically to handle Transfer to vault event)
|
|
59
|
-
...ERC20ABI,
|
|
60
|
-
]),
|
|
54
|
+
readonly erc4626Interface: Interface = new Interface(ERC4626_ABI),
|
|
61
55
|
) {
|
|
62
56
|
super(dexHelper, dexKey);
|
|
63
57
|
this.logger = dexHelper.getLogger(dexKey);
|
|
@@ -163,7 +157,13 @@ export class ERC4626
|
|
|
163
157
|
unit: BI_POWS[18],
|
|
164
158
|
prices: amounts.map(amount => calcFunction(amount, state)),
|
|
165
159
|
gasCost: isWrap ? 60000 : 70000,
|
|
166
|
-
data: {
|
|
160
|
+
data: {
|
|
161
|
+
exchange: `${this.vault}`,
|
|
162
|
+
state: {
|
|
163
|
+
totalShares: state.totalShares.toString(),
|
|
164
|
+
totalAssets: state.totalAssets.toString(),
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
167
|
poolAddresses: [this.vault],
|
|
168
168
|
exchange: this.dexKey,
|
|
169
169
|
},
|