@enzymefinance/testutils 4.0.0-next.5 → 4.0.0-next.6
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/CHANGELOG.md +8 -0
- package/dist/declarations/src/deployment.d.ts +12 -1
- package/dist/declarations/src/scaffolding/extensions/integrations/curve.d.ts +106 -32
- package/dist/declarations/src/scaffolding/extensions/integrations/index.d.ts +1 -0
- package/dist/declarations/src/scaffolding/extensions/integrations/olympusV2.d.ts +17 -0
- package/dist/declarations/src/whales.d.ts +7 -3
- package/dist/enzymefinance-testutils.browser.cjs.js +565 -249
- package/dist/enzymefinance-testutils.browser.esm.js +557 -251
- package/dist/enzymefinance-testutils.cjs.dev.js +565 -249
- package/dist/enzymefinance-testutils.cjs.prod.js +565 -249
- package/dist/enzymefinance-testutils.esm.js +557 -251
- package/package.json +5 -5
- package/src/deployment.ts +13 -0
- package/src/scaffolding/assets.ts +1 -1
- package/src/scaffolding/core.ts +2 -0
- package/src/scaffolding/extensions/integrations/curve.ts +262 -1
- package/src/scaffolding/extensions/integrations/index.ts +1 -0
- package/src/scaffolding/extensions/integrations/olympusV2.ts +71 -0
- package/src/whales.ts +6 -2
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@enzymefinance/testutils",
|
3
|
-
"version": "4.0.0-next.
|
3
|
+
"version": "4.0.0-next.6",
|
4
4
|
"main": "dist/enzymefinance-testutils.cjs.js",
|
5
5
|
"module": "dist/enzymefinance-testutils.esm.js",
|
6
6
|
"browser": {
|
@@ -9,9 +9,9 @@
|
|
9
9
|
},
|
10
10
|
"dependencies": {
|
11
11
|
"@babel/runtime": "^7.15.4",
|
12
|
-
"@enzymefinance/ethers": "^1.0.
|
13
|
-
"@enzymefinance/hardhat": "^1.0.
|
14
|
-
"@enzymefinance/protocol": "^4.0.0-next.
|
15
|
-
"ethers": "^5.5.
|
12
|
+
"@enzymefinance/ethers": "^1.0.11",
|
13
|
+
"@enzymefinance/hardhat": "^1.0.12",
|
14
|
+
"@enzymefinance/protocol": "^4.0.0-next.6",
|
15
|
+
"ethers": "^5.5.3"
|
16
16
|
}
|
17
17
|
}
|
package/src/deployment.ts
CHANGED
@@ -17,6 +17,7 @@ import {
|
|
17
17
|
CumulativeSlippageTolerancePolicy,
|
18
18
|
CurveExchangeAdapter,
|
19
19
|
CurveLiquidityAaveAdapter,
|
20
|
+
CurveLiquidityAdapter,
|
20
21
|
CurveLiquidityEursAdapter,
|
21
22
|
CurveLiquiditySethAdapter,
|
22
23
|
CurveLiquidityStethAdapter,
|
@@ -43,6 +44,7 @@ import {
|
|
43
44
|
ManagementFee,
|
44
45
|
MinAssetBalancesPostRedemptionPolicy,
|
45
46
|
MinMaxInvestmentPolicy,
|
47
|
+
OlympusV2Adapter,
|
46
48
|
OnlyRemoveDustExternalPositionPolicy,
|
47
49
|
OnlyUntrackDustOrPricelessAssetsPolicy,
|
48
50
|
ParaSwapV4Adapter,
|
@@ -110,6 +112,7 @@ export async function deployProtocolFixture() {
|
|
110
112
|
cumulativeSlippageTolerancePolicy: new CumulativeSlippageTolerancePolicy(fixture['CumulativeSlippageTolerancePolicy'].address, deployer),
|
111
113
|
curveExchangeAdapter: new CurveExchangeAdapter(fixture['CurveExchangeAdapter'].address, deployer),
|
112
114
|
curveLiquidityAaveAdapter: new CurveLiquidityAaveAdapter(fixture['CurveLiquidityAaveAdapter'].address, deployer),
|
115
|
+
curveLiquidityAdapter: new CurveLiquidityAdapter(fixture['CurveLiquidityAdapter'].address, deployer),
|
113
116
|
curveLiquidityEursAdapter: new CurveLiquidityEursAdapter(fixture['CurveLiquidityEursAdapter'].address, deployer),
|
114
117
|
curveLiquiditySethAdapter: new CurveLiquiditySethAdapter(fixture['CurveLiquiditySethAdapter'].address, deployer),
|
115
118
|
curveLiquidityStethAdapter: new CurveLiquidityStethAdapter(fixture['CurveLiquidityStethAdapter'].address, deployer),
|
@@ -136,6 +139,7 @@ export async function deployProtocolFixture() {
|
|
136
139
|
managementFee: new ManagementFee(fixture['ManagementFee'].address, deployer),
|
137
140
|
minAssetBalancesPostRedemptionPolicy: new MinAssetBalancesPostRedemptionPolicy(fixture['MinAssetBalancesPostRedemptionPolicy'].address, deployer),
|
138
141
|
minMaxInvestmentPolicy: new MinMaxInvestmentPolicy(fixture['MinMaxInvestmentPolicy'].address, deployer),
|
142
|
+
olympusV2Adapter: new OlympusV2Adapter(fixture['OlympusV2Adapter'].address, deployer),
|
139
143
|
onlyRemoveDustExternalPositionPolicy: new OnlyRemoveDustExternalPositionPolicy(fixture['OnlyRemoveDustExternalPositionPolicy'].address, deployer),
|
140
144
|
onlyUntrackDustOrPricelessAssetsPolicy: new OnlyUntrackDustOrPricelessAssetsPolicy(fixture['OnlyUntrackDustOrPricelessAssetsPolicy'].address, deployer),
|
141
145
|
paraSwapV4Adapter: new ParaSwapV4Adapter(fixture['ParaSwapV4Adapter'].address, deployer),
|
@@ -179,6 +183,11 @@ import type { ChainlinkRateAsset } from '@enzymefinance/protocol';
|
|
179
183
|
|
180
184
|
export interface DeploymentConfig {
|
181
185
|
feeToken: string;
|
186
|
+
feeTokenBurn: {
|
187
|
+
burnFromVault: boolean;
|
188
|
+
sendToProtocolFeeReserve: boolean;
|
189
|
+
externalBurnerAddress: string;
|
190
|
+
};
|
182
191
|
weth: string;
|
183
192
|
wrappedNativeAsset: string;
|
184
193
|
primitives: Record<string, string>;
|
@@ -230,6 +239,9 @@ export interface DeploymentConfig {
|
|
230
239
|
lido: {
|
231
240
|
steth: string;
|
232
241
|
};
|
242
|
+
olympusV2: {
|
243
|
+
stakingContract: string;
|
244
|
+
};
|
233
245
|
paraSwapV4: {
|
234
246
|
augustusSwapper: string;
|
235
247
|
tokenTransferProxy: string;
|
@@ -241,6 +253,7 @@ export interface DeploymentConfig {
|
|
241
253
|
poolTogetherV4: {
|
242
254
|
ptTokens: Record<string, [string, string]>;
|
243
255
|
};
|
256
|
+
positionsLimit: number;
|
244
257
|
stakehound: {
|
245
258
|
steth: string;
|
246
259
|
};
|
@@ -17,7 +17,7 @@ export async function addNewAssetsToFund({
|
|
17
17
|
assets: StandardToken[];
|
18
18
|
amounts?: BigNumberish[];
|
19
19
|
}) {
|
20
|
-
// First, add tracked assets
|
20
|
+
// First, add tracked assets
|
21
21
|
const receipt = addTrackedAssetsToVault({
|
22
22
|
assets,
|
23
23
|
comptrollerProxy,
|
package/src/scaffolding/core.ts
CHANGED
@@ -94,7 +94,9 @@ export async function createFundDeployer({
|
|
94
94
|
await vaultLib.getProtocolFeeReserve(),
|
95
95
|
nextProtocolFeeTracker,
|
96
96
|
await vaultLib.getMlnToken(),
|
97
|
+
await vaultLib.getMlnBurner(),
|
97
98
|
await vaultLib.getWethToken(),
|
99
|
+
await vaultLib.getPositionsLimit(),
|
98
100
|
);
|
99
101
|
await nextFundDeployer.setVaultLib(nextVaultLib);
|
100
102
|
|
@@ -5,9 +5,11 @@ import type {
|
|
5
5
|
ComptrollerLib,
|
6
6
|
CurveExchangeAdapter,
|
7
7
|
CurveLiquidityAaveAdapter,
|
8
|
+
CurveLiquidityAdapter,
|
8
9
|
CurveLiquidityEursAdapter,
|
9
10
|
CurveLiquiditySethAdapter,
|
10
11
|
CurveLiquidityStethAdapter,
|
12
|
+
CurveRedeemType,
|
11
13
|
IntegrationManager,
|
12
14
|
StandardToken,
|
13
15
|
} from '@enzymefinance/protocol';
|
@@ -20,18 +22,23 @@ import {
|
|
20
22
|
curveAaveStakeArgs,
|
21
23
|
curveAaveUnstakeAndRedeemArgs,
|
22
24
|
curveAaveUnstakeArgs,
|
25
|
+
curveClaimRewardsArgs,
|
23
26
|
curveEursLendAndStakeArgs,
|
24
27
|
curveEursLendArgs,
|
25
28
|
curveEursRedeemArgs,
|
26
29
|
curveEursStakeArgs,
|
27
30
|
curveEursUnstakeAndRedeemArgs,
|
28
31
|
curveEursUnstakeArgs,
|
32
|
+
curveLendAndStakeArgs,
|
33
|
+
curveLendArgs,
|
34
|
+
curveRedeemArgs,
|
29
35
|
curveSethLendAndStakeArgs,
|
30
36
|
curveSethLendArgs,
|
31
37
|
curveSethRedeemArgs,
|
32
38
|
curveSethStakeArgs,
|
33
39
|
curveSethUnstakeAndRedeemArgs,
|
34
40
|
curveSethUnstakeArgs,
|
41
|
+
curveStakeArgs,
|
35
42
|
curveStethLendAndStakeArgs,
|
36
43
|
curveStethLendArgs,
|
37
44
|
curveStethRedeemArgs,
|
@@ -39,6 +46,8 @@ import {
|
|
39
46
|
curveStethUnstakeAndRedeemArgs,
|
40
47
|
curveStethUnstakeArgs,
|
41
48
|
curveTakeOrderArgs,
|
49
|
+
curveUnstakeAndRedeemArgs,
|
50
|
+
curveUnstakeArgs,
|
42
51
|
IntegrationManagerActionId,
|
43
52
|
lendAndStakeSelector,
|
44
53
|
lendSelector,
|
@@ -48,7 +57,7 @@ import {
|
|
48
57
|
unstakeAndRedeemSelector,
|
49
58
|
unstakeSelector,
|
50
59
|
} from '@enzymefinance/protocol';
|
51
|
-
import type { BigNumberish } from 'ethers';
|
60
|
+
import type { BigNumberish, BytesLike } from 'ethers';
|
52
61
|
import { BigNumber, constants, utils } from 'ethers';
|
53
62
|
|
54
63
|
export interface CurveLiquidityGaugeV2 extends Contract<CurveLiquidityGaugeV2> {
|
@@ -61,6 +70,16 @@ export const CurveLiquidityGaugeV2 = contract<CurveLiquidityGaugeV2>()`
|
|
61
70
|
function integrate_fraction(address) view returns (uint256)
|
62
71
|
`;
|
63
72
|
|
73
|
+
export interface CurveRegistry extends Contract<CurveRegistry> {
|
74
|
+
get_coins: Call<(_pool: AddressLike) => AddressLike[], Contract<any>>;
|
75
|
+
get_lp_token: Call<(_pool: AddressLike) => AddressLike, Contract<any>>;
|
76
|
+
}
|
77
|
+
|
78
|
+
export const CurveRegistry = contract<CurveRegistry>()`
|
79
|
+
function get_coins(address) view returns (address[8])
|
80
|
+
function get_lp_token(address) view returns (address)
|
81
|
+
`;
|
82
|
+
|
64
83
|
// prettier-ignore
|
65
84
|
export interface CurveSwaps extends Contract<CurveSwaps> {
|
66
85
|
get_best_rate: Call<(_from: AddressLike, to: AddressLike, amount: BigNumberish) => { bestPool: AddressLike, amountReceived: BigNumber }, CurveSwaps>
|
@@ -120,6 +139,248 @@ export async function curveTakeOrder({
|
|
120
139
|
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
121
140
|
}
|
122
141
|
|
142
|
+
// combined liquidity
|
143
|
+
|
144
|
+
export function curveClaimRewards({
|
145
|
+
comptrollerProxy,
|
146
|
+
integrationManager,
|
147
|
+
fundOwner,
|
148
|
+
curveLiquidityAdapter,
|
149
|
+
gaugeToken,
|
150
|
+
}: {
|
151
|
+
comptrollerProxy: ComptrollerLib;
|
152
|
+
integrationManager: IntegrationManager;
|
153
|
+
fundOwner: SignerWithAddress;
|
154
|
+
curveLiquidityAdapter: CurveLiquidityAdapter;
|
155
|
+
gaugeToken: AddressLike;
|
156
|
+
}) {
|
157
|
+
const callArgs = callOnIntegrationArgs({
|
158
|
+
adapter: curveLiquidityAdapter,
|
159
|
+
encodedCallArgs: curveClaimRewardsArgs({ gaugeToken }),
|
160
|
+
selector: claimRewardsSelector,
|
161
|
+
});
|
162
|
+
|
163
|
+
return comptrollerProxy
|
164
|
+
.connect(fundOwner)
|
165
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
166
|
+
}
|
167
|
+
|
168
|
+
export async function curveLend({
|
169
|
+
comptrollerProxy,
|
170
|
+
integrationManager,
|
171
|
+
signer,
|
172
|
+
curveLiquidityAdapter,
|
173
|
+
pool,
|
174
|
+
orderedOutgoingAssetAmounts,
|
175
|
+
minIncomingLpTokenAmount = BigNumber.from(1),
|
176
|
+
useUnderlyings,
|
177
|
+
}: {
|
178
|
+
comptrollerProxy: ComptrollerLib;
|
179
|
+
integrationManager: IntegrationManager;
|
180
|
+
signer: SignerWithAddress;
|
181
|
+
curveLiquidityAdapter: CurveLiquidityAdapter;
|
182
|
+
pool: AddressLike;
|
183
|
+
orderedOutgoingAssetAmounts: BigNumberish[];
|
184
|
+
minIncomingLpTokenAmount?: BigNumberish;
|
185
|
+
useUnderlyings: boolean;
|
186
|
+
}) {
|
187
|
+
const callArgs = callOnIntegrationArgs({
|
188
|
+
adapter: curveLiquidityAdapter,
|
189
|
+
encodedCallArgs: curveLendArgs({
|
190
|
+
minIncomingLpTokenAmount,
|
191
|
+
orderedOutgoingAssetAmounts,
|
192
|
+
pool,
|
193
|
+
useUnderlyings,
|
194
|
+
}),
|
195
|
+
selector: lendSelector,
|
196
|
+
});
|
197
|
+
|
198
|
+
return comptrollerProxy
|
199
|
+
.connect(signer)
|
200
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
201
|
+
}
|
202
|
+
|
203
|
+
export async function curveLendAndStake({
|
204
|
+
comptrollerProxy,
|
205
|
+
integrationManager,
|
206
|
+
signer,
|
207
|
+
curveLiquidityAdapter,
|
208
|
+
pool,
|
209
|
+
orderedOutgoingAssetAmounts,
|
210
|
+
incomingGaugeToken,
|
211
|
+
minIncomingGaugeTokenAmount = BigNumber.from(1),
|
212
|
+
useUnderlyings,
|
213
|
+
}: {
|
214
|
+
comptrollerProxy: ComptrollerLib;
|
215
|
+
integrationManager: IntegrationManager;
|
216
|
+
signer: SignerWithAddress;
|
217
|
+
curveLiquidityAdapter: CurveLiquidityAdapter;
|
218
|
+
pool: AddressLike;
|
219
|
+
orderedOutgoingAssetAmounts: BigNumberish[];
|
220
|
+
incomingGaugeToken: AddressLike;
|
221
|
+
minIncomingGaugeTokenAmount?: BigNumberish;
|
222
|
+
useUnderlyings: boolean;
|
223
|
+
}) {
|
224
|
+
const callArgs = callOnIntegrationArgs({
|
225
|
+
adapter: curveLiquidityAdapter,
|
226
|
+
encodedCallArgs: curveLendAndStakeArgs({
|
227
|
+
incomingGaugeToken,
|
228
|
+
minIncomingGaugeTokenAmount,
|
229
|
+
orderedOutgoingAssetAmounts,
|
230
|
+
pool,
|
231
|
+
useUnderlyings,
|
232
|
+
}),
|
233
|
+
selector: lendAndStakeSelector,
|
234
|
+
});
|
235
|
+
|
236
|
+
return comptrollerProxy
|
237
|
+
.connect(signer)
|
238
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
239
|
+
}
|
240
|
+
|
241
|
+
export async function curveRedeem({
|
242
|
+
comptrollerProxy,
|
243
|
+
integrationManager,
|
244
|
+
signer,
|
245
|
+
curveLiquidityAdapter,
|
246
|
+
pool,
|
247
|
+
outgoingLpTokenAmount,
|
248
|
+
useUnderlyings,
|
249
|
+
redeemType,
|
250
|
+
incomingAssetData,
|
251
|
+
}: {
|
252
|
+
comptrollerProxy: ComptrollerLib;
|
253
|
+
integrationManager: IntegrationManager;
|
254
|
+
signer: SignerWithAddress;
|
255
|
+
curveLiquidityAdapter: CurveLiquidityAdapter;
|
256
|
+
pool: AddressLike;
|
257
|
+
outgoingLpTokenAmount: BigNumberish;
|
258
|
+
useUnderlyings: boolean;
|
259
|
+
redeemType: CurveRedeemType;
|
260
|
+
incomingAssetData: BytesLike;
|
261
|
+
}) {
|
262
|
+
const callArgs = callOnIntegrationArgs({
|
263
|
+
adapter: curveLiquidityAdapter,
|
264
|
+
encodedCallArgs: curveRedeemArgs({
|
265
|
+
incomingAssetData,
|
266
|
+
outgoingLpTokenAmount,
|
267
|
+
pool,
|
268
|
+
redeemType,
|
269
|
+
useUnderlyings,
|
270
|
+
}),
|
271
|
+
selector: redeemSelector,
|
272
|
+
});
|
273
|
+
|
274
|
+
return comptrollerProxy
|
275
|
+
.connect(signer)
|
276
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
277
|
+
}
|
278
|
+
|
279
|
+
export async function curveStake({
|
280
|
+
comptrollerProxy,
|
281
|
+
integrationManager,
|
282
|
+
signer,
|
283
|
+
curveLiquidityAdapter,
|
284
|
+
pool,
|
285
|
+
incomingGaugeToken,
|
286
|
+
amount,
|
287
|
+
}: {
|
288
|
+
comptrollerProxy: ComptrollerLib;
|
289
|
+
integrationManager: IntegrationManager;
|
290
|
+
signer: SignerWithAddress;
|
291
|
+
curveLiquidityAdapter: CurveLiquidityAdapter;
|
292
|
+
pool: AddressLike;
|
293
|
+
incomingGaugeToken: AddressLike;
|
294
|
+
amount: BigNumberish;
|
295
|
+
}) {
|
296
|
+
const callArgs = callOnIntegrationArgs({
|
297
|
+
adapter: curveLiquidityAdapter,
|
298
|
+
encodedCallArgs: curveStakeArgs({
|
299
|
+
amount,
|
300
|
+
incomingGaugeToken,
|
301
|
+
pool,
|
302
|
+
}),
|
303
|
+
selector: stakeSelector,
|
304
|
+
});
|
305
|
+
|
306
|
+
return comptrollerProxy
|
307
|
+
.connect(signer)
|
308
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
309
|
+
}
|
310
|
+
|
311
|
+
export async function curveUnstake({
|
312
|
+
comptrollerProxy,
|
313
|
+
integrationManager,
|
314
|
+
signer,
|
315
|
+
curveLiquidityAdapter,
|
316
|
+
pool,
|
317
|
+
outgoingGaugeToken,
|
318
|
+
amount,
|
319
|
+
}: {
|
320
|
+
comptrollerProxy: ComptrollerLib;
|
321
|
+
integrationManager: IntegrationManager;
|
322
|
+
signer: SignerWithAddress;
|
323
|
+
curveLiquidityAdapter: CurveLiquidityAdapter;
|
324
|
+
pool: AddressLike;
|
325
|
+
outgoingGaugeToken: AddressLike;
|
326
|
+
amount: BigNumberish;
|
327
|
+
}) {
|
328
|
+
const callArgs = callOnIntegrationArgs({
|
329
|
+
adapter: curveLiquidityAdapter,
|
330
|
+
encodedCallArgs: curveUnstakeArgs({
|
331
|
+
amount,
|
332
|
+
outgoingGaugeToken,
|
333
|
+
pool,
|
334
|
+
}),
|
335
|
+
selector: unstakeSelector,
|
336
|
+
});
|
337
|
+
|
338
|
+
return comptrollerProxy
|
339
|
+
.connect(signer)
|
340
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
341
|
+
}
|
342
|
+
|
343
|
+
export async function curveUnstakeAndRedeem({
|
344
|
+
comptrollerProxy,
|
345
|
+
integrationManager,
|
346
|
+
signer,
|
347
|
+
curveLiquidityAdapter,
|
348
|
+
pool,
|
349
|
+
outgoingGaugeToken,
|
350
|
+
outgoingGaugeTokenAmount,
|
351
|
+
useUnderlyings,
|
352
|
+
redeemType,
|
353
|
+
incomingAssetData,
|
354
|
+
}: {
|
355
|
+
comptrollerProxy: ComptrollerLib;
|
356
|
+
integrationManager: IntegrationManager;
|
357
|
+
signer: SignerWithAddress;
|
358
|
+
curveLiquidityAdapter: CurveLiquidityAdapter;
|
359
|
+
pool: AddressLike;
|
360
|
+
outgoingGaugeToken: StandardToken;
|
361
|
+
outgoingGaugeTokenAmount: BigNumberish;
|
362
|
+
useUnderlyings: boolean;
|
363
|
+
redeemType: CurveRedeemType;
|
364
|
+
incomingAssetData: BytesLike;
|
365
|
+
}) {
|
366
|
+
const callArgs = callOnIntegrationArgs({
|
367
|
+
adapter: curveLiquidityAdapter,
|
368
|
+
encodedCallArgs: curveUnstakeAndRedeemArgs({
|
369
|
+
incomingAssetData,
|
370
|
+
outgoingGaugeToken,
|
371
|
+
outgoingGaugeTokenAmount,
|
372
|
+
pool,
|
373
|
+
redeemType,
|
374
|
+
useUnderlyings,
|
375
|
+
}),
|
376
|
+
selector: unstakeAndRedeemSelector,
|
377
|
+
});
|
378
|
+
|
379
|
+
return comptrollerProxy
|
380
|
+
.connect(signer)
|
381
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
382
|
+
}
|
383
|
+
|
123
384
|
// aave pool
|
124
385
|
|
125
386
|
export function curveAaveClaimRewards({
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import type { SignerWithAddress } from '@enzymefinance/hardhat';
|
2
|
+
import type { ComptrollerLib, IntegrationManager, OlympusV2Adapter } from '@enzymefinance/protocol';
|
3
|
+
import {
|
4
|
+
callOnIntegrationArgs,
|
5
|
+
IntegrationManagerActionId,
|
6
|
+
olympusV2StakeArgs,
|
7
|
+
olympusV2UnstakeArgs,
|
8
|
+
stakeSelector,
|
9
|
+
unstakeSelector,
|
10
|
+
} from '@enzymefinance/protocol';
|
11
|
+
import type { BigNumberish } from 'ethers';
|
12
|
+
|
13
|
+
export async function olympusV2Stake({
|
14
|
+
comptrollerProxy,
|
15
|
+
integrationManager,
|
16
|
+
signer,
|
17
|
+
olympusV2Adapter,
|
18
|
+
amount,
|
19
|
+
}: {
|
20
|
+
comptrollerProxy: ComptrollerLib;
|
21
|
+
integrationManager: IntegrationManager;
|
22
|
+
signer: SignerWithAddress;
|
23
|
+
olympusV2Adapter: OlympusV2Adapter;
|
24
|
+
amount: BigNumberish;
|
25
|
+
}) {
|
26
|
+
const stakeArgs = olympusV2StakeArgs({
|
27
|
+
amount,
|
28
|
+
});
|
29
|
+
|
30
|
+
const callArgs = callOnIntegrationArgs({
|
31
|
+
adapter: olympusV2Adapter,
|
32
|
+
encodedCallArgs: stakeArgs,
|
33
|
+
selector: stakeSelector,
|
34
|
+
});
|
35
|
+
|
36
|
+
const stakeTx = comptrollerProxy
|
37
|
+
.connect(signer)
|
38
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
39
|
+
|
40
|
+
return stakeTx;
|
41
|
+
}
|
42
|
+
|
43
|
+
export async function olympusV2Unstake({
|
44
|
+
comptrollerProxy,
|
45
|
+
integrationManager,
|
46
|
+
signer,
|
47
|
+
olympusV2Adapter,
|
48
|
+
amount,
|
49
|
+
}: {
|
50
|
+
comptrollerProxy: ComptrollerLib;
|
51
|
+
integrationManager: IntegrationManager;
|
52
|
+
signer: SignerWithAddress;
|
53
|
+
olympusV2Adapter: OlympusV2Adapter;
|
54
|
+
amount: BigNumberish;
|
55
|
+
}) {
|
56
|
+
const unstakeArgs = olympusV2UnstakeArgs({
|
57
|
+
amount,
|
58
|
+
});
|
59
|
+
|
60
|
+
const callArgs = callOnIntegrationArgs({
|
61
|
+
adapter: olympusV2Adapter,
|
62
|
+
encodedCallArgs: unstakeArgs,
|
63
|
+
selector: unstakeSelector,
|
64
|
+
});
|
65
|
+
|
66
|
+
const unstakeTx = comptrollerProxy
|
67
|
+
.connect(signer)
|
68
|
+
.callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
|
69
|
+
|
70
|
+
return unstakeTx;
|
71
|
+
}
|
package/src/whales.ts
CHANGED
@@ -12,12 +12,15 @@ const whales = {
|
|
12
12
|
crv: '0x4ce799e6eD8D64536b67dD428565d52A531B3640',
|
13
13
|
dai: '0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503',
|
14
14
|
knc: '0x09d51654bd9efbfcb56da3491989cc1444095fff',
|
15
|
+
ldo: '0x3dba737ccc50a32a1764b493285dd51c8af6c278',
|
15
16
|
link: '0xbe6977e08d4479c0a6777539ae0e8fa27be4e9d6',
|
16
17
|
mana: '0xefb94ac00f1cee8a89d5c3f49faa799da6f03024',
|
17
18
|
mln: '0xd8f8a53945bcfbbc19da162aa405e662ef71c40d',
|
19
|
+
ohm: '0x71a53aff36a699110d66d6bdfff2320caf8d2d59',
|
18
20
|
rep: '0xc6a043b07d33b6f30d8cb501026c391cfd25abe1',
|
19
21
|
ren: '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8',
|
20
22
|
susd: '0xa5f7a39e55d7878bc5bd754ee5d6bd7a7662355b',
|
23
|
+
sohm: '0xf280f037cdbda99727ddf5dfede91e68fa78605c',
|
21
24
|
uni: '0x47173b170c64d16393a52e6c480b3ad8c302ba1e',
|
22
25
|
usdc: '0xae2d4617c862309a3d75a0ffb358c7a5009c673f',
|
23
26
|
usdt: '0x5041ed759dd4afc3a72b8192c143f72f4724081a',
|
@@ -25,12 +28,13 @@ const whales = {
|
|
25
28
|
zrx: '0x206376e8940e42538781cd94ef024df3c1e0fd43',
|
26
29
|
// aTokens
|
27
30
|
ausdc: '0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296',
|
31
|
+
ausdt: '0x7d6149ad9a573a6e2ca6ebf7d4897c1b766841b4',
|
28
32
|
// cTokens
|
29
33
|
ccomp: '0xd74f186194ab9219fafac5c2fe4b3270169666db',
|
30
34
|
cdai: '0xab4ce310054a11328685ece1043211b68ba5d082',
|
31
35
|
ceth: '0x8aceab8167c80cb8b3de7fa6228b889bb1130ee8',
|
32
36
|
cuni: '0x39d8014b4f40d2cbc441137011d32023f4f1fd87',
|
33
|
-
cusdc: '
|
37
|
+
cusdc: '0xe1ed4da4284924ddaf69983b4d813fb1be58c380',
|
34
38
|
// ptTokens
|
35
39
|
ptUsdc: '0xd18236cd213f39d078177b6f6908f0e44e88e4aa',
|
36
40
|
// synths
|
@@ -40,8 +44,8 @@ const whales = {
|
|
40
44
|
sxau: '0x92eb453b7b5b8d41edb44e2c8b8b53eb70a482c7',
|
41
45
|
// misc
|
42
46
|
lidoSteth: '0x31f644e2dd5d74f5c8d6d9de89dd517474d51800',
|
43
|
-
ldo: '0x3dba737ccc50a32a1764b493285dd51c8af6c278',
|
44
47
|
eurs: '0x98ed26de6451db36246672df78ae7c50f2c76f6d',
|
48
|
+
ust: '0xf584f8728b874a6a5c7a8d4d387c9aae9172d621',
|
45
49
|
} as const;
|
46
50
|
/* eslint-enable sort-keys-fix/sort-keys-fix */
|
47
51
|
|