@paraswap/dex-lib 3.10.3 → 3.11.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/{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/{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-v2/config.js +1 -1
- 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/inception/types.js +3 -0
- package/build/dex/inception/types.js.map +1 -0
- 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/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/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/balancer-v2/config.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/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/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
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Address } from '@paraswap/core';
|
|
2
|
-
import { IntegralFactory } from './integral-factory';
|
|
3
|
-
import { IntegralRelayer } from './integral-relayer';
|
|
4
|
-
import { Network } from '../../constants';
|
|
5
|
-
import { IDexHelper } from '../../dex-helper';
|
|
6
|
-
import { Logger } from 'log4js';
|
|
7
|
-
import { Interface } from '@ethersproject/abi';
|
|
8
|
-
import { IntegralPool, PoolInitProps, RelayerPoolState } from './types';
|
|
9
|
-
import { IntegralToken } from './integral-token';
|
|
10
|
-
export declare class IntegralContext {
|
|
11
|
-
readonly network: Network;
|
|
12
|
-
readonly dexKey: string;
|
|
13
|
-
readonly dexHelper: IDexHelper;
|
|
14
|
-
readonly erc20Interface: Interface;
|
|
15
|
-
readonly factoryAddress: Address;
|
|
16
|
-
readonly relayerAddress: Address;
|
|
17
|
-
static instances: {
|
|
18
|
-
[network: number]: IntegralContext;
|
|
19
|
-
};
|
|
20
|
-
pools: {
|
|
21
|
-
[poolId: string]: IntegralPool;
|
|
22
|
-
};
|
|
23
|
-
tokens: {
|
|
24
|
-
[tokenAddress: Address]: IntegralToken;
|
|
25
|
-
};
|
|
26
|
-
factory: IntegralFactory;
|
|
27
|
-
relayer: IntegralRelayer;
|
|
28
|
-
logger: Logger;
|
|
29
|
-
private constructor();
|
|
30
|
-
addPools(pools: PoolInitProps, blockNumber: number, initPhase?: boolean): Promise<void>;
|
|
31
|
-
getPoolAddresses(): string[];
|
|
32
|
-
private removeDisabledPoolInitProps;
|
|
33
|
-
static initialize(network: Network, dexKey: string, dexHelper: IDexHelper, erc20Interface: Interface, factoryAddress: Address, relayerAddress: Address): IntegralContext;
|
|
34
|
-
static getInstance(network: Network): IntegralContext;
|
|
35
|
-
onRelayerPoolEnabledSet(poolAddress: Address, state: RelayerPoolState, blockNumber: number): Promise<void>;
|
|
36
|
-
onRebalanceSellOrderExecuted(blockNumber: number, orderId: bigint): void;
|
|
37
|
-
onPoolCreatedAddPool(token0: Address, token1: Address, poolAddress: Address, blockNumber: number): Promise<void>;
|
|
38
|
-
onPoolSwapForRelayer(blockNumber: number, poolAddress: Address, recipient: Address, amount0Out: bigint, amount1Out: bigint): Promise<void>;
|
|
39
|
-
onTransferUpdateBalance(token: Address, from: Address, to: Address, amount: bigint, blockNumber: number): Promise<void>;
|
|
40
|
-
}
|
|
@@ -1,158 +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.IntegralContext = void 0;
|
|
7
|
-
const integral_pool_1 = require("./integral-pool");
|
|
8
|
-
const integral_pricing_1 = require("./integral-pricing");
|
|
9
|
-
const integral_factory_1 = require("./integral-factory");
|
|
10
|
-
const integral_relayer_1 = require("./integral-relayer");
|
|
11
|
-
const integral_token_1 = require("./integral-token");
|
|
12
|
-
const utils_1 = require("./utils");
|
|
13
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
14
|
-
class IntegralContext {
|
|
15
|
-
constructor(network, dexKey, dexHelper, erc20Interface, factoryAddress, relayerAddress) {
|
|
16
|
-
this.network = network;
|
|
17
|
-
this.dexKey = dexKey;
|
|
18
|
-
this.dexHelper = dexHelper;
|
|
19
|
-
this.erc20Interface = erc20Interface;
|
|
20
|
-
this.factoryAddress = factoryAddress;
|
|
21
|
-
this.relayerAddress = relayerAddress;
|
|
22
|
-
this.pools = {};
|
|
23
|
-
this.tokens = {};
|
|
24
|
-
this.logger = dexHelper.getLogger(dexKey);
|
|
25
|
-
this.factory = new integral_factory_1.IntegralFactory(dexHelper, dexKey, this.factoryAddress, this.onPoolCreatedAddPool, this.logger);
|
|
26
|
-
this.relayer = new integral_relayer_1.IntegralRelayer(dexHelper, dexKey, this.erc20Interface, this.relayerAddress, {}, this.onRelayerPoolEnabledSet, this.logger);
|
|
27
|
-
}
|
|
28
|
-
async addPools(pools, blockNumber, initPhase = false) {
|
|
29
|
-
this.relayer.addPools(pools);
|
|
30
|
-
if (initPhase) {
|
|
31
|
-
await this.relayer.initialize(blockNumber);
|
|
32
|
-
}
|
|
33
|
-
const _relayerState = this.relayer.getState(blockNumber);
|
|
34
|
-
const relayerState = _relayerState
|
|
35
|
-
? _relayerState
|
|
36
|
-
: await this.relayer.generateState(blockNumber);
|
|
37
|
-
if (!_relayerState) {
|
|
38
|
-
this.relayer.setState(relayerState, blockNumber);
|
|
39
|
-
}
|
|
40
|
-
const poolInitProps = this.removeDisabledPoolInitProps(relayerState, pools);
|
|
41
|
-
const bases = Object.entries(poolInitProps).map(([poolAddress, p]) => {
|
|
42
|
-
const poolId = (0, utils_1.getPoolIdentifier)(this.dexKey, p.token0, p.token1);
|
|
43
|
-
const base = (this.pools[poolId] && this.pools[poolId].base) ||
|
|
44
|
-
new integral_pool_1.IntegralEventPool(this.dexKey, this.network, this.dexHelper, poolAddress, p.token0, p.token1, this.logger);
|
|
45
|
-
this.pools[poolId] = { base, enabled: true };
|
|
46
|
-
return base;
|
|
47
|
-
});
|
|
48
|
-
await Promise.all(bases.map(base => !base.isInitialized && base.initialize(blockNumber)));
|
|
49
|
-
const pricings = await Promise.all(bases.map(async (base) => {
|
|
50
|
-
const _poolState = base.getState(blockNumber);
|
|
51
|
-
const poolState = _poolState
|
|
52
|
-
? _poolState
|
|
53
|
-
: await base.generateState(blockNumber);
|
|
54
|
-
const poolId = (0, utils_1.getPoolIdentifier)(this.dexKey, base.token0, base.token1);
|
|
55
|
-
const pricing = (this.pools[poolId] && this.pools[poolId].pricing) ||
|
|
56
|
-
new integral_pricing_1.IntegralPricing(this.dexHelper, poolId, this.erc20Interface, poolState.uniswapPool, base.token0, base.token1, poolState.uniswapPoolFee, this.logger, this.network);
|
|
57
|
-
this.pools[poolId].pricing = pricing;
|
|
58
|
-
return pricing;
|
|
59
|
-
}));
|
|
60
|
-
await Promise.all(pricings.map(pricing => !pricing.isInitialized && pricing.initialize(blockNumber)));
|
|
61
|
-
const initIntegralToken = (token) => new integral_token_1.IntegralToken(this.network, this.dexHelper, this.dexKey, this.erc20Interface, token, this.relayerAddress, this.onTransferUpdateBalance, this.logger);
|
|
62
|
-
bases.map(base => {
|
|
63
|
-
this.tokens[base.token0] =
|
|
64
|
-
this.tokens[base.token0] || initIntegralToken(base.token0);
|
|
65
|
-
this.tokens[base.token1] =
|
|
66
|
-
this.tokens[base.token1] || initIntegralToken(base.token1);
|
|
67
|
-
});
|
|
68
|
-
await Promise.all(Object.values(this.tokens).map(token => !token.isInitialized && token.initialize(blockNumber)));
|
|
69
|
-
}
|
|
70
|
-
getPoolAddresses() {
|
|
71
|
-
return Object.values(this.pools)
|
|
72
|
-
.filter((pool) => !!pool.base && pool.enabled)
|
|
73
|
-
.map(({ base }) => base.poolAddress);
|
|
74
|
-
}
|
|
75
|
-
removeDisabledPoolInitProps(state, props) {
|
|
76
|
-
Object.entries(state.pools).forEach(([poolAddress, poolState]) => !poolState.isEnabled && delete props[poolAddress]);
|
|
77
|
-
return props;
|
|
78
|
-
}
|
|
79
|
-
static initialize(network, dexKey, dexHelper, erc20Interface, factoryAddress, relayerAddress) {
|
|
80
|
-
if (!this.instances[network]) {
|
|
81
|
-
this.instances[network] = new IntegralContext(network, dexKey, dexHelper, erc20Interface, factoryAddress, relayerAddress);
|
|
82
|
-
}
|
|
83
|
-
return this.instances[network];
|
|
84
|
-
}
|
|
85
|
-
static getInstance(network) {
|
|
86
|
-
if (!this.instances[network]) {
|
|
87
|
-
throw new Error('IntegralContext instance not initialized');
|
|
88
|
-
}
|
|
89
|
-
return this.instances[network];
|
|
90
|
-
}
|
|
91
|
-
async onRelayerPoolEnabledSet(poolAddress, state, blockNumber) {
|
|
92
|
-
const poolEntry = (0, utils_1.getPoolBackReferencedFrom)(this, poolAddress);
|
|
93
|
-
if (state.isEnabled && (!poolEntry || !poolEntry[1].enabled)) {
|
|
94
|
-
const _factoryState = this.factory.getStaleState();
|
|
95
|
-
const factoryState = _factoryState
|
|
96
|
-
? _factoryState
|
|
97
|
-
: await this.factory.generateState(blockNumber);
|
|
98
|
-
const { token0, token1 } = factoryState.pools[poolAddress];
|
|
99
|
-
await this.addPools({ [poolAddress]: { token0, token1 } }, blockNumber);
|
|
100
|
-
}
|
|
101
|
-
else if (!state.isEnabled && poolEntry && poolEntry[1].enabled) {
|
|
102
|
-
this.pools[poolEntry[0]].enabled = false;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
onRebalanceSellOrderExecuted(blockNumber, orderId) {
|
|
106
|
-
this.relayer.executeOrder(orderId, blockNumber);
|
|
107
|
-
}
|
|
108
|
-
async onPoolCreatedAddPool(token0, token1, poolAddress, blockNumber) {
|
|
109
|
-
await this.addPools({ [poolAddress]: { token0, token1 } }, blockNumber);
|
|
110
|
-
}
|
|
111
|
-
async onPoolSwapForRelayer(blockNumber, poolAddress, recipient, amount0Out, amount1Out) {
|
|
112
|
-
if (recipient.toLowerCase() === this.relayerAddress.toLowerCase()) {
|
|
113
|
-
const pools = this.relayer.getPools();
|
|
114
|
-
if (pools[poolAddress.toLowerCase()]) {
|
|
115
|
-
const token0 = pools[poolAddress.toLowerCase()].token0;
|
|
116
|
-
const token1 = pools[poolAddress.toLowerCase()].token1;
|
|
117
|
-
let _state = this.relayer.getStaleState();
|
|
118
|
-
if (!_state) {
|
|
119
|
-
_state = await this.relayer.generateState(blockNumber);
|
|
120
|
-
this.relayer.setState(_state, blockNumber);
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
blockNumber = this.relayer.getStateBlockNumber();
|
|
125
|
-
}
|
|
126
|
-
const state = lodash_1.default.cloneDeep(_state);
|
|
127
|
-
if (amount1Out > 0n) {
|
|
128
|
-
state.tokens[token1].balance += amount1Out;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
state.tokens[token0].balance += amount0Out;
|
|
132
|
-
}
|
|
133
|
-
this.relayer.setState(state, blockNumber);
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
this.logger.error('Integral Relayer: Pool address not found for', poolAddress);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
async onTransferUpdateBalance(token, from, to, amount, blockNumber) {
|
|
141
|
-
let _state = this.relayer.getStaleState();
|
|
142
|
-
if (!_state) {
|
|
143
|
-
this.logger.error('Integral Token: Relayer stale state not found');
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
const state = lodash_1.default.cloneDeep(_state);
|
|
147
|
-
if (this.relayer.relayerAddress.toLowerCase() === from) {
|
|
148
|
-
state.tokens[token].balance -= amount;
|
|
149
|
-
}
|
|
150
|
-
else if (this.relayer.relayerAddress.toLowerCase() === to) {
|
|
151
|
-
state.tokens[token].balance += amount;
|
|
152
|
-
}
|
|
153
|
-
this.relayer.setState(state, blockNumber);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
exports.IntegralContext = IntegralContext;
|
|
157
|
-
IntegralContext.instances = {};
|
|
158
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/dex/integral/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { LogDescription } from 'ethers/lib/utils';
|
|
3
|
-
import { IDexHelper } from '../../dex-helper';
|
|
4
|
-
import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
|
|
5
|
-
import { Address, BlockHeader, Log, Logger } from '../../types';
|
|
6
|
-
import { FactoryState } from './types';
|
|
7
|
-
export declare type OnPoolCreatedCallback = (token0: Address, token1: Address, poolAddress: Address, blockNumber: number) => Promise<void>;
|
|
8
|
-
export declare class IntegralFactory extends StatefulEventSubscriber<FactoryState> {
|
|
9
|
-
readonly dexHelper: IDexHelper;
|
|
10
|
-
protected readonly factoryAddress: Address;
|
|
11
|
-
protected readonly onPoolCreated: OnPoolCreatedCallback;
|
|
12
|
-
handlers: {
|
|
13
|
-
[event: string]: (event: any, state: FactoryState, blockHeader: Readonly<BlockHeader>) => Promise<FactoryState>;
|
|
14
|
-
};
|
|
15
|
-
logDecoder: (log: Log) => any;
|
|
16
|
-
readonly factoryIface: Interface;
|
|
17
|
-
constructor(dexHelper: IDexHelper, parentName: string, factoryAddress: Address, onPoolCreated: OnPoolCreatedCallback, logger: Logger, mapKey?: string);
|
|
18
|
-
protected getPoolIdentifierData(): {
|
|
19
|
-
factory: string;
|
|
20
|
-
};
|
|
21
|
-
generateState(blockNumber?: number | 'latest'): Promise<FactoryState>;
|
|
22
|
-
protected processLog(state: FactoryState, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): Promise<FactoryState>;
|
|
23
|
-
handlePairCreated(event: LogDescription, state: FactoryState, blockHeader: Readonly<BlockHeader>): Promise<FactoryState>;
|
|
24
|
-
}
|
|
@@ -1,95 +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.IntegralFactory = void 0;
|
|
7
|
-
const abi_1 = require("@ethersproject/abi");
|
|
8
|
-
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
9
|
-
const factory_json_1 = __importDefault(require("../../abi/integral/factory.json"));
|
|
10
|
-
const pool_json_1 = __importDefault(require("../../abi/integral/pool.json"));
|
|
11
|
-
const decoders_1 = require("../../lib/decoders");
|
|
12
|
-
class IntegralFactory extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
13
|
-
constructor(dexHelper, parentName, factoryAddress, onPoolCreated, logger, mapKey = '') {
|
|
14
|
-
super(parentName, `${parentName} Factory`, dexHelper, logger, true, mapKey);
|
|
15
|
-
this.dexHelper = dexHelper;
|
|
16
|
-
this.factoryAddress = factoryAddress;
|
|
17
|
-
this.onPoolCreated = onPoolCreated;
|
|
18
|
-
this.handlers = {};
|
|
19
|
-
this.factoryIface = new abi_1.Interface(factory_json_1.default);
|
|
20
|
-
this.addressesSubscribed = [factoryAddress];
|
|
21
|
-
this.logDecoder = (log) => this.factoryIface.parseLog(log);
|
|
22
|
-
this.handlers['PairCreated'] = this.handlePairCreated.bind(this);
|
|
23
|
-
}
|
|
24
|
-
getPoolIdentifierData() {
|
|
25
|
-
return { factory: this.factoryAddress };
|
|
26
|
-
}
|
|
27
|
-
async generateState(blockNumber) {
|
|
28
|
-
const factory = new this.dexHelper.web3Provider.eth.Contract(factory_json_1.default, this.factoryAddress);
|
|
29
|
-
const poolCountResult = await factory.methods
|
|
30
|
-
.allPairsLength()
|
|
31
|
-
.call(undefined, blockNumber);
|
|
32
|
-
const poolCount = Number(poolCountResult);
|
|
33
|
-
const poolAddressCallDatas = [
|
|
34
|
-
...Array(poolCount),
|
|
35
|
-
].map((_, i) => {
|
|
36
|
-
return {
|
|
37
|
-
target: this.factoryAddress,
|
|
38
|
-
callData: factory.methods.allPairs(i).encodeABI(),
|
|
39
|
-
decodeFunction: decoders_1.addressDecode,
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
const poolAddresses = await this.dexHelper.multiWrapper.tryAggregate(false, poolAddressCallDatas, blockNumber, this.dexHelper.multiWrapper.defaultBatchSize, false);
|
|
43
|
-
const poolIface = new abi_1.Interface(pool_json_1.default);
|
|
44
|
-
const poolInfosCallDatas = poolAddresses
|
|
45
|
-
.map(poolAddress => {
|
|
46
|
-
return [
|
|
47
|
-
{
|
|
48
|
-
target: poolAddress.returnData,
|
|
49
|
-
callData: poolIface.encodeFunctionData('token0', []),
|
|
50
|
-
decodeFunction: decoders_1.addressDecode,
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
target: poolAddress.returnData,
|
|
54
|
-
callData: poolIface.encodeFunctionData('token1', []),
|
|
55
|
-
decodeFunction: decoders_1.addressDecode,
|
|
56
|
-
},
|
|
57
|
-
];
|
|
58
|
-
})
|
|
59
|
-
.flat();
|
|
60
|
-
const poolInfos = await this.dexHelper.multiWrapper.aggregate(poolInfosCallDatas, blockNumber);
|
|
61
|
-
const state = { pools: {} };
|
|
62
|
-
poolAddresses.forEach((poolAddress, i) => {
|
|
63
|
-
const tokens = [
|
|
64
|
-
poolInfos[i * 2].toLowerCase(),
|
|
65
|
-
poolInfos[i * 2 + 1].toLowerCase(),
|
|
66
|
-
];
|
|
67
|
-
state.pools[poolAddress.returnData.toLowerCase()] = {
|
|
68
|
-
token0: tokens[0],
|
|
69
|
-
token1: tokens[1],
|
|
70
|
-
};
|
|
71
|
-
});
|
|
72
|
-
return state;
|
|
73
|
-
}
|
|
74
|
-
async processLog(state, log, blockHeader) {
|
|
75
|
-
const event = this.logDecoder(log);
|
|
76
|
-
if (event.name in this.handlers) {
|
|
77
|
-
return await this.handlers[event.name](event, state, blockHeader);
|
|
78
|
-
}
|
|
79
|
-
return state;
|
|
80
|
-
}
|
|
81
|
-
async handlePairCreated(event, state, blockHeader) {
|
|
82
|
-
const tokens = [
|
|
83
|
-
event.args.token0.toLowerCase(),
|
|
84
|
-
event.args.token1.toLowerCase(),
|
|
85
|
-
];
|
|
86
|
-
state.pools[event.args.pair.toLowerCase()] = {
|
|
87
|
-
token0: tokens[0],
|
|
88
|
-
token1: tokens[1],
|
|
89
|
-
};
|
|
90
|
-
await this.onPoolCreated(tokens[0], tokens[1], event.args.pair.toLowerCase(), blockHeader.number);
|
|
91
|
-
return state;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
exports.IntegralFactory = IntegralFactory;
|
|
95
|
-
//# sourceMappingURL=integral-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integral-factory.js","sourceRoot":"","sources":["../../../src/dex/integral/integral-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { LogDescription } from 'ethers/lib/utils';
|
|
3
|
-
import { AsyncOrSync } from 'ts-essentials';
|
|
4
|
-
import { BlockHeader, Log, Logger } from '../../types';
|
|
5
|
-
import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
|
|
6
|
-
import { IDexHelper } from '../../dex-helper/idex-helper';
|
|
7
|
-
import { PoolState } from './types';
|
|
8
|
-
import { Address } from '../../types';
|
|
9
|
-
export declare class IntegralEventPool extends StatefulEventSubscriber<PoolState> {
|
|
10
|
-
parentName: string;
|
|
11
|
-
protected network: number;
|
|
12
|
-
protected dexHelper: IDexHelper;
|
|
13
|
-
protected poolIface: Interface;
|
|
14
|
-
handlers: {
|
|
15
|
-
[event: string]: (event: any, pool: PoolState, blockHeader: Readonly<BlockHeader>) => AsyncOrSync<PoolState>;
|
|
16
|
-
};
|
|
17
|
-
logDecoder: (log: Log) => any;
|
|
18
|
-
addressesSubscribed: string[];
|
|
19
|
-
readonly poolAddress: Address;
|
|
20
|
-
readonly token0: Address;
|
|
21
|
-
readonly token1: Address;
|
|
22
|
-
constructor(parentName: string, network: number, dexHelper: IDexHelper, poolAddress: Address, token0: Address, token1: Address, logger: Logger, poolIface?: Interface);
|
|
23
|
-
protected getPoolIdentifierData(): {
|
|
24
|
-
token0: string;
|
|
25
|
-
token1: string;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* The function is called every time any of the subscribed
|
|
29
|
-
* addresses release log. The function accepts the current
|
|
30
|
-
* state, updates the state according to the log, and returns
|
|
31
|
-
* the updated state.
|
|
32
|
-
* @param state - Current state of event subscriber
|
|
33
|
-
* @param log - Log released by one of the subscribed addresses
|
|
34
|
-
* @returns Updates state of the event subscriber after the log
|
|
35
|
-
*/
|
|
36
|
-
protected processLog(state: PoolState, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): Promise<PoolState | null>;
|
|
37
|
-
/**
|
|
38
|
-
* The function generates state using on-chain calls. This
|
|
39
|
-
* function is called to regenerate state if the event based
|
|
40
|
-
* system fails to fetch events and the local state is no
|
|
41
|
-
* more correct.
|
|
42
|
-
* @param blockNumber - Blocknumber for which the state should
|
|
43
|
-
* should be generated
|
|
44
|
-
* @returns state of the event subscriber at blocknumber
|
|
45
|
-
*/
|
|
46
|
-
generateState(blockNumber: number): Promise<Readonly<PoolState>>;
|
|
47
|
-
handleSetSwapFee(event: LogDescription, pool: PoolState): PoolState;
|
|
48
|
-
handleSetMintFee(event: LogDescription, pool: PoolState): PoolState;
|
|
49
|
-
handleSetBurnFee(event: LogDescription, pool: PoolState): PoolState;
|
|
50
|
-
}
|
|
@@ -1,149 +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.IntegralEventPool = void 0;
|
|
7
|
-
const abi_1 = require("@ethersproject/abi");
|
|
8
|
-
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
9
|
-
const pool_json_1 = __importDefault(require("../../abi/integral/pool.json"));
|
|
10
|
-
const oracle_json_1 = __importDefault(require("../../abi/integral/oracle.json"));
|
|
11
|
-
const UniswapV3Pool_abi_json_1 = __importDefault(require("../../abi/uniswap-v3/UniswapV3Pool.abi.json"));
|
|
12
|
-
const decoders_1 = require("../../lib/decoders");
|
|
13
|
-
const ethers_1 = require("ethers");
|
|
14
|
-
class IntegralEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
15
|
-
constructor(parentName, network, dexHelper, poolAddress, token0, token1, logger, poolIface = new abi_1.Interface(pool_json_1.default)) {
|
|
16
|
-
super(parentName, `${token0}_${token1}`, dexHelper, logger);
|
|
17
|
-
this.parentName = parentName;
|
|
18
|
-
this.network = network;
|
|
19
|
-
this.dexHelper = dexHelper;
|
|
20
|
-
this.poolIface = poolIface;
|
|
21
|
-
this.handlers = {};
|
|
22
|
-
this.token0 = token0.toLowerCase();
|
|
23
|
-
this.token1 = token1.toLowerCase();
|
|
24
|
-
this.poolAddress = poolAddress.toLowerCase();
|
|
25
|
-
this.logDecoder = (log) => this.poolIface.parseLog(log);
|
|
26
|
-
this.addressesSubscribed = [this.poolAddress];
|
|
27
|
-
this.handlers['SetSwapFee'] = this.handleSetSwapFee.bind(this);
|
|
28
|
-
this.handlers['SetMintFee'] = this.handleSetMintFee.bind(this);
|
|
29
|
-
this.handlers['SetBurnFee'] = this.handleSetBurnFee.bind(this);
|
|
30
|
-
}
|
|
31
|
-
getPoolIdentifierData() {
|
|
32
|
-
return {
|
|
33
|
-
token0: this.token0,
|
|
34
|
-
token1: this.token1,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* The function is called every time any of the subscribed
|
|
39
|
-
* addresses release log. The function accepts the current
|
|
40
|
-
* state, updates the state according to the log, and returns
|
|
41
|
-
* the updated state.
|
|
42
|
-
* @param state - Current state of event subscriber
|
|
43
|
-
* @param log - Log released by one of the subscribed addresses
|
|
44
|
-
* @returns Updates state of the event subscriber after the log
|
|
45
|
-
*/
|
|
46
|
-
async processLog(state, log, blockHeader) {
|
|
47
|
-
try {
|
|
48
|
-
const event = this.logDecoder(log);
|
|
49
|
-
if (event.name in this.handlers) {
|
|
50
|
-
return await this.handlers[event.name](event, state, blockHeader);
|
|
51
|
-
}
|
|
52
|
-
return state;
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
this.logger.error(`Error_${this.parentName}_processLog could not parse the log with topic ${log.topics}:`, e);
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* The function generates state using on-chain calls. This
|
|
61
|
-
* function is called to regenerate state if the event based
|
|
62
|
-
* system fails to fetch events and the local state is no
|
|
63
|
-
* more correct.
|
|
64
|
-
* @param blockNumber - Blocknumber for which the state should
|
|
65
|
-
* should be generated
|
|
66
|
-
* @returns state of the event subscriber at blocknumber
|
|
67
|
-
*/
|
|
68
|
-
async generateState(blockNumber) {
|
|
69
|
-
const state = {};
|
|
70
|
-
const pool = new this.dexHelper.web3Provider.eth.Contract(pool_json_1.default, this.poolAddress);
|
|
71
|
-
const poolInfoCallDatas = [
|
|
72
|
-
{
|
|
73
|
-
target: this.poolAddress,
|
|
74
|
-
callData: pool.methods.oracle().encodeABI(),
|
|
75
|
-
decodeFunction: decoders_1.addressDecode,
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
target: this.poolAddress,
|
|
79
|
-
callData: pool.methods.mintFee().encodeABI(),
|
|
80
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
target: this.poolAddress,
|
|
84
|
-
callData: pool.methods.burnFee().encodeABI(),
|
|
85
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
target: this.poolAddress,
|
|
89
|
-
callData: pool.methods.swapFee().encodeABI(),
|
|
90
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
91
|
-
},
|
|
92
|
-
];
|
|
93
|
-
const poolInfos = await this.dexHelper.multiWrapper.aggregate(poolInfoCallDatas, blockNumber);
|
|
94
|
-
const oracleAddress = poolInfos[0].toString();
|
|
95
|
-
state.mintFee = BigInt(poolInfos[1]);
|
|
96
|
-
state.burnFee = BigInt(poolInfos[2]);
|
|
97
|
-
state.swapFee = BigInt(poolInfos[3]);
|
|
98
|
-
state.oracle = oracleAddress;
|
|
99
|
-
const historyState = this.getStaleState();
|
|
100
|
-
if (!historyState) {
|
|
101
|
-
const oracle = new this.dexHelper.web3Provider.eth.Contract(oracle_json_1.default, oracleAddress);
|
|
102
|
-
const oracleInfosCallDatas = [
|
|
103
|
-
{
|
|
104
|
-
target: oracleAddress,
|
|
105
|
-
callData: oracle.methods.xDecimals().encodeABI(),
|
|
106
|
-
decodeFunction: decoders_1.uint8ToNumber,
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
target: oracleAddress,
|
|
110
|
-
callData: oracle.methods.yDecimals().encodeABI(),
|
|
111
|
-
decodeFunction: decoders_1.uint8ToNumber,
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
target: oracleAddress,
|
|
115
|
-
callData: oracle.methods.uniswapPair().encodeABI(),
|
|
116
|
-
decodeFunction: decoders_1.addressDecode,
|
|
117
|
-
},
|
|
118
|
-
];
|
|
119
|
-
const oracleInfos = await this.dexHelper.multiWrapper.aggregate(oracleInfosCallDatas, blockNumber);
|
|
120
|
-
state.uniswapPool = oracleInfos[2].toString();
|
|
121
|
-
state.decimals0 = Number(oracleInfos[0]);
|
|
122
|
-
state.decimals1 = Number(oracleInfos[1]);
|
|
123
|
-
const uniswapPool = new this.dexHelper.web3Provider.eth.Contract(UniswapV3Pool_abi_json_1.default, state.uniswapPool);
|
|
124
|
-
const fee = await uniswapPool.methods.fee().call(undefined, blockNumber);
|
|
125
|
-
state.uniswapPoolFee = BigInt(fee);
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
state.uniswapPool = historyState.uniswapPool;
|
|
129
|
-
state.decimals0 = historyState.decimals0;
|
|
130
|
-
state.decimals1 = historyState.decimals1;
|
|
131
|
-
state.uniswapPoolFee = historyState.uniswapPoolFee;
|
|
132
|
-
}
|
|
133
|
-
return state;
|
|
134
|
-
}
|
|
135
|
-
handleSetSwapFee(event, pool) {
|
|
136
|
-
pool.swapFee = BigInt(ethers_1.BigNumber.from(event.args.fee).toString());
|
|
137
|
-
return pool;
|
|
138
|
-
}
|
|
139
|
-
handleSetMintFee(event, pool) {
|
|
140
|
-
pool.mintFee = BigInt(ethers_1.BigNumber.from(event.args.fee).toString());
|
|
141
|
-
return pool;
|
|
142
|
-
}
|
|
143
|
-
handleSetBurnFee(event, pool) {
|
|
144
|
-
pool.burnFee = BigInt(ethers_1.BigNumber.from(event.args.fee).toString());
|
|
145
|
-
return pool;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
exports.IntegralEventPool = IntegralEventPool;
|
|
149
|
-
//# sourceMappingURL=integral-pool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integral-pool.js","sourceRoot":"","sources":["../../../src/dex/integral/integral-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { IDexHelper } from '../../dex-helper';
|
|
3
|
-
import { Address, Logger } from '../../types';
|
|
4
|
-
import { UniswapV3EventPool } from '../uniswap-v3/uniswap-v3-pool';
|
|
5
|
-
import { Network } from '../../constants';
|
|
6
|
-
import { PoolState } from '../uniswap-v3/types';
|
|
7
|
-
import { Observation } from './types';
|
|
8
|
-
import { MultiResult } from '../../lib/multi-wrapper';
|
|
9
|
-
import { BytesLike } from 'ethers';
|
|
10
|
-
export declare function decodeStateMultiCallResultWithObservation(result: MultiResult<BytesLike> | BytesLike): Observation;
|
|
11
|
-
export declare class IntegralPricing extends UniswapV3EventPool {
|
|
12
|
-
readonly dexHelper: IDexHelper;
|
|
13
|
-
private readonly providedPoolAddress;
|
|
14
|
-
constructor(dexHelper: IDexHelper, parentName: string, erc20Interface: Interface, poolAddress: Address, token0: Address, token1: Address, feeCode: bigint, logger: Logger, network: Network, mapKey?: string);
|
|
15
|
-
get poolAddress(): Address;
|
|
16
|
-
set poolAddress(_address: Address);
|
|
17
|
-
generateState(blockNumber: number): Promise<Readonly<PoolState>>;
|
|
18
|
-
}
|