@paraswap/dex-lib 2.12.11 → 2.12.12-rfqtests.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/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/.vscode/launch.json +21 -0
- package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
- package/build/dex/aave-v3/tokens/avalanche.json +50 -0
- package/build/dex/aave-v3/tokens/fantom.json +62 -0
- package/build/dex/aave-v3/tokens/mainnet.json +44 -0
- package/build/dex/aave-v3/tokens/optimism.json +50 -0
- package/build/dex/aave-v3/tokens/polygon.json +98 -0
- package/build/dex/balancer-v2/VirtualBoostedPool.d.ts +79 -0
- package/build/dex/balancer-v2/VirtualBoostedPool.js +382 -0
- package/build/dex/balancer-v2/VirtualBoostedPool.js.map +1 -0
- package/build/dex/generic-rfq/validators.d.ts +1 -1
- package/build/dex/generic-rfq/validators.js +36 -26
- package/build/dex/generic-rfq/validators.js.map +1 -1
- package/build/dex/test-aave-v3/config.d.ts +4 -0
- package/build/dex/test-aave-v3/config.js +15 -0
- package/build/dex/test-aave-v3/config.js.map +1 -0
- package/build/dex/test-aave-v3/test-aave-v3-pool.d.ts +39 -0
- package/build/dex/test-aave-v3/test-aave-v3-pool.js +63 -0
- package/build/dex/test-aave-v3/test-aave-v3-pool.js.map +1 -0
- package/build/dex/test-aave-v3/test-aave-v3.d.ts +37 -0
- package/build/dex/test-aave-v3/test-aave-v3.js +126 -0
- package/build/dex/test-aave-v3/test-aave-v3.js.map +1 -0
- package/build/dex/test-aave-v3/types.d.ts +6 -0
- package/build/dex/{maverick → test-aave-v3}/types.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/generic-rfq/generic-rfq-e2e-arbitrum.test.ts +360 -0
- package/src/dex/generic-rfq/generic-rfq-e2e-bsc.test.ts +346 -0
- package/src/dex/generic-rfq/generic-rfq-e2e-polygon.test.ts +360 -0
- package/src/dex/generic-rfq/generic-rfq-e2e.test.ts +85 -71
- package/src/dex/generic-rfq/validators.test.ts +6 -32
- package/src/dex/generic-rfq/validators.ts +57 -32
- package/tests/constants-e2e.ts +2 -0
- package/tests/utils-e2e.ts +59 -48
- package/build/abi/maverick/pool.json +0 -913
- package/build/abi/maverick/router.json +0 -703
- package/build/dex/maverick/config.d.ts +0 -4
- package/build/dex/maverick/config.js +0 -20
- package/build/dex/maverick/config.js.map +0 -1
- package/build/dex/maverick/maverick-math/maverick-pool-math.d.ts +0 -67
- package/build/dex/maverick/maverick-math/maverick-pool-math.js +0 -406
- package/build/dex/maverick/maverick-math/maverick-pool-math.js.map +0 -1
- package/build/dex/maverick/maverick-math/maverick-sol-math.d.ts +0 -17
- package/build/dex/maverick/maverick-math/maverick-sol-math.js +0 -139
- package/build/dex/maverick/maverick-math/maverick-sol-math.js.map +0 -1
- package/build/dex/maverick/maverick-pool.d.ts +0 -41
- package/build/dex/maverick/maverick-pool.js +0 -130
- package/build/dex/maverick/maverick-pool.js.map +0 -1
- package/build/dex/maverick/maverick.d.ts +0 -42
- package/build/dex/maverick/maverick.js +0 -174
- package/build/dex/maverick/maverick.js.map +0 -1
- package/build/dex/maverick/subgraph-queries.d.ts +0 -4
- package/build/dex/maverick/subgraph-queries.js +0 -114
- package/build/dex/maverick/subgraph-queries.js.map +0 -1
- package/build/dex/maverick/types.d.ts +0 -46
- /package/build/dex/{maverick → test-aave-v3}/types.js +0 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VirtualBoostedPool = void 0;
|
|
4
|
+
const address_1 = require("@ethersproject/address");
|
|
5
|
+
const LinearPool_1 = require("./LinearPool");
|
|
6
|
+
const PhantomStablePool_1 = require("./PhantomStablePool");
|
|
7
|
+
const balancer_v2_1 = require("./balancer-v2");
|
|
8
|
+
/*
|
|
9
|
+
VirtualBoostedPools are groups of pools that are connected in a pre-defined way.
|
|
10
|
+
Having a VirtualPool allows complexity of swapping between underlying tokens to be simplified/abstracted away as paths are already known and coded.
|
|
11
|
+
i.e. a VirtualBoostedPool exists consisting of Linear USDC/DAI/USDT pools connected with the bb-a-USDC PhantomStable, this VirtualPool shows its token list as USDC/DAI/USDT
|
|
12
|
+
*/
|
|
13
|
+
class VirtualBoostedPool {
|
|
14
|
+
constructor(vaultAddress, vaultInterface, linearPoolInterface, metaStablePoolInterface) {
|
|
15
|
+
this.vaultAddress = vaultAddress;
|
|
16
|
+
this.vaultInterface = vaultInterface;
|
|
17
|
+
this.linearPoolInterface = linearPoolInterface;
|
|
18
|
+
this.phantomStablePoolInterface = metaStablePoolInterface;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates VirtualBoostedPools from list of input pools. A VirtualBoostedPool is a combination of Linear pools nested in a PhantomStable pool. i.e. bb-a-USD.
|
|
22
|
+
* @param pools Array of subgraph pools (should contain Phantom/Linear pools of interest)
|
|
23
|
+
* @returns Array of VirtualBoosted subgraph pools. Dictionary object of virtualBoosted pool data.
|
|
24
|
+
*/
|
|
25
|
+
static createPools(pools) {
|
|
26
|
+
const subgraph = [];
|
|
27
|
+
const boostedPools = {};
|
|
28
|
+
const phantomPools = [];
|
|
29
|
+
const linearDict = {};
|
|
30
|
+
// Create an initial list of phantom pools and dictionary of Linear pools.
|
|
31
|
+
pools.forEach(p => {
|
|
32
|
+
// Covers ERC4626 & Aave Linear Pools
|
|
33
|
+
if (p.poolType.includes('Linear'))
|
|
34
|
+
linearDict[p.address] = p;
|
|
35
|
+
else if (p.poolType === balancer_v2_1.BalancerPoolTypes.StablePhantom) {
|
|
36
|
+
phantomPools.push(p);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
// Create a boostedPool for each phantom that consists of Linear BPTs.
|
|
40
|
+
phantomPools.forEach(phantomPool => {
|
|
41
|
+
const mainTokens = [];
|
|
42
|
+
const isBoosted = phantomPool.tokens.every(t => {
|
|
43
|
+
if (t.address === phantomPool.address)
|
|
44
|
+
return true;
|
|
45
|
+
// Phantom pools contain their own BPT in tokens list
|
|
46
|
+
else if (linearDict[t.address]) {
|
|
47
|
+
// mainToken are the underlying mainTokens of the Linear Pools and will be seen as the tokens the VirtualPool contains.
|
|
48
|
+
// i.e.bb - a - USD VirtualBoostedPool will look like it has USDC, DAI, USDT and bb - a - USD_bpt
|
|
49
|
+
mainTokens.push({
|
|
50
|
+
address: linearDict[t.address].tokens[linearDict[t.address].mainIndex]
|
|
51
|
+
.address,
|
|
52
|
+
decimals: linearDict[t.address].tokens[linearDict[t.address].mainIndex]
|
|
53
|
+
.decimals,
|
|
54
|
+
linearPoolAddr: t.address,
|
|
55
|
+
linearPoolId: linearDict[t.address].id,
|
|
56
|
+
});
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
else
|
|
60
|
+
return false; // BoostedPools must consist of Phantom + Linear
|
|
61
|
+
});
|
|
62
|
+
if (isBoosted) {
|
|
63
|
+
// phantomStablePoolAddr is the PhantomStablePool connecting all LinearPools
|
|
64
|
+
boostedPools[phantomPool.id] = {
|
|
65
|
+
mainTokens,
|
|
66
|
+
phantomStablePoolAddr: phantomPool.address,
|
|
67
|
+
};
|
|
68
|
+
subgraph.push({
|
|
69
|
+
id: phantomPool.id + this.poolType.toLowerCase(),
|
|
70
|
+
address: phantomPool.address,
|
|
71
|
+
poolType: this.poolType,
|
|
72
|
+
tokens: mainTokens,
|
|
73
|
+
mainIndex: 0,
|
|
74
|
+
wrappedIndex: 0,
|
|
75
|
+
totalLiquidity: phantomPool.totalLiquidity,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return { dictionary: boostedPools, subgraph };
|
|
80
|
+
}
|
|
81
|
+
/*
|
|
82
|
+
Creates multicall data for a VirtualBoostedPool which can be passed to multicall contract.
|
|
83
|
+
Retrieves following onchain data:
|
|
84
|
+
PhantomStable - scaling factors, amp (assumes poolTokens and swapFee are constructed elsewhere)
|
|
85
|
+
LinearPools - (for each Linear Pool) pooltokens/balances, swapFee, scalingfactors, main/wrapped/bpt indices, targets
|
|
86
|
+
*/
|
|
87
|
+
getOnChainCalls(pool, virtualBoostedPools) {
|
|
88
|
+
// Add calls for PhantomStable Pool
|
|
89
|
+
const poolCallData = [];
|
|
90
|
+
// Add pool tokens for upper PhantomStablePool
|
|
91
|
+
const poolAddress = pool.address.split(VirtualBoostedPool.poolType.toLowerCase())[0];
|
|
92
|
+
poolCallData.push({
|
|
93
|
+
target: this.vaultAddress,
|
|
94
|
+
callData: this.vaultInterface.encodeFunctionData('getPoolTokens', [
|
|
95
|
+
pool.id.split(VirtualBoostedPool.poolType.toLowerCase())[0],
|
|
96
|
+
]),
|
|
97
|
+
});
|
|
98
|
+
// Add swap fee for upper PhantomStablePool
|
|
99
|
+
poolCallData.push({
|
|
100
|
+
target: poolAddress,
|
|
101
|
+
callData: this.phantomStablePoolInterface.encodeFunctionData('getSwapFeePercentage'),
|
|
102
|
+
});
|
|
103
|
+
// Add scaling factors for upper PhantomStablePool
|
|
104
|
+
poolCallData.push({
|
|
105
|
+
target: poolAddress,
|
|
106
|
+
callData: this.phantomStablePoolInterface.encodeFunctionData('getScalingFactors'),
|
|
107
|
+
});
|
|
108
|
+
// Add amp parameter for upper PhantomStable Pool
|
|
109
|
+
poolCallData.push({
|
|
110
|
+
target: poolAddress,
|
|
111
|
+
callData: this.phantomStablePoolInterface.encodeFunctionData('getAmplificationParameter'),
|
|
112
|
+
});
|
|
113
|
+
// Add calls for each linear pool
|
|
114
|
+
virtualBoostedPools[pool.id.split(VirtualBoostedPool.poolType.toLowerCase())[0]].mainTokens.forEach(mt => {
|
|
115
|
+
poolCallData.push({
|
|
116
|
+
target: this.vaultAddress,
|
|
117
|
+
callData: this.vaultInterface.encodeFunctionData('getPoolTokens', [
|
|
118
|
+
mt.linearPoolId,
|
|
119
|
+
]),
|
|
120
|
+
});
|
|
121
|
+
poolCallData.push({
|
|
122
|
+
target: mt.linearPoolAddr,
|
|
123
|
+
callData: this.linearPoolInterface.encodeFunctionData('getSwapFeePercentage'),
|
|
124
|
+
});
|
|
125
|
+
poolCallData.push({
|
|
126
|
+
target: mt.linearPoolAddr,
|
|
127
|
+
callData: this.linearPoolInterface.encodeFunctionData('getScalingFactors'),
|
|
128
|
+
});
|
|
129
|
+
poolCallData.push({
|
|
130
|
+
target: mt.linearPoolAddr,
|
|
131
|
+
callData: this.linearPoolInterface.encodeFunctionData('getMainIndex'),
|
|
132
|
+
});
|
|
133
|
+
poolCallData.push({
|
|
134
|
+
target: mt.linearPoolAddr,
|
|
135
|
+
callData: this.linearPoolInterface.encodeFunctionData('getWrappedIndex'),
|
|
136
|
+
});
|
|
137
|
+
poolCallData.push({
|
|
138
|
+
target: mt.linearPoolAddr,
|
|
139
|
+
callData: this.linearPoolInterface.encodeFunctionData('getBptIndex'),
|
|
140
|
+
});
|
|
141
|
+
// returns lowerTarget, upperTarget
|
|
142
|
+
poolCallData.push({
|
|
143
|
+
target: mt.linearPoolAddr,
|
|
144
|
+
callData: this.linearPoolInterface.encodeFunctionData('getTargets'),
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
return poolCallData;
|
|
148
|
+
}
|
|
149
|
+
/*
|
|
150
|
+
Decodes multicall data for a VirtualBoostedPool.
|
|
151
|
+
data must contain returnData
|
|
152
|
+
startIndex is where to start in returnData. Allows this decode function to be called along with other pool types.
|
|
153
|
+
*/
|
|
154
|
+
decodeOnChainCalls(pool, data, startIndex, boostedPools) {
|
|
155
|
+
const linearPool = new LinearPool_1.LinearPool(this.vaultAddress, this.vaultInterface, this.linearPoolInterface);
|
|
156
|
+
const phantomStablePool = new PhantomStablePool_1.PhantomStablePool(this.vaultAddress, this.vaultInterface, this.phantomStablePoolInterface);
|
|
157
|
+
// TO DO - Change to use decodeThrowError
|
|
158
|
+
const pools = {};
|
|
159
|
+
const poolTokens = this.vaultInterface.decodeFunctionResult('getPoolTokens', data[startIndex++].returnData);
|
|
160
|
+
const swapFee = this.phantomStablePoolInterface.decodeFunctionResult('getSwapFeePercentage', data[startIndex++].returnData)[0];
|
|
161
|
+
const scalingFactors = this.phantomStablePoolInterface.decodeFunctionResult('getScalingFactors', data[startIndex++].returnData)[0];
|
|
162
|
+
const amp = this.phantomStablePoolInterface.decodeFunctionResult('getAmplificationParameter', data[startIndex++].returnData);
|
|
163
|
+
const poolState = {
|
|
164
|
+
swapFee: BigInt(swapFee.toString()),
|
|
165
|
+
tokens: poolTokens.tokens.reduce((ptAcc, pt, j) => {
|
|
166
|
+
const tokenState = {
|
|
167
|
+
balance: BigInt(poolTokens.balances[j].toString()),
|
|
168
|
+
};
|
|
169
|
+
if (scalingFactors)
|
|
170
|
+
tokenState.scalingFactor = BigInt(scalingFactors[j].toString());
|
|
171
|
+
ptAcc[pt.toLowerCase()] = tokenState;
|
|
172
|
+
return ptAcc;
|
|
173
|
+
}, {}),
|
|
174
|
+
gasCost: linearPool.gasCost * 2 + phantomStablePool.gasCost, // Linear <> Phantom <> Linear
|
|
175
|
+
};
|
|
176
|
+
poolState.amp = BigInt(amp.value.toString());
|
|
177
|
+
pools[pool.address.toLowerCase()] = poolState;
|
|
178
|
+
// Save PhantomStable pool state
|
|
179
|
+
const phantomStableAddr = pool.address
|
|
180
|
+
.split(VirtualBoostedPool.poolType.toLowerCase())[0]
|
|
181
|
+
.toLowerCase();
|
|
182
|
+
pools[phantomStableAddr] = poolState;
|
|
183
|
+
pools[phantomStableAddr].gasCost = phantomStablePool.gasCost;
|
|
184
|
+
boostedPools[pool.id.split(VirtualBoostedPool.poolType.toLowerCase())[0]].mainTokens.forEach(mt => {
|
|
185
|
+
const poolTokens = this.vaultInterface.decodeFunctionResult('getPoolTokens', data[startIndex++].returnData);
|
|
186
|
+
const swapFee = this.linearPoolInterface.decodeFunctionResult('getSwapFeePercentage', data[startIndex++].returnData)[0];
|
|
187
|
+
const scalingFactors = this.linearPoolInterface.decodeFunctionResult('getScalingFactors', data[startIndex++].returnData)[0];
|
|
188
|
+
const mainIndex = this.linearPoolInterface.decodeFunctionResult('getMainIndex', data[startIndex++].returnData);
|
|
189
|
+
const wrappedIndex = this.linearPoolInterface.decodeFunctionResult('getWrappedIndex', data[startIndex++].returnData);
|
|
190
|
+
const bptIndex = this.linearPoolInterface.decodeFunctionResult('getBptIndex', data[startIndex++].returnData);
|
|
191
|
+
const [lowerTarget, upperTarget] = this.linearPoolInterface.decodeFunctionResult('getTargets', data[startIndex++].returnData);
|
|
192
|
+
const poolState = {
|
|
193
|
+
swapFee: BigInt(swapFee.toString()),
|
|
194
|
+
mainIndex: Number(mainIndex),
|
|
195
|
+
wrappedIndex: Number(wrappedIndex),
|
|
196
|
+
bptIndex: Number(bptIndex),
|
|
197
|
+
lowerTarget: BigInt(lowerTarget.toString()),
|
|
198
|
+
upperTarget: BigInt(upperTarget.toString()),
|
|
199
|
+
tokens: poolTokens.tokens.reduce((ptAcc, pt, j) => {
|
|
200
|
+
const tokenState = {
|
|
201
|
+
balance: BigInt(poolTokens.balances[j].toString()),
|
|
202
|
+
};
|
|
203
|
+
if (scalingFactors)
|
|
204
|
+
tokenState.scalingFactor = BigInt(scalingFactors[j].toString());
|
|
205
|
+
ptAcc[pt.toLowerCase()] = tokenState;
|
|
206
|
+
return ptAcc;
|
|
207
|
+
}, {}),
|
|
208
|
+
gasCost: linearPool.gasCost,
|
|
209
|
+
};
|
|
210
|
+
pools[mt.linearPoolAddr] = poolState;
|
|
211
|
+
});
|
|
212
|
+
return [pools, startIndex];
|
|
213
|
+
}
|
|
214
|
+
// Finds the address and poolType the tokenAddr belongs to
|
|
215
|
+
static getTokenPool(phantomPoolAddr, phantomPoolId, tokenAddr, boostedPools) {
|
|
216
|
+
if ((0, address_1.getAddress)(phantomPoolAddr) === (0, address_1.getAddress)(tokenAddr))
|
|
217
|
+
return {
|
|
218
|
+
address: phantomPoolAddr,
|
|
219
|
+
type: 'StablePhantom',
|
|
220
|
+
id: phantomPoolId,
|
|
221
|
+
};
|
|
222
|
+
const boostedPool = boostedPools[phantomPoolId];
|
|
223
|
+
const index = boostedPool.mainTokens.findIndex(t => (0, address_1.getAddress)(t.address) === (0, address_1.getAddress)(tokenAddr));
|
|
224
|
+
if (index < 0)
|
|
225
|
+
throw Error('Token missing');
|
|
226
|
+
return {
|
|
227
|
+
address: boostedPool.mainTokens[index].linearPoolAddr,
|
|
228
|
+
type: 'Linear',
|
|
229
|
+
id: boostedPool.mainTokens[index].linearPoolId,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/*
|
|
233
|
+
Helper function to parse pool data into params for onSell function.
|
|
234
|
+
*/
|
|
235
|
+
parsePoolPairData(pool, poolStates, tokenIn, tokenOut, boostedPools) {
|
|
236
|
+
const linearPool = new LinearPool_1.LinearPool(this.vaultAddress, this.vaultInterface, this.linearPoolInterface);
|
|
237
|
+
const phantomStablePool = new PhantomStablePool_1.PhantomStablePool(this.vaultAddress, this.vaultInterface, this.phantomStablePoolInterface);
|
|
238
|
+
const poolPairData = {
|
|
239
|
+
tokenIn,
|
|
240
|
+
tokenOut,
|
|
241
|
+
phantomPoolId: pool.id.split(VirtualBoostedPool.poolType.toLowerCase())[0],
|
|
242
|
+
poolStates,
|
|
243
|
+
boostedPools,
|
|
244
|
+
gasCost: linearPool.gasCost * 2 + phantomStablePool.gasCost,
|
|
245
|
+
};
|
|
246
|
+
return poolPairData;
|
|
247
|
+
}
|
|
248
|
+
checkBalance(amounts, unitVolume, side, poolPairData) {
|
|
249
|
+
// Limited by last Linear Pool main token balance. LinearIn > BPT is ~unlimited. PhantomStable has no swap limit.
|
|
250
|
+
const phantomPoolAddr = poolPairData.boostedPools[poolPairData.phantomPoolId]
|
|
251
|
+
.phantomStablePoolAddr;
|
|
252
|
+
if (!phantomPoolAddr)
|
|
253
|
+
false;
|
|
254
|
+
const poolOut = VirtualBoostedPool.getTokenPool(phantomPoolAddr, poolPairData.phantomPoolId, poolPairData.tokenOut, poolPairData.boostedPools);
|
|
255
|
+
const linearPool = new LinearPool_1.LinearPool(this.vaultAddress, this.vaultInterface, this.linearPoolInterface);
|
|
256
|
+
const balanceOut = poolPairData.poolStates[poolOut.address].tokens[poolPairData.tokenOut.toLowerCase()].balance;
|
|
257
|
+
const scalingFactor = poolPairData.poolStates[poolOut.address].tokens[poolPairData.tokenOut.toLowerCase()].scalingFactor;
|
|
258
|
+
if (!scalingFactor)
|
|
259
|
+
return false;
|
|
260
|
+
const poolOutLimit = linearPool.swapLimit(balanceOut, scalingFactor);
|
|
261
|
+
const swapAmount = amounts[amounts.length - 1] > unitVolume
|
|
262
|
+
? amounts[amounts.length - 1]
|
|
263
|
+
: unitVolume;
|
|
264
|
+
return poolOutLimit > swapAmount;
|
|
265
|
+
}
|
|
266
|
+
onSell(amounts, poolPairData) {
|
|
267
|
+
return this._calcOutGivenIn(amounts, poolPairData.tokenIn, poolPairData.tokenOut, poolPairData.phantomPoolId, poolPairData.poolStates, poolPairData.boostedPools);
|
|
268
|
+
}
|
|
269
|
+
_calcOutGivenIn(tokenAmountsIn, tokenIn, tokenOut, phantomPoolId, poolStates, boostedPools) {
|
|
270
|
+
const phantomPoolAddr = boostedPools[phantomPoolId].phantomStablePoolAddr;
|
|
271
|
+
if (!phantomPoolAddr)
|
|
272
|
+
return [];
|
|
273
|
+
const poolIn = VirtualBoostedPool.getTokenPool(phantomPoolAddr, phantomPoolId, tokenIn, boostedPools);
|
|
274
|
+
const poolOut = VirtualBoostedPool.getTokenPool(phantomPoolAddr, phantomPoolId, tokenOut, boostedPools);
|
|
275
|
+
const linearPool = new LinearPool_1.LinearPool(this.vaultAddress, this.vaultInterface, this.linearPoolInterface);
|
|
276
|
+
const phantomStablePool = new PhantomStablePool_1.PhantomStablePool(this.vaultAddress, this.vaultInterface, this.phantomStablePoolInterface);
|
|
277
|
+
// Find where tokenIn/Out fits, i.e. boosted or phantom
|
|
278
|
+
if (poolIn.type === 'Linear' && poolOut.type === 'Linear') {
|
|
279
|
+
// i.e. DAI > USDC
|
|
280
|
+
// console.log(`tokenIn[Linear]inBpt[PhantomStable]outBpt[Linear]tokenOut`);
|
|
281
|
+
// Find pools of interest
|
|
282
|
+
const linearIn = poolStates[poolIn.address];
|
|
283
|
+
const stablePhantom = poolStates[phantomPoolAddr];
|
|
284
|
+
const linearOut = poolStates[poolOut.address];
|
|
285
|
+
if (linearIn.bptIndex === undefined ||
|
|
286
|
+
linearIn.mainIndex === undefined ||
|
|
287
|
+
linearIn.wrappedIndex === undefined ||
|
|
288
|
+
linearIn.lowerTarget === undefined ||
|
|
289
|
+
linearIn.upperTarget === undefined ||
|
|
290
|
+
stablePhantom.amp === undefined ||
|
|
291
|
+
linearOut.bptIndex === undefined ||
|
|
292
|
+
linearOut.mainIndex === undefined ||
|
|
293
|
+
linearOut.wrappedIndex === undefined ||
|
|
294
|
+
linearOut.lowerTarget === undefined ||
|
|
295
|
+
linearOut.upperTarget === undefined)
|
|
296
|
+
throw 'Pool missing data';
|
|
297
|
+
const linearInTokens = Object.values(linearIn.tokens);
|
|
298
|
+
const stablePhantomTokens = Object.values(stablePhantom.tokens);
|
|
299
|
+
const linearOutTokens = Object.values(linearOut.tokens);
|
|
300
|
+
const linearInTokenAddrs = Object.keys(linearIn.tokens);
|
|
301
|
+
const linearOutTokenAddrs = Object.keys(linearOut.tokens);
|
|
302
|
+
const stablePhantomTokenAddrs = Object.keys(stablePhantom.tokens);
|
|
303
|
+
// First hop through Linear Pool of tokenIn
|
|
304
|
+
const amtOutLinearOne = linearPool._swapGivenIn(tokenAmountsIn, linearInTokenAddrs, linearInTokens.map(t => t.balance), linearIn.mainIndex, // indexIn
|
|
305
|
+
linearIn.bptIndex, // indexOut
|
|
306
|
+
linearIn.bptIndex, // bptIndex
|
|
307
|
+
linearIn.wrappedIndex, // wrappedIndex
|
|
308
|
+
linearIn.mainIndex, // mainIndex
|
|
309
|
+
linearInTokens.map(t => (t.scalingFactor ? t.scalingFactor : 0n)), linearIn.swapFee, linearIn.lowerTarget, linearIn.upperTarget);
|
|
310
|
+
// Second hop through PhantomStable inbpt>outbpt
|
|
311
|
+
const amtOutPhantomStable = phantomStablePool._swapGivenIn(amtOutLinearOne, stablePhantomTokenAddrs, stablePhantomTokens.map(t => t.balance), stablePhantomTokenAddrs.indexOf(linearInTokenAddrs[linearIn.bptIndex]), // indexIn
|
|
312
|
+
stablePhantomTokenAddrs.indexOf(linearOutTokenAddrs[linearOut.bptIndex]), // indexOut
|
|
313
|
+
stablePhantomTokenAddrs.indexOf(phantomPoolAddr), // bptIndex
|
|
314
|
+
stablePhantomTokens.map(t => (t.scalingFactor ? t.scalingFactor : 0n)), stablePhantom.swapFee, stablePhantom.amp);
|
|
315
|
+
// Last hop through Linear Pool of tokenOut
|
|
316
|
+
const amtOutLinearTwo = linearPool._swapGivenIn(amtOutPhantomStable, Object.keys(linearOut.tokens), linearOutTokens.map(t => t.balance), linearOut.bptIndex, // indexIn
|
|
317
|
+
linearOut.mainIndex, // indexOut
|
|
318
|
+
linearOut.bptIndex, // bptIndex
|
|
319
|
+
linearOut.wrappedIndex, linearOut.mainIndex, // mainIndex
|
|
320
|
+
linearOutTokens.map(t => (t.scalingFactor ? t.scalingFactor : 0n)), linearOut.swapFee, linearOut.lowerTarget, linearOut.upperTarget);
|
|
321
|
+
return amtOutLinearTwo;
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
return [0n];
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Creates Balancer multihop swaps and asset info required to swap a pair of underlying tokens through the Boosted pools.
|
|
329
|
+
* @param tokenIn Underlying token in.
|
|
330
|
+
* @param tokenOut Underlying token out.
|
|
331
|
+
* @param boostedPoolId ID of the VirtualBoostedPool that tokenIn/Out belong to.
|
|
332
|
+
* @param amount Amount being traded.
|
|
333
|
+
* @param boostedPools Dictionary of boosted pools.
|
|
334
|
+
* @returns Swaps and assets.
|
|
335
|
+
*/
|
|
336
|
+
static getSwapData(tokenIn, tokenOut, boostedPoolId, amount, boostedPools) {
|
|
337
|
+
// i.e. for DAI>USDC it would return tokenIn[Linear]inBpt[PhantomStable]outBpt[Linear]tokenOut in correct swap format
|
|
338
|
+
const actualId = boostedPoolId.split(VirtualBoostedPool.poolType.toLowerCase())[0];
|
|
339
|
+
const virtualPoolInfo = boostedPools[actualId];
|
|
340
|
+
if (!virtualPoolInfo)
|
|
341
|
+
throw Error('Invalid VirtualBoostedPool ID');
|
|
342
|
+
const poolIn = this.getTokenPool(virtualPoolInfo.phantomStablePoolAddr, actualId, tokenIn, boostedPools);
|
|
343
|
+
const poolOut = this.getTokenPool(virtualPoolInfo.phantomStablePoolAddr, actualId, tokenOut, boostedPools);
|
|
344
|
+
// // Find where tokenIn/Out fits, i.e. boosted or phantom
|
|
345
|
+
if (poolIn.type === 'Linear' && poolOut.type === 'Linear') {
|
|
346
|
+
const assets = [tokenIn, poolIn.address, poolOut.address, tokenOut];
|
|
347
|
+
const swaps = [
|
|
348
|
+
{
|
|
349
|
+
poolId: poolIn.id,
|
|
350
|
+
assetInIndex: 0,
|
|
351
|
+
assetOutIndex: 1,
|
|
352
|
+
amount: amount,
|
|
353
|
+
userData: '0x',
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
poolId: actualId,
|
|
357
|
+
assetInIndex: 1,
|
|
358
|
+
assetOutIndex: 2,
|
|
359
|
+
amount: '0',
|
|
360
|
+
userData: '0x',
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
poolId: poolOut.id,
|
|
364
|
+
assetInIndex: 2,
|
|
365
|
+
assetOutIndex: 3,
|
|
366
|
+
amount: '0',
|
|
367
|
+
userData: '0x',
|
|
368
|
+
},
|
|
369
|
+
];
|
|
370
|
+
return {
|
|
371
|
+
swaps,
|
|
372
|
+
assets,
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
return {};
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
exports.VirtualBoostedPool = VirtualBoostedPool;
|
|
381
|
+
VirtualBoostedPool.poolType = 'VirtualBoosted';
|
|
382
|
+
//# sourceMappingURL=VirtualBoostedPool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VirtualBoostedPool.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/VirtualBoostedPool.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export declare const tokenValidator: joi.ObjectSchema<any>;
|
|
|
8
8
|
export declare const tokensResponseValidator: joi.ObjectSchema<any>;
|
|
9
9
|
export declare const pairValidator: joi.ObjectSchema<any>;
|
|
10
10
|
export declare const pairsResponseValidator: joi.ObjectSchema<any>;
|
|
11
|
-
export declare const priceValidator:
|
|
11
|
+
export declare const priceValidator: any;
|
|
12
12
|
export declare const pricesResponse: joi.ObjectSchema<any>;
|
|
13
13
|
export declare const validateAndCast: <T>(value: unknown, schema: joi.Schema, name?: string | undefined) => T;
|
|
14
14
|
export declare const addressSchema: joi.StringSchema<string>;
|
|
@@ -70,47 +70,47 @@ const stringNumberValidator = (value, helpers) => {
|
|
|
70
70
|
}
|
|
71
71
|
return value;
|
|
72
72
|
};
|
|
73
|
-
const
|
|
73
|
+
const pricesValidator = joi_1.default
|
|
74
74
|
.array()
|
|
75
75
|
.items(joi_1.default
|
|
76
76
|
.array()
|
|
77
77
|
.items(joi_1.default.string().min(1).custom(stringNumberValidator))
|
|
78
78
|
.length(2));
|
|
79
79
|
const ext = {
|
|
80
|
-
type: '
|
|
81
|
-
base:
|
|
80
|
+
type: 'validatedPrices',
|
|
81
|
+
base: joi_1.default.object({
|
|
82
|
+
bids: pricesValidator,
|
|
83
|
+
asks: pricesValidator,
|
|
84
|
+
}),
|
|
82
85
|
rules: {
|
|
83
|
-
|
|
86
|
+
bidsLowerThanAsks: {
|
|
84
87
|
validate: (values, helpers) => {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
if (!values.bids ||
|
|
89
|
+
!values.asks ||
|
|
90
|
+
values.bids.length === 0 ||
|
|
91
|
+
values.asks.length === 0) {
|
|
92
|
+
return values;
|
|
93
|
+
}
|
|
94
|
+
const maxBid = values.bids
|
|
95
|
+
.map(numbers => new bignumber_js_1.default(numbers[0]))
|
|
96
|
+
.reduce((previousValue, currentValue) => currentValue.gte(previousValue) ? currentValue : previousValue, new bignumber_js_1.default(0));
|
|
97
|
+
const minAsk = values.asks
|
|
98
|
+
.map(numbers => new bignumber_js_1.default(numbers[0]))
|
|
99
|
+
.reduce((previousValue, currentValue) => currentValue.lte(previousValue) ? currentValue : previousValue, new bignumber_js_1.default('123456789012345678901234567890'));
|
|
100
|
+
return maxBid < minAsk
|
|
88
101
|
? values
|
|
89
102
|
: helpers.message({
|
|
90
|
-
custom:
|
|
91
|
-
});
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
desc: {
|
|
95
|
-
validate: (values, helpers) => {
|
|
96
|
-
const prices = values.map(numbers => new bignumber_js_1.default(numbers[0]));
|
|
97
|
-
const isAscOrder = prices.every((x, i) => i === 0 || x.lte(prices[i - 1]));
|
|
98
|
-
return isAscOrder
|
|
99
|
-
? values
|
|
100
|
-
: helpers.message({
|
|
101
|
-
custom: `array is not desc sorted ${JSON.stringify(values)}`,
|
|
103
|
+
custom: 'the maximum bid is higher than minimum ask',
|
|
102
104
|
});
|
|
103
105
|
},
|
|
104
106
|
},
|
|
105
107
|
},
|
|
106
108
|
};
|
|
107
|
-
|
|
108
|
-
exports.priceValidator = joi_1.default.object({
|
|
109
|
-
bids: pricesArrayValidator.sortedArray().desc(),
|
|
110
|
-
asks: pricesArrayValidator.sortedArray().asc(),
|
|
111
|
-
});
|
|
109
|
+
exports.priceValidator = joi_1.default.extend(ext);
|
|
112
110
|
exports.pricesResponse = joi_1.default.object({
|
|
113
|
-
prices: joi_1.default
|
|
111
|
+
prices: joi_1.default
|
|
112
|
+
.object()
|
|
113
|
+
.pattern(joi_1.default.string().min(1), exports.priceValidator.validatedPrices().bidsLowerThanAsks()),
|
|
114
114
|
});
|
|
115
115
|
const validateAndCast = (value, schema, name) => {
|
|
116
116
|
const { error, value: parsed } = schema.validate(value);
|
|
@@ -158,12 +158,22 @@ const stringStartWithHex0x = (value, helpers) => {
|
|
|
158
158
|
}
|
|
159
159
|
return value;
|
|
160
160
|
};
|
|
161
|
+
const mustBeAugustusSwapper = (value, helpers) => {
|
|
162
|
+
const allowedTakers = [
|
|
163
|
+
'0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57'.toLowerCase(),
|
|
164
|
+
];
|
|
165
|
+
return allowedTakers.includes(value.toLowerCase())
|
|
166
|
+
? value
|
|
167
|
+
: helpers.message({
|
|
168
|
+
custom: `"order.taker" must be any of ${JSON.stringify(allowedTakers)}`,
|
|
169
|
+
});
|
|
170
|
+
};
|
|
161
171
|
exports.orderWithSignatureValidator = joi_1.default
|
|
162
172
|
.object({
|
|
163
173
|
nonceAndMeta: joi_1.default.string().custom(stringPositiveBigIntValidator),
|
|
164
174
|
expiry: joi_1.default.number().min(0),
|
|
165
175
|
maker: exports.addressSchema.required(),
|
|
166
|
-
taker: exports.addressSchema.required(),
|
|
176
|
+
taker: exports.addressSchema.required().custom(mustBeAugustusSwapper),
|
|
167
177
|
makerAsset: exports.addressSchema.required(),
|
|
168
178
|
takerAsset: exports.addressSchema.required(),
|
|
169
179
|
makerAmount: joi_1.default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/dex/generic-rfq/validators.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAAqC;AACrC,8CAAsD;AACtD,+CAAiC;AAEjC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;AAE7B,MAAa,eAAgB,SAAQ,KAAK;IAKxC,YAAY,OAAe,EAAE,GAAY;QACvC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAVD,0CAUC;AAEY,QAAA,cAAc,GAAG,aAAG,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE;IACzB,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,IAAI,EAAE,aAAG;SACN,MAAM,EAAE;SACR,KAAK,CAAC,GAAG,UAAU,CAAC;SACpB,QAAQ,EAAE;CACd,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,aAAG,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,sBAAc,CAAC;CAClE,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,aAAG,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,YAAY,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,aAAG,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAG,CAAC,MAAM,EAAE,EAAE,qBAAa,CAAC;CACzD,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAC5B,KAAa,EACb,OAAsB,EACA,EAAE;IACxB,MAAM,EAAE,GAAG,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;QAC3B,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,GAAG,KAAK,kBAAkB;SACnC,CAAC,CAAC;KACJ;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/dex/generic-rfq/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Adapters = exports.TestAaveV3Config = void 0;
|
|
4
|
+
const constants_1 = require("../../constants");
|
|
5
|
+
exports.TestAaveV3Config = {
|
|
6
|
+
TestAaveV3: {
|
|
7
|
+
// TODO: complete me!
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
exports.Adapters = {
|
|
11
|
+
// TODO: add adapters for each chain
|
|
12
|
+
// This is an example to copy
|
|
13
|
+
[constants_1.Network.MAINNET]: { [constants_1.SwapSide.SELL]: [{ name: '', index: 0 }] },
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/test-aave-v3/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,gBAAgB,GAA4B;IACvD,UAAU,EAAE;IACV,qBAAqB;KACtB;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC;IACvD,oCAAoC;IACpC,6BAA6B;IAC7B,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;CACjE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Interface } from '@ethersproject/abi';
|
|
2
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
3
|
+
import { Log, Logger } from '../../types';
|
|
4
|
+
import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
|
|
5
|
+
import { IDexHelper } from '../../dex-helper/idex-helper';
|
|
6
|
+
import { PoolState } from './types';
|
|
7
|
+
export declare class TestAaveV3EventPool extends StatefulEventSubscriber<PoolState> {
|
|
8
|
+
protected parentName: string;
|
|
9
|
+
protected network: number;
|
|
10
|
+
protected dexHelper: IDexHelper;
|
|
11
|
+
protected testAaveV3Iface: Interface;
|
|
12
|
+
handlers: {
|
|
13
|
+
[event: string]: (event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>) => DeepReadonly<PoolState> | null;
|
|
14
|
+
};
|
|
15
|
+
logDecoder: (log: Log) => any;
|
|
16
|
+
addressesSubscribed: string[];
|
|
17
|
+
constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, testAaveV3Iface?: Interface);
|
|
18
|
+
/**
|
|
19
|
+
* The function is called every time any of the subscribed
|
|
20
|
+
* addresses release log. The function accepts the current
|
|
21
|
+
* state, updates the state according to the log, and returns
|
|
22
|
+
* the updated state.
|
|
23
|
+
* @param state - Current state of event subscriber
|
|
24
|
+
* @param log - Log released by one of the subscribed addresses
|
|
25
|
+
* @returns Updates state of the event subscriber after the log
|
|
26
|
+
*/
|
|
27
|
+
protected processLog(state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
|
|
28
|
+
/**
|
|
29
|
+
* The function generates state using on-chain calls. This
|
|
30
|
+
* function is called to regenerate state if the event based
|
|
31
|
+
* system fails to fetch events and the local state is no
|
|
32
|
+
* more correct.
|
|
33
|
+
* @param blockNumber - Blocknumber for which the state should
|
|
34
|
+
* should be generated
|
|
35
|
+
* @returns state of the event subscriber at blocknumber
|
|
36
|
+
*/
|
|
37
|
+
generateState(blockNumber: number): Promise<DeepReadonly<PoolState>>;
|
|
38
|
+
handleMyEvent(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
|
|
39
|
+
}
|