@paraswap/dex-lib 4.1.10 → 4.1.11-erc-4626.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/ERC4626.json +757 -0
- package/build/abi/{integral/pool.json → inception/inception-ineth-pool.json} +558 -537
- package/build/abi/inception/inception-ratio-feed.json +329 -0
- package/build/abi/inception/inception-vault.json +991 -0
- package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
- package/build/abi/usual-m-smart-m/usualM.abi.json +483 -0
- package/build/abi/{integral/relayer.json → wombat/pool.json} +474 -721
- 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/balancer-v3/abi/balancerBatchRouter.d.ts +729 -0
- package/build/dex/balancer-v3/abi/balancerBatchRouter.js +732 -0
- package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +1 -0
- package/build/dex/balancer-v3/abi/balancerRouter.d.ts +1406 -0
- package/build/dex/balancer-v3/abi/balancerRouter.js +1175 -0
- package/build/dex/balancer-v3/abi/balancerRouter.js.map +1 -0
- package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +2081 -0
- package/build/dex/balancer-v3/abi/vaultExtension.V3.js +1851 -0
- package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +1 -0
- package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +34 -0
- package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +406 -0
- package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +1 -0
- package/build/dex/balancer-v3/gyroECLPPool.d.ts +11 -0
- package/build/dex/balancer-v3/gyroECLPPool.js +6 -0
- package/build/dex/balancer-v3/gyroECLPPool.js.map +1 -0
- package/build/dex/balancer-v3/utils.d.ts +2 -0
- package/build/dex/balancer-v3/utils.js +11 -0
- package/build/dex/balancer-v3/utils.js.map +1 -0
- package/build/dex/erc4626/config.d.ts +3 -0
- package/build/dex/erc4626/config.js +42 -0
- package/build/dex/erc4626/config.js.map +1 -0
- package/build/dex/erc4626/constants.d.ts +3 -0
- package/build/dex/erc4626/constants.js +7 -0
- package/build/dex/erc4626/constants.js.map +1 -0
- package/build/dex/erc4626/erc-4626-pool.d.ts +24 -0
- package/build/dex/erc4626/erc-4626-pool.js +92 -0
- package/build/dex/erc4626/erc-4626-pool.js.map +1 -0
- package/build/dex/erc4626/erc4626.d.ts +46 -0
- package/build/dex/erc4626/erc4626.js +247 -0
- package/build/dex/erc4626/erc4626.js.map +1 -0
- package/build/dex/erc4626/scripts/validate-state.d.ts +0 -0
- package/build/dex/erc4626/scripts/validate-state.js +146 -0
- package/build/dex/erc4626/scripts/validate-state.js.map +1 -0
- package/build/dex/erc4626/types.d.ts +18 -0
- package/build/dex/erc4626/types.js +11 -0
- package/build/dex/erc4626/types.js.map +1 -0
- package/build/dex/inception/config.d.ts +4 -0
- package/build/dex/inception/config.js +109 -0
- package/build/dex/inception/config.js.map +1 -0
- package/build/dex/inception/inception-event-pool.d.ts +16 -0
- package/build/dex/inception/inception-event-pool.js +49 -0
- package/build/dex/inception/inception-event-pool.js.map +1 -0
- package/build/dex/inception/inception.d.ts +43 -0
- package/build/dex/inception/inception.js +180 -0
- package/build/dex/inception/inception.js.map +1 -0
- package/build/dex/inception/tokens.d.ts +9 -0
- package/build/dex/inception/tokens.js +28 -0
- package/build/dex/inception/tokens.js.map +1 -0
- package/build/dex/inception/types.d.ts +22 -0
- package/build/dex/{m-token → inception}/types.js.map +1 -1
- package/build/dex/inception/utils.d.ts +7 -0
- package/build/dex/inception/utils.js +58 -0
- package/build/dex/inception/utils.js.map +1 -0
- package/build/dex/index.js +2 -2
- package/build/dex/index.js.map +1 -1
- package/build/dex/jarvis.d.ts +2 -1
- package/build/dex/jarvis.js +58 -0
- package/build/dex/jarvis.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/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.d.ts +1 -0
- 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-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-pricing.d.ts +4 -0
- package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
- package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
- package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
- package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
- package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
- package/build/dex/uniswap-v4/config.js +0 -43
- package/build/dex/uniswap-v4/config.js.map +1 -1
- package/build/dex/uniswap-v4/encoder.js +2 -12
- package/build/dex/uniswap-v4/encoder.js.map +1 -1
- package/build/dex/uniswap-v4/types.d.ts +2 -36
- package/build/dex/uniswap-v4/uniswap-v4.d.ts +6 -6
- package/build/dex/uniswap-v4/uniswap-v4.js +47 -29
- package/build/dex/uniswap-v4/uniswap-v4.js.map +1 -1
- package/build/dex/usual/usual-m-smart-m.d.ts +17 -0
- package/build/dex/usual/usual-m-smart-m.js +50 -0
- package/build/dex/usual/usual-m-smart-m.js.map +1 -0
- package/build/dex/usual-m-smart-m/config.d.ts +3 -0
- package/build/dex/usual-m-smart-m/config.js +13 -0
- package/build/dex/usual-m-smart-m/config.js.map +1 -0
- package/build/dex/usual-m-smart-m/types.d.ts +7 -0
- package/build/dex/usual-m-smart-m/types.js +3 -0
- package/build/dex/usual-m-smart-m/types.js.map +1 -0
- package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +35 -0
- package/build/dex/usual-m-smart-m/usual-m-smart-m.js +161 -0
- package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +1 -0
- package/build/dex/{m-token → usual-m-usd0}/config.d.ts +2 -2
- package/build/dex/usual-m-usd0/config.js +14 -0
- package/build/dex/usual-m-usd0/config.js.map +1 -0
- package/build/dex/usual-m-usd0/types.d.ts +8 -0
- package/build/dex/usual-m-usd0/types.js +3 -0
- package/build/dex/usual-m-usd0/types.js.map +1 -0
- package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +35 -0
- package/build/dex/usual-m-usd0/usual-m-usd0.js +159 -0
- package/build/dex/usual-m-usd0/usual-m-usd0.js.map +1 -0
- package/build/dex/zerox/index.d.ts +4 -26
- package/build/dex/zerox/index.js +50 -42
- package/build/dex/zerox/index.js.map +1 -1
- package/build/dex/zerox/types.d.ts +29 -0
- package/build/dex/zerox/types.js +8 -1
- package/build/dex/zerox/types.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/erc4626/config.ts +41 -0
- package/src/dex/{wusdm → erc4626}/constants.ts +2 -0
- package/src/dex/{wusdm/wusdm-pool.ts → erc4626/erc-4626-pool.ts} +38 -15
- package/src/dex/erc4626/erc4626-event.test.ts +134 -0
- package/src/dex/{wusdm/wusdm-integration.test.ts → erc4626/erc4626-integration.test.ts} +3 -3
- package/src/dex/{wusdm/wusdm.ts → erc4626/erc4626.ts} +69 -64
- package/src/dex/erc4626/old-events.test.ts +249 -0
- package/src/dex/erc4626/scripts/validate-state.ts +168 -0
- package/src/dex/{wusdm → erc4626}/types.ts +6 -6
- package/src/dex/index.ts +2 -2
- package/tests/constants-e2e.ts +1 -1
- package/.idea/aws.xml +0 -17
- package/.idea/codeStyles/Project.xml +0 -19
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/paraswap-dex-lib.iml +0 -9
- package/.idea/prettier.xml +0 -7
- package/.idea/vcs.xml +0 -6
- package/build/abi/integral/factory.json +0 -333
- package/build/abi/integral/oracle.json +0 -501
- package/build/abi/uniswap-v4/pool-manager.abi.json +0 -1366
- package/build/abi/uniswap-v4/state-view.abi.json +0 -365
- package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +0 -49
- package/build/dex/fluid-dex/fluid-dex-generate-pool.js +0 -104
- package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +0 -1
- package/build/dex/integral/config.d.ts +0 -4
- package/build/dex/integral/config.js +0 -20
- package/build/dex/integral/config.js.map +0 -1
- package/build/dex/integral/context.d.ts +0 -40
- package/build/dex/integral/context.js +0 -158
- package/build/dex/integral/context.js.map +0 -1
- package/build/dex/integral/integral-factory.d.ts +0 -24
- package/build/dex/integral/integral-factory.js +0 -95
- package/build/dex/integral/integral-factory.js.map +0 -1
- package/build/dex/integral/integral-pool.d.ts +0 -50
- package/build/dex/integral/integral-pool.js +0 -149
- package/build/dex/integral/integral-pool.js.map +0 -1
- package/build/dex/integral/integral-pricing.d.ts +0 -18
- package/build/dex/integral/integral-pricing.js +0 -114
- package/build/dex/integral/integral-pricing.js.map +0 -1
- package/build/dex/integral/integral-relayer.d.ts +0 -42
- package/build/dex/integral/integral-relayer.js +0 -192
- package/build/dex/integral/integral-relayer.js.map +0 -1
- package/build/dex/integral/integral-token.d.ts +0 -27
- package/build/dex/integral/integral-token.js +0 -59
- package/build/dex/integral/integral-token.js.map +0 -1
- package/build/dex/integral/integral.d.ts +0 -41
- package/build/dex/integral/integral.js +0 -376
- package/build/dex/integral/integral.js.map +0 -1
- package/build/dex/integral/types.d.ts +0 -85
- package/build/dex/integral/types.js +0 -9
- package/build/dex/integral/types.js.map +0 -1
- package/build/dex/integral/utils-e2e.d.ts +0 -9
- package/build/dex/integral/utils-e2e.js +0 -131
- package/build/dex/integral/utils-e2e.js.map +0 -1
- package/build/dex/integral/utils.d.ts +0 -17
- package/build/dex/integral/utils.js +0 -94
- package/build/dex/integral/utils.js.map +0 -1
- package/build/dex/m-token/config.js +0 -19
- package/build/dex/m-token/config.js.map +0 -1
- package/build/dex/m-token/m-token.d.ts +0 -29
- package/build/dex/m-token/m-token.js +0 -145
- package/build/dex/m-token/m-token.js.map +0 -1
- package/build/dex/m-token/m-wrapped-m.d.ts +0 -17
- package/build/dex/m-token/m-wrapped-m.js +0 -50
- package/build/dex/m-token/m-wrapped-m.js.map +0 -1
- package/build/dex/m-token/types.d.ts +0 -12
- package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
- package/build/dex/trader-joe-v2.1/optimizer.js +0 -47
- package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
- package/build/dex/uniswap-v4/constants.d.ts +0 -7
- package/build/dex/uniswap-v4/constants.js +0 -18
- package/build/dex/uniswap-v4/constants.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/BitMath.d.ts +0 -4
- package/build/dex/uniswap-v4/contract-math/BitMath.js +0 -93
- package/build/dex/uniswap-v4/contract-math/BitMath.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/FixedPoint128.d.ts +0 -3
- package/build/dex/uniswap-v4/contract-math/FixedPoint128.js +0 -8
- package/build/dex/uniswap-v4/contract-math/FixedPoint128.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/FixedPoint96.d.ts +0 -4
- package/build/dex/uniswap-v4/contract-math/FixedPoint96.js +0 -9
- package/build/dex/uniswap-v4/contract-math/FixedPoint96.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/FullMath.d.ts +0 -4
- package/build/dex/uniswap-v4/contract-math/FullMath.js +0 -19
- package/build/dex/uniswap-v4/contract-math/FullMath.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/LiquidityMath.d.ts +0 -3
- package/build/dex/uniswap-v4/contract-math/LiquidityMath.js +0 -22
- package/build/dex/uniswap-v4/contract-math/LiquidityMath.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.d.ts +0 -10
- package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.js +0 -91
- package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/SwapMath.d.ts +0 -8
- package/build/dex/uniswap-v4/contract-math/SwapMath.js +0 -70
- package/build/dex/uniswap-v4/contract-math/SwapMath.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/TickBitMap.d.ts +0 -7
- package/build/dex/uniswap-v4/contract-math/TickBitMap.js +0 -86
- package/build/dex/uniswap-v4/contract-math/TickBitMap.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/TickMath.d.ts +0 -8
- package/build/dex/uniswap-v4/contract-math/TickMath.js +0 -162
- package/build/dex/uniswap-v4/contract-math/TickMath.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/UnsafeMath.d.ts +0 -3
- package/build/dex/uniswap-v4/contract-math/UnsafeMath.js +0 -10
- package/build/dex/uniswap-v4/contract-math/UnsafeMath.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.d.ts +0 -8
- package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.js +0 -12
- package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.js.map +0 -1
- package/build/dex/uniswap-v4/subgraph.d.ts +0 -5
- package/build/dex/uniswap-v4/subgraph.js +0 -80
- package/build/dex/uniswap-v4/subgraph.js.map +0 -1
- package/build/dex/uniswap-v4/uniswap-v4-pool-manager.d.ts +0 -30
- package/build/dex/uniswap-v4/uniswap-v4-pool-manager.js +0 -139
- package/build/dex/uniswap-v4/uniswap-v4-pool-manager.js.map +0 -1
- package/build/dex/uniswap-v4/utils.d.ts +0 -2
- package/build/dex/uniswap-v4/utils.js +0 -15
- package/build/dex/uniswap-v4/utils.js.map +0 -1
- package/src/dex/wusdm/config.ts +0 -43
- package/src/dex/wusdm/wusdm-event.test.ts +0 -104
- /package/build/dex/{m-token → inception}/types.js +0 -0
- /package/src/abi/{wUSDM.json → ERC4626.json} +0 -0
- /package/src/dex/{wusdm/wusdm-e2e.test.ts → erc4626/erc4626-e2e.test.ts} +0 -0
- /package/src/dex/{wusdm/wusdm-gas-estimation.test.ts → erc4626/erc4626-gas-estimation.test.ts} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Address } from '@paraswap/sdk';
|
|
1
2
|
import { NumberAsString } from '../../types';
|
|
2
3
|
export declare enum OrderStatus {
|
|
3
4
|
INVALID = 0,
|
|
@@ -41,4 +42,32 @@ export interface ZeroXSignedOrderV4 {
|
|
|
41
42
|
signature: any;
|
|
42
43
|
}
|
|
43
44
|
export declare type ZeroXSignedOrder = ZeroXSignedOrderV2 | ZeroXSignedOrderV4;
|
|
45
|
+
export declare enum ZeroXFunctions {
|
|
46
|
+
swapOnZeroXv2 = "swapOnZeroXv2",
|
|
47
|
+
swapOnZeroXv4 = "swapOnZeroXv4",
|
|
48
|
+
swapOnZeroXv2WithPermit = "swapOnZeroXv2WithPermit",
|
|
49
|
+
swapOnZeroXv4WithPermit = "swapOnZeroXv4WithPermit"
|
|
50
|
+
}
|
|
51
|
+
export declare type ZeroXData = {
|
|
52
|
+
version: number;
|
|
53
|
+
order: ZeroXSignedOrder;
|
|
54
|
+
};
|
|
55
|
+
export declare type SwapOnZeroXParam = [
|
|
56
|
+
srcToken: Address,
|
|
57
|
+
destToken: Address,
|
|
58
|
+
srcAmount: NumberAsString,
|
|
59
|
+
destAmount: NumberAsString,
|
|
60
|
+
exchange: Address,
|
|
61
|
+
payload: string
|
|
62
|
+
];
|
|
63
|
+
export declare type SwapOnZeroXWithPermitParam = [
|
|
64
|
+
srcToken: Address,
|
|
65
|
+
destToken: Address,
|
|
66
|
+
srcAmount: NumberAsString,
|
|
67
|
+
destAmount: NumberAsString,
|
|
68
|
+
exchange: Address,
|
|
69
|
+
payload: string,
|
|
70
|
+
permit: string
|
|
71
|
+
];
|
|
72
|
+
export declare type ZeroXParam = SwapOnZeroXParam | SwapOnZeroXWithPermitParam;
|
|
44
73
|
export {};
|
package/build/dex/zerox/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OrderStatus = void 0;
|
|
3
|
+
exports.ZeroXFunctions = exports.OrderStatus = void 0;
|
|
4
4
|
var OrderStatus;
|
|
5
5
|
(function (OrderStatus) {
|
|
6
6
|
OrderStatus[OrderStatus["INVALID"] = 0] = "INVALID";
|
|
@@ -11,4 +11,11 @@ var OrderStatus;
|
|
|
11
11
|
OrderStatus[OrderStatus["FULLY_FILLED"] = 5] = "FULLY_FILLED";
|
|
12
12
|
OrderStatus[OrderStatus["CANCELLED"] = 6] = "CANCELLED";
|
|
13
13
|
})(OrderStatus = exports.OrderStatus || (exports.OrderStatus = {}));
|
|
14
|
+
var ZeroXFunctions;
|
|
15
|
+
(function (ZeroXFunctions) {
|
|
16
|
+
ZeroXFunctions["swapOnZeroXv2"] = "swapOnZeroXv2";
|
|
17
|
+
ZeroXFunctions["swapOnZeroXv4"] = "swapOnZeroXv4";
|
|
18
|
+
ZeroXFunctions["swapOnZeroXv2WithPermit"] = "swapOnZeroXv2WithPermit";
|
|
19
|
+
ZeroXFunctions["swapOnZeroXv4WithPermit"] = "swapOnZeroXv4WithPermit";
|
|
20
|
+
})(ZeroXFunctions = exports.ZeroXFunctions || (exports.ZeroXFunctions = {}));
|
|
14
21
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/zerox/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/zerox/types.ts"],"names":[],"mappings":";;;AAGA,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,mDAAO,CAAA;IACP,yFAA0B,CAAA;IAC1B,yFAA0B,CAAA;IAC1B,qDAAQ,CAAA;IACR,mDAAO,CAAA;IACP,6DAAY,CAAA;IACZ,uDAAS,CAAA;AACX,CAAC,EARW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAQtB;AAuCD,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,qEAAmD,CAAA;IACnD,qEAAmD,CAAA;AACrD,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ERC4626Params } from './types';
|
|
2
|
+
import { DexConfigMap } from '../../types';
|
|
3
|
+
import { Network } from '../../constants';
|
|
4
|
+
|
|
5
|
+
export const ERC4626Config: DexConfigMap<ERC4626Params> = {
|
|
6
|
+
wUSDM: {
|
|
7
|
+
[Network.MAINNET]: {
|
|
8
|
+
vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
|
|
9
|
+
asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
|
|
10
|
+
},
|
|
11
|
+
[Network.OPTIMISM]: {
|
|
12
|
+
vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
|
|
13
|
+
asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
|
|
14
|
+
},
|
|
15
|
+
[Network.ARBITRUM]: {
|
|
16
|
+
vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
|
|
17
|
+
asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
|
|
18
|
+
},
|
|
19
|
+
[Network.BASE]: {
|
|
20
|
+
vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
|
|
21
|
+
asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
|
|
22
|
+
},
|
|
23
|
+
[Network.POLYGON]: {
|
|
24
|
+
vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
|
|
25
|
+
asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
// might give 1wei difference on BUY
|
|
29
|
+
sDAI: {
|
|
30
|
+
[Network.GNOSIS]: {
|
|
31
|
+
vault: '0xaf204776c7245bF4147c2612BF6e5972Ee483701', // sDAI
|
|
32
|
+
asset: '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', // WXDAI
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
wUSDL: {
|
|
36
|
+
[Network.MAINNET]: {
|
|
37
|
+
vault: '0x7751E2F4b8ae93EF6B79d86419d42FE3295A4559', // wUSDL
|
|
38
|
+
asset: '0xbdC7c08592Ee4aa51D06C27Ee23D5087D65aDbcD', // USDL
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
@@ -2,3 +2,5 @@ export const WITHDRAW_TOPIC =
|
|
|
2
2
|
'0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db';
|
|
3
3
|
export const DEPOSIT_TOPIC =
|
|
4
4
|
'0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7';
|
|
5
|
+
export const TRANSFER_TOPIC =
|
|
6
|
+
'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
|
|
@@ -4,11 +4,11 @@ import { Interface } from '@ethersproject/abi';
|
|
|
4
4
|
import type { IDexHelper } from '../../dex-helper';
|
|
5
5
|
import type { DeepReadonly } from 'ts-essentials';
|
|
6
6
|
import type { Address, BlockHeader, Log, Logger } from '../../types';
|
|
7
|
-
import type {
|
|
7
|
+
import type { ERC4626PoolState } from './types';
|
|
8
8
|
import { uint256ToBigInt } from '../../lib/decoders';
|
|
9
9
|
import { Network } from '../../constants';
|
|
10
10
|
|
|
11
|
-
export class
|
|
11
|
+
export class ERC4626EventPool extends StatefulEventSubscriber<ERC4626PoolState> {
|
|
12
12
|
logDecoder: (log: Log) => any;
|
|
13
13
|
|
|
14
14
|
constructor(
|
|
@@ -16,23 +16,34 @@ export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
|
|
|
16
16
|
network: Network,
|
|
17
17
|
poolName: string,
|
|
18
18
|
protected dexHelper: IDexHelper,
|
|
19
|
-
private
|
|
19
|
+
private vault: Address,
|
|
20
|
+
private asset: Address,
|
|
20
21
|
private wrapperInterface: Interface,
|
|
21
22
|
logger: Logger,
|
|
22
23
|
private depositTopic: string,
|
|
23
24
|
private withdrawTopic: string,
|
|
25
|
+
private transferTopic: string,
|
|
24
26
|
) {
|
|
25
27
|
super(parentName, poolName, dexHelper, logger);
|
|
26
|
-
this.addressesSubscribed = [
|
|
28
|
+
this.addressesSubscribed = [vault, asset];
|
|
29
|
+
this.vault = vault.toLowerCase();
|
|
30
|
+
this.asset = asset.toLowerCase();
|
|
27
31
|
this.logDecoder = (log: Log) => this.wrapperInterface.parseLog(log);
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
protected async processLog(
|
|
31
|
-
state: DeepReadonly<
|
|
35
|
+
state: DeepReadonly<ERC4626PoolState>,
|
|
32
36
|
log: Readonly<Log>,
|
|
33
37
|
blockHeader: Readonly<BlockHeader>,
|
|
34
|
-
): Promise<DeepReadonly<
|
|
38
|
+
): Promise<DeepReadonly<ERC4626PoolState> | null> {
|
|
35
39
|
const event = this.logDecoder(log);
|
|
40
|
+
if (
|
|
41
|
+
log.topics[0] === this.transferTopic &&
|
|
42
|
+
log.address.toLowerCase() === this.asset &&
|
|
43
|
+
event.args.to.toLowerCase() === this.vault
|
|
44
|
+
) {
|
|
45
|
+
return this.handleAssetTransferToVault(event, state, log);
|
|
46
|
+
}
|
|
36
47
|
if (log.topics[0] === this.depositTopic) {
|
|
37
48
|
return this.handleDeposit(event, state, log);
|
|
38
49
|
}
|
|
@@ -44,15 +55,15 @@ export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
|
|
|
44
55
|
|
|
45
56
|
async generateState(
|
|
46
57
|
blockNumber: number | 'latest' = 'latest',
|
|
47
|
-
): Promise<DeepReadonly<
|
|
58
|
+
): Promise<DeepReadonly<ERC4626PoolState>> {
|
|
48
59
|
const calls = [
|
|
49
60
|
{
|
|
50
|
-
target: this.
|
|
61
|
+
target: this.vault,
|
|
51
62
|
callData: this.wrapperInterface.encodeFunctionData('totalAssets', []),
|
|
52
63
|
decodeFunction: uint256ToBigInt,
|
|
53
64
|
},
|
|
54
65
|
{
|
|
55
|
-
target: this.
|
|
66
|
+
target: this.vault,
|
|
56
67
|
callData: this.wrapperInterface.encodeFunctionData('totalSupply', []),
|
|
57
68
|
decodeFunction: uint256ToBigInt,
|
|
58
69
|
},
|
|
@@ -71,7 +82,7 @@ export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
|
|
|
71
82
|
};
|
|
72
83
|
}
|
|
73
84
|
|
|
74
|
-
async getOrGenerateState(blockNumber: number): Promise<
|
|
85
|
+
async getOrGenerateState(blockNumber: number): Promise<ERC4626PoolState> {
|
|
75
86
|
let state = this.getState(blockNumber);
|
|
76
87
|
if (!state) {
|
|
77
88
|
state = await this.generateState(blockNumber);
|
|
@@ -82,20 +93,32 @@ export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
|
|
|
82
93
|
|
|
83
94
|
async handleDeposit(
|
|
84
95
|
event: any,
|
|
85
|
-
state: DeepReadonly<
|
|
96
|
+
state: DeepReadonly<ERC4626PoolState>,
|
|
86
97
|
log: Readonly<Log>,
|
|
87
|
-
): Promise<DeepReadonly<
|
|
98
|
+
): Promise<DeepReadonly<ERC4626PoolState>> {
|
|
88
99
|
return {
|
|
89
|
-
|
|
100
|
+
// skip assets update, as it should be already handled in handleAssetTransferToVault
|
|
101
|
+
totalAssets: state.totalAssets,
|
|
90
102
|
totalShares: state.totalShares + BigInt(event.args.shares),
|
|
91
103
|
};
|
|
92
104
|
}
|
|
93
105
|
|
|
106
|
+
async handleAssetTransferToVault(
|
|
107
|
+
event: any,
|
|
108
|
+
state: DeepReadonly<ERC4626PoolState>,
|
|
109
|
+
log: Readonly<Log>,
|
|
110
|
+
): Promise<DeepReadonly<ERC4626PoolState>> {
|
|
111
|
+
return {
|
|
112
|
+
totalAssets: state.totalAssets + BigInt(event.args.value),
|
|
113
|
+
totalShares: state.totalShares,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
94
117
|
async handleWithdraw(
|
|
95
118
|
event: any,
|
|
96
|
-
state: DeepReadonly<
|
|
119
|
+
state: DeepReadonly<ERC4626PoolState>,
|
|
97
120
|
log: Readonly<Log>,
|
|
98
|
-
): Promise<DeepReadonly<
|
|
121
|
+
): Promise<DeepReadonly<ERC4626PoolState>> {
|
|
99
122
|
return {
|
|
100
123
|
totalAssets: BigInt(state.totalAssets) - BigInt(event.args.assets),
|
|
101
124
|
totalShares: BigInt(state.totalShares) - BigInt(event.args.shares),
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import dotenv from 'dotenv';
|
|
2
|
+
|
|
3
|
+
dotenv.config();
|
|
4
|
+
|
|
5
|
+
import { ERC4626EventPool } from './erc-4626-pool';
|
|
6
|
+
import { ERC4626Config } from './config';
|
|
7
|
+
import { Network } from '../../constants';
|
|
8
|
+
import { DummyDexHelper } from '../../dex-helper/index';
|
|
9
|
+
import ERC4626_ABI from '../../abi/ERC4626.json';
|
|
10
|
+
import ERC20ABI from '../../abi/erc20.json';
|
|
11
|
+
import { DEPOSIT_TOPIC, TRANSFER_TOPIC, WITHDRAW_TOPIC } from './constants';
|
|
12
|
+
import { testEventSubscriber } from '../../../tests/utils-events';
|
|
13
|
+
import { ERC4626PoolState } from './types';
|
|
14
|
+
|
|
15
|
+
import { Interface } from '@ethersproject/abi';
|
|
16
|
+
import _ from 'lodash';
|
|
17
|
+
|
|
18
|
+
jest.setTimeout(50 * 1000);
|
|
19
|
+
const networks = [
|
|
20
|
+
Network.MAINNET,
|
|
21
|
+
Network.ARBITRUM,
|
|
22
|
+
Network.BASE,
|
|
23
|
+
Network.POLYGON,
|
|
24
|
+
Network.OPTIMISM,
|
|
25
|
+
Network.GNOSIS,
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
async function fetchPoolState(
|
|
29
|
+
wusdmPool: ERC4626EventPool,
|
|
30
|
+
blockNumber: number,
|
|
31
|
+
): Promise<ERC4626PoolState> {
|
|
32
|
+
const eventState = wusdmPool.getState(blockNumber);
|
|
33
|
+
if (eventState) return eventState;
|
|
34
|
+
const onChainState = await wusdmPool.generateState(blockNumber);
|
|
35
|
+
wusdmPool.setState(onChainState, blockNumber);
|
|
36
|
+
return onChainState;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
describe('Wusdm', function () {
|
|
40
|
+
const dexKey = 'Wusdm';
|
|
41
|
+
const multichainBlockNumbers: {
|
|
42
|
+
[network: string]: { [eventName: string]: number[] };
|
|
43
|
+
} = {
|
|
44
|
+
[Network.MAINNET]: {
|
|
45
|
+
deposit: [20808811, 20692902, 20685702],
|
|
46
|
+
withdraw: [20873278, 20869272, 20862960],
|
|
47
|
+
},
|
|
48
|
+
[Network.ARBITRUM]: {
|
|
49
|
+
deposit: [259463653, 259456755, 259448821],
|
|
50
|
+
withdraw: [259421319, 259420791, 259419437],
|
|
51
|
+
},
|
|
52
|
+
[Network.BASE]: {
|
|
53
|
+
deposit: [20521934, 20460747, 20436449],
|
|
54
|
+
withdraw: [20492729, 20409282, 20274826],
|
|
55
|
+
},
|
|
56
|
+
[Network.POLYGON]: {
|
|
57
|
+
deposit: [62509681, 62359608, 62160587],
|
|
58
|
+
withdraw: [62505429, 62381506, 62125779],
|
|
59
|
+
},
|
|
60
|
+
[Network.OPTIMISM]: {
|
|
61
|
+
deposit: [126118678, 126116167, 126110439],
|
|
62
|
+
withdraw: [126113314, 126108196, 126107784],
|
|
63
|
+
},
|
|
64
|
+
[Network.GNOSIS]: {
|
|
65
|
+
deposit: [
|
|
66
|
+
38964215, 38964218, 38964219, 38964222, 38964224, 38964243, 38964244,
|
|
67
|
+
38964245, 38964247, 38964249, 38964253, 38964263, 38964303, 38964309,
|
|
68
|
+
38964311, 38964314,
|
|
69
|
+
],
|
|
70
|
+
withdraw: [
|
|
71
|
+
38964215, 38964218, 38964219, 38964221, 38964222, 38964224, 38964225,
|
|
72
|
+
38964230, 38964233, 38964236, 38964238, 38964243, 38964244, 38964245,
|
|
73
|
+
38964246, 38964277, 38964278, 38964279, 38964289, 38964294, 38964302,
|
|
74
|
+
38964309, 38964314,
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
networks.forEach(network => {
|
|
80
|
+
describe(`${network}`, function () {
|
|
81
|
+
const dexKey = network === Network.GNOSIS ? 'sDAI' : 'wUSDM';
|
|
82
|
+
|
|
83
|
+
const wUSDMAddress = ERC4626Config[dexKey][network].vault;
|
|
84
|
+
const USDMAddress = ERC4626Config[dexKey][network].asset;
|
|
85
|
+
|
|
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
|
+
]);
|
|
92
|
+
|
|
93
|
+
const blockNumbers = Array.from(
|
|
94
|
+
new Set(
|
|
95
|
+
Object.values(multichainBlockNumbers[network])
|
|
96
|
+
.flat()
|
|
97
|
+
.sort((a, b) => a - b),
|
|
98
|
+
),
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
blockNumbers.forEach((blockNumber: number) => {
|
|
102
|
+
it(`Should return the correct state after the ${blockNumber}`, async function () {
|
|
103
|
+
const dexHelper = new DummyDexHelper(network);
|
|
104
|
+
const logger = dexHelper.getLogger(dexKey);
|
|
105
|
+
|
|
106
|
+
const wusdmPool = new ERC4626EventPool(
|
|
107
|
+
dexKey,
|
|
108
|
+
network,
|
|
109
|
+
`wusdm-pool`,
|
|
110
|
+
dexHelper,
|
|
111
|
+
wUSDMAddress,
|
|
112
|
+
USDMAddress,
|
|
113
|
+
wUSDMIface,
|
|
114
|
+
logger,
|
|
115
|
+
DEPOSIT_TOPIC,
|
|
116
|
+
WITHDRAW_TOPIC,
|
|
117
|
+
TRANSFER_TOPIC,
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
// await wusdmPool.initialize(blockNumber - 1);
|
|
121
|
+
|
|
122
|
+
await testEventSubscriber(
|
|
123
|
+
wusdmPool,
|
|
124
|
+
wusdmPool.addressesSubscribed,
|
|
125
|
+
(_blockNumber: number) => fetchPoolState(wusdmPool, _blockNumber),
|
|
126
|
+
blockNumber,
|
|
127
|
+
`${dexKey}_${wUSDMAddress}`,
|
|
128
|
+
dexHelper.provider,
|
|
129
|
+
);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
@@ -5,7 +5,7 @@ dotenv.config();
|
|
|
5
5
|
import { DummyDexHelper } from '../../dex-helper/index';
|
|
6
6
|
import { Network, SwapSide } from '../../constants';
|
|
7
7
|
import { BI_POWS } from '../../bigint-constants';
|
|
8
|
-
import {
|
|
8
|
+
import { ERC4626 } from './erc4626';
|
|
9
9
|
import { checkPoolPrices, checkPoolsLiquidity } from '../../../tests/utils';
|
|
10
10
|
import { Tokens } from '../../../tests/constants-e2e';
|
|
11
11
|
|
|
@@ -29,12 +29,12 @@ describe('WUSDM', function () {
|
|
|
29
29
|
const amounts = [0n, BI_POWS[18], 2000000000000000000n];
|
|
30
30
|
let dexHelper: DummyDexHelper;
|
|
31
31
|
let blocknumber: number;
|
|
32
|
-
let wusdm:
|
|
32
|
+
let wusdm: ERC4626;
|
|
33
33
|
|
|
34
34
|
beforeAll(async () => {
|
|
35
35
|
dexHelper = new DummyDexHelper(network);
|
|
36
36
|
blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
|
|
37
|
-
wusdm = new
|
|
37
|
+
wusdm = new ERC4626(network, dexKey, dexHelper);
|
|
38
38
|
if (wusdm.initializePricing) {
|
|
39
39
|
await wusdm.initializePricing(blocknumber);
|
|
40
40
|
}
|