@enzymefinance/testutils 4.0.0-next.0 → 4.0.0-next.5
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +33 -0
- package/dist/declarations/src/assertions.d.ts +4 -4
- package/dist/declarations/src/deployment.d.ts +181 -82
- package/dist/declarations/src/gasRelayer.d.ts +56 -54
- package/dist/declarations/src/helpers.d.ts +16 -15
- package/dist/declarations/src/index.d.ts +6 -6
- package/dist/declarations/src/scaffolding/assets.d.ts +10 -10
- package/dist/declarations/src/scaffolding/chainlink.d.ts +3 -3
- package/dist/declarations/src/scaffolding/common.d.ts +7 -7
- package/dist/declarations/src/scaffolding/core.d.ts +17 -16
- package/dist/declarations/src/scaffolding/extensions/common.d.ts +11 -11
- package/dist/declarations/src/scaffolding/extensions/external-positions/actions.d.ts +35 -0
- package/dist/declarations/src/scaffolding/extensions/external-positions/compound.d.ts +56 -59
- package/dist/declarations/src/scaffolding/extensions/external-positions/index.d.ts +4 -2
- package/dist/declarations/src/scaffolding/extensions/external-positions/mocks.d.ts +53 -20
- package/dist/declarations/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.d.ts +99 -0
- package/dist/declarations/src/scaffolding/extensions/fees.d.ts +12 -12
- package/dist/declarations/src/scaffolding/extensions/index.d.ts +5 -5
- package/dist/declarations/src/scaffolding/extensions/integrations/aave.d.ts +20 -19
- package/dist/declarations/src/scaffolding/extensions/integrations/compound.d.ts +28 -28
- package/dist/declarations/src/scaffolding/extensions/integrations/curve.d.ts +272 -271
- package/dist/declarations/src/scaffolding/extensions/integrations/idle.d.ts +28 -28
- package/dist/declarations/src/scaffolding/extensions/integrations/index.d.ts +14 -12
- package/dist/declarations/src/scaffolding/extensions/integrations/mock.d.ts +32 -32
- package/dist/declarations/src/scaffolding/extensions/integrations/paraSwapV4.d.ts +23 -22
- package/dist/declarations/src/scaffolding/extensions/integrations/paraSwapV5.d.ts +23 -0
- package/dist/declarations/src/scaffolding/extensions/integrations/poolTogetherV4.d.ts +29 -0
- package/dist/declarations/src/scaffolding/extensions/integrations/synthetix.d.ts +33 -25
- package/dist/declarations/src/scaffolding/extensions/integrations/trackedAssets.d.ts +15 -15
- package/dist/declarations/src/scaffolding/extensions/integrations/uniswapV2.d.ts +46 -46
- package/dist/declarations/src/scaffolding/extensions/integrations/uniswapV3.d.ts +15 -15
- package/dist/declarations/src/scaffolding/extensions/integrations/yearn.d.ts +22 -22
- package/dist/declarations/src/scaffolding/extensions/integrations/zeroExV2.d.ts +12 -12
- package/dist/declarations/src/scaffolding/extensions/policies.d.ts +17 -17
- package/dist/declarations/src/scaffolding/index.d.ts +8 -8
- package/dist/declarations/src/scaffolding/setup.d.ts +77 -75
- package/dist/declarations/src/scaffolding/shares.d.ts +35 -35
- package/dist/declarations/src/scaffolding/vaultCalls.d.ts +32 -17
- package/dist/declarations/src/whales.d.ts +42 -44
- package/dist/enzymefinance-testutils.browser.cjs.js +1470 -697
- package/dist/enzymefinance-testutils.browser.esm.js +1257 -508
- package/dist/enzymefinance-testutils.cjs.dev.js +1470 -697
- package/dist/enzymefinance-testutils.cjs.prod.js +1470 -697
- package/dist/enzymefinance-testutils.esm.js +1257 -508
- package/package.json +6 -6
- package/src/assertions.ts +5 -2
- package/src/deployment.ts +202 -99
- package/src/gasRelayer.ts +17 -18
- package/src/helpers.ts +6 -4
- package/src/scaffolding/assets.ts +6 -5
- package/src/scaffolding/chainlink.ts +2 -2
- package/src/scaffolding/common.ts +1 -1
- package/src/scaffolding/core.ts +28 -12
- package/src/scaffolding/extensions/common.ts +4 -4
- package/src/scaffolding/extensions/external-positions/actions.ts +103 -0
- package/src/scaffolding/extensions/external-positions/compound.ts +69 -114
- package/src/scaffolding/extensions/external-positions/index.ts +2 -0
- package/src/scaffolding/extensions/external-positions/mocks.ts +132 -10
- package/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.ts +290 -0
- package/src/scaffolding/extensions/fees.ts +1 -1
- package/src/scaffolding/extensions/integrations/aave.ts +6 -8
- package/src/scaffolding/extensions/integrations/compound.ts +10 -11
- package/src/scaffolding/extensions/integrations/curve.ts +72 -68
- package/src/scaffolding/extensions/integrations/idle.ts +9 -11
- package/src/scaffolding/extensions/integrations/index.ts +2 -0
- package/src/scaffolding/extensions/integrations/mock.ts +11 -13
- package/src/scaffolding/extensions/integrations/paraSwapV4.ts +16 -11
- package/src/scaffolding/extensions/integrations/paraSwapV5.ts +73 -0
- package/src/scaffolding/extensions/integrations/poolTogetherV4.ts +117 -0
- package/src/scaffolding/extensions/integrations/synthetix.ts +45 -12
- package/src/scaffolding/extensions/integrations/trackedAssets.ts +3 -4
- package/src/scaffolding/extensions/integrations/uniswapV2.ts +31 -27
- package/src/scaffolding/extensions/integrations/uniswapV3.ts +9 -10
- package/src/scaffolding/extensions/integrations/yearn.ts +9 -11
- package/src/scaffolding/extensions/integrations/zeroExV2.ts +9 -7
- package/src/scaffolding/extensions/policies.ts +2 -1
- package/src/scaffolding/setup.ts +27 -19
- package/src/scaffolding/shares.ts +5 -4
- package/src/scaffolding/vaultCalls.ts +50 -3
- package/src/whales.ts +26 -17
- package/tsconfig.json +2 -1
@@ -0,0 +1,103 @@
|
|
1
|
+
import type { AddressLike } from '@enzymefinance/ethers';
|
2
|
+
import { extractEvent } from '@enzymefinance/ethers';
|
3
|
+
import type { SignerWithAddress } from '@enzymefinance/hardhat';
|
4
|
+
import type { ComptrollerLib, ExternalPositionManager } from '@enzymefinance/protocol';
|
5
|
+
import {
|
6
|
+
callOnExternalPositionArgs,
|
7
|
+
encodeArgs,
|
8
|
+
ExternalPositionManagerActionId,
|
9
|
+
externalPositionReactivateArgs,
|
10
|
+
externalPositionRemoveArgs,
|
11
|
+
IExternalPositionProxy,
|
12
|
+
} from '@enzymefinance/protocol';
|
13
|
+
import type { BigNumberish, BytesLike } from 'ethers';
|
14
|
+
|
15
|
+
export async function callOnExternalPosition({
|
16
|
+
signer,
|
17
|
+
comptrollerProxy,
|
18
|
+
externalPositionManager,
|
19
|
+
externalPositionProxy,
|
20
|
+
actionId,
|
21
|
+
actionArgs,
|
22
|
+
}: {
|
23
|
+
signer: SignerWithAddress;
|
24
|
+
comptrollerProxy: ComptrollerLib;
|
25
|
+
externalPositionManager: ExternalPositionManager;
|
26
|
+
externalPositionProxy: AddressLike;
|
27
|
+
actionId: BigNumberish;
|
28
|
+
actionArgs: BytesLike;
|
29
|
+
}) {
|
30
|
+
const callArgs = callOnExternalPositionArgs({
|
31
|
+
actionArgs,
|
32
|
+
actionId,
|
33
|
+
externalPositionProxy,
|
34
|
+
});
|
35
|
+
|
36
|
+
return comptrollerProxy
|
37
|
+
.connect(signer)
|
38
|
+
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.CallOnExternalPosition, callArgs);
|
39
|
+
}
|
40
|
+
|
41
|
+
export async function createExternalPosition({
|
42
|
+
signer,
|
43
|
+
comptrollerProxy,
|
44
|
+
externalPositionManager,
|
45
|
+
externalPositionTypeId,
|
46
|
+
initializationData = '0x',
|
47
|
+
}: {
|
48
|
+
signer: SignerWithAddress;
|
49
|
+
comptrollerProxy: ComptrollerLib;
|
50
|
+
externalPositionManager: ExternalPositionManager;
|
51
|
+
externalPositionTypeId: BigNumberish;
|
52
|
+
initializationData?: BytesLike;
|
53
|
+
}) {
|
54
|
+
const receipt = await comptrollerProxy
|
55
|
+
.connect(signer)
|
56
|
+
.callOnExtension(
|
57
|
+
externalPositionManager,
|
58
|
+
ExternalPositionManagerActionId.CreateExternalPosition,
|
59
|
+
encodeArgs(['uint256', 'bytes'], [externalPositionTypeId, initializationData]),
|
60
|
+
);
|
61
|
+
|
62
|
+
const event = extractEvent(receipt, externalPositionManager.abi.getEvent('ExternalPositionDeployedForFund'));
|
63
|
+
|
64
|
+
const externalPositionProxy = new IExternalPositionProxy(event[0].args.externalPosition, signer);
|
65
|
+
|
66
|
+
return { externalPositionProxy, receipt };
|
67
|
+
}
|
68
|
+
|
69
|
+
export async function reactivateExternalPosition({
|
70
|
+
signer,
|
71
|
+
comptrollerProxy,
|
72
|
+
externalPositionManager,
|
73
|
+
externalPositionProxy,
|
74
|
+
}: {
|
75
|
+
signer: SignerWithAddress;
|
76
|
+
comptrollerProxy: ComptrollerLib;
|
77
|
+
externalPositionManager: ExternalPositionManager;
|
78
|
+
externalPositionProxy: AddressLike;
|
79
|
+
}) {
|
80
|
+
const callArgs = externalPositionReactivateArgs({ externalPositionProxy });
|
81
|
+
|
82
|
+
return comptrollerProxy
|
83
|
+
.connect(signer)
|
84
|
+
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.ReactivateExternalPosition, callArgs);
|
85
|
+
}
|
86
|
+
|
87
|
+
export async function removeExternalPosition({
|
88
|
+
signer,
|
89
|
+
comptrollerProxy,
|
90
|
+
externalPositionManager,
|
91
|
+
externalPositionProxy,
|
92
|
+
}: {
|
93
|
+
signer: SignerWithAddress;
|
94
|
+
comptrollerProxy: ComptrollerLib;
|
95
|
+
externalPositionManager: ExternalPositionManager;
|
96
|
+
externalPositionProxy: AddressLike;
|
97
|
+
}) {
|
98
|
+
const callArgs = externalPositionRemoveArgs({ externalPositionProxy });
|
99
|
+
|
100
|
+
return comptrollerProxy
|
101
|
+
.connect(signer)
|
102
|
+
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.RemoveExternalPosition, callArgs);
|
103
|
+
}
|
@@ -1,40 +1,17 @@
|
|
1
|
-
import { AddressLike } from '@enzymefinance/ethers';
|
2
|
-
import { SignerWithAddress } from '@enzymefinance/hardhat';
|
1
|
+
import type { AddressLike } from '@enzymefinance/ethers';
|
2
|
+
import type { SignerWithAddress } from '@enzymefinance/hardhat';
|
3
|
+
import type { ComptrollerLib, ExternalPositionManager, VaultLib } from '@enzymefinance/protocol';
|
3
4
|
import {
|
4
|
-
ComptrollerLib,
|
5
|
-
encodeArgs,
|
6
|
-
ExternalPositionManager,
|
7
|
-
VaultLib,
|
8
|
-
callOnExternalPositionArgs,
|
9
|
-
compoundExternalPositionActionArgs,
|
10
|
-
ExternalPositionManagerActionId,
|
11
5
|
CompoundDebtPositionActionId,
|
12
|
-
|
6
|
+
compoundExternalPositionActionArgs,
|
7
|
+
encodeArgs,
|
8
|
+
ExternalPositionType,
|
13
9
|
} from '@enzymefinance/protocol';
|
14
|
-
import { BigNumberish } from 'ethers';
|
15
|
-
|
16
|
-
const protocol = 0;
|
10
|
+
import type { BigNumberish } from 'ethers';
|
17
11
|
|
18
|
-
|
19
|
-
comptrollerProxy,
|
20
|
-
externalPositionManager,
|
21
|
-
fundOwner,
|
22
|
-
}: {
|
23
|
-
comptrollerProxy: ComptrollerLib;
|
24
|
-
externalPositionManager: ExternalPositionManager;
|
25
|
-
fundOwner: SignerWithAddress;
|
26
|
-
}) {
|
27
|
-
const createExternalPositionTx = comptrollerProxy
|
28
|
-
.connect(fundOwner)
|
29
|
-
.callOnExtension(
|
30
|
-
externalPositionManager,
|
31
|
-
ExternalPositionManagerActionId.CreateExternalPosition,
|
32
|
-
encodeArgs(['uint256', 'bytes'], [protocol, '0x']),
|
33
|
-
);
|
34
|
-
return createExternalPositionTx;
|
35
|
-
}
|
12
|
+
import { callOnExternalPosition, createExternalPosition } from './actions';
|
36
13
|
|
37
|
-
export async function
|
14
|
+
export async function compoundDebtPositionAddCollateral({
|
38
15
|
comptrollerProxy,
|
39
16
|
externalPositionManager,
|
40
17
|
fundOwner,
|
@@ -52,129 +29,117 @@ export async function addCollateral({
|
|
52
29
|
externalPositionProxy: AddressLike;
|
53
30
|
}) {
|
54
31
|
const actionArgs = compoundExternalPositionActionArgs({
|
55
|
-
assets,
|
56
32
|
amounts,
|
33
|
+
assets,
|
57
34
|
data: encodeArgs(['address[]'], [cTokens]),
|
58
35
|
});
|
59
36
|
|
60
|
-
|
61
|
-
|
37
|
+
return callOnExternalPosition({
|
38
|
+
actionArgs,
|
62
39
|
actionId: CompoundDebtPositionActionId.AddCollateralAssets,
|
63
|
-
|
40
|
+
comptrollerProxy,
|
41
|
+
externalPositionManager,
|
42
|
+
externalPositionProxy,
|
43
|
+
signer: fundOwner,
|
64
44
|
});
|
65
|
-
|
66
|
-
const addCollateralTx = comptrollerProxy
|
67
|
-
.connect(fundOwner)
|
68
|
-
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.CallOnExternalPosition, callArgs);
|
69
|
-
|
70
|
-
return addCollateralTx;
|
71
45
|
}
|
72
46
|
|
73
|
-
export async function
|
47
|
+
export async function compoundDebtPositionBorrow({
|
74
48
|
comptrollerProxy,
|
75
49
|
externalPositionManager,
|
76
50
|
fundOwner,
|
51
|
+
externalPositionProxy,
|
77
52
|
assets,
|
78
53
|
amounts,
|
79
|
-
externalPositionProxy,
|
80
54
|
cTokens,
|
81
55
|
}: {
|
82
56
|
comptrollerProxy: ComptrollerLib;
|
57
|
+
vaultProxy: VaultLib;
|
83
58
|
externalPositionManager: ExternalPositionManager;
|
84
59
|
fundOwner: SignerWithAddress;
|
60
|
+
externalPositionProxy: AddressLike;
|
85
61
|
assets: AddressLike[];
|
86
62
|
amounts: BigNumberish[];
|
87
|
-
externalPositionProxy: AddressLike;
|
88
63
|
cTokens: AddressLike[];
|
89
64
|
}) {
|
90
65
|
const actionArgs = compoundExternalPositionActionArgs({
|
91
|
-
assets,
|
92
66
|
amounts,
|
67
|
+
assets,
|
93
68
|
data: encodeArgs(['address[]'], [cTokens]),
|
94
69
|
});
|
95
70
|
|
96
|
-
|
71
|
+
return callOnExternalPosition({
|
72
|
+
actionArgs,
|
73
|
+
actionId: CompoundDebtPositionActionId.BorrowAsset,
|
74
|
+
comptrollerProxy,
|
75
|
+
externalPositionManager,
|
97
76
|
externalPositionProxy,
|
98
|
-
|
99
|
-
encodedCallArgs: actionArgs,
|
77
|
+
signer: fundOwner,
|
100
78
|
});
|
101
|
-
|
102
|
-
const removeCollateralTx = comptrollerProxy
|
103
|
-
.connect(fundOwner)
|
104
|
-
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.CallOnExternalPosition, callArgs);
|
105
|
-
|
106
|
-
return removeCollateralTx;
|
107
79
|
}
|
108
80
|
|
109
|
-
export async function
|
81
|
+
export async function compoundDebtPositionClaimComp({
|
110
82
|
comptrollerProxy,
|
111
83
|
externalPositionManager,
|
112
84
|
fundOwner,
|
113
85
|
externalPositionProxy,
|
114
|
-
assets,
|
115
|
-
amounts,
|
116
|
-
cTokens,
|
117
86
|
}: {
|
118
87
|
comptrollerProxy: ComptrollerLib;
|
119
88
|
vaultProxy: VaultLib;
|
120
89
|
externalPositionManager: ExternalPositionManager;
|
121
90
|
fundOwner: SignerWithAddress;
|
122
91
|
externalPositionProxy: AddressLike;
|
123
|
-
assets: AddressLike[];
|
124
|
-
amounts: BigNumberish[];
|
125
|
-
cTokens: AddressLike[];
|
126
92
|
}) {
|
127
93
|
const actionArgs = compoundExternalPositionActionArgs({
|
128
|
-
|
129
|
-
|
130
|
-
data:
|
94
|
+
amounts: [],
|
95
|
+
assets: [],
|
96
|
+
data: '0x',
|
131
97
|
});
|
132
98
|
|
133
|
-
|
99
|
+
return callOnExternalPosition({
|
100
|
+
actionArgs,
|
101
|
+
actionId: CompoundDebtPositionActionId.ClaimComp,
|
102
|
+
comptrollerProxy,
|
103
|
+
externalPositionManager,
|
134
104
|
externalPositionProxy,
|
135
|
-
|
136
|
-
encodedCallArgs: actionArgs,
|
105
|
+
signer: fundOwner,
|
137
106
|
});
|
138
|
-
|
139
|
-
const borrowTx = comptrollerProxy
|
140
|
-
.connect(fundOwner)
|
141
|
-
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.CallOnExternalPosition, callArgs);
|
142
|
-
|
143
|
-
return borrowTx;
|
144
107
|
}
|
145
108
|
|
146
|
-
export async function
|
109
|
+
export async function compoundDebtPositionRemoveCollateral({
|
147
110
|
comptrollerProxy,
|
148
111
|
externalPositionManager,
|
149
112
|
fundOwner,
|
113
|
+
assets,
|
114
|
+
amounts,
|
150
115
|
externalPositionProxy,
|
116
|
+
cTokens,
|
151
117
|
}: {
|
152
118
|
comptrollerProxy: ComptrollerLib;
|
153
|
-
vaultProxy: VaultLib;
|
154
119
|
externalPositionManager: ExternalPositionManager;
|
155
120
|
fundOwner: SignerWithAddress;
|
121
|
+
assets: AddressLike[];
|
122
|
+
amounts: BigNumberish[];
|
156
123
|
externalPositionProxy: AddressLike;
|
124
|
+
cTokens: AddressLike[];
|
157
125
|
}) {
|
158
126
|
const actionArgs = compoundExternalPositionActionArgs({
|
159
|
-
|
160
|
-
|
161
|
-
data: '
|
127
|
+
amounts,
|
128
|
+
assets,
|
129
|
+
data: encodeArgs(['address[]'], [cTokens]),
|
162
130
|
});
|
163
131
|
|
164
|
-
|
132
|
+
return callOnExternalPosition({
|
133
|
+
actionArgs,
|
134
|
+
actionId: CompoundDebtPositionActionId.RemoveCollateralAssets,
|
135
|
+
comptrollerProxy,
|
136
|
+
externalPositionManager,
|
165
137
|
externalPositionProxy,
|
166
|
-
|
167
|
-
encodedCallArgs: actionArgs,
|
138
|
+
signer: fundOwner,
|
168
139
|
});
|
169
|
-
|
170
|
-
const claimCompTx = comptrollerProxy
|
171
|
-
.connect(fundOwner)
|
172
|
-
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.CallOnExternalPosition, callArgs);
|
173
|
-
|
174
|
-
return claimCompTx;
|
175
140
|
}
|
176
141
|
|
177
|
-
export async function
|
142
|
+
export async function compoundDebtPositionRepayBorrow({
|
178
143
|
comptrollerProxy,
|
179
144
|
externalPositionManager,
|
180
145
|
fundOwner,
|
@@ -192,44 +157,34 @@ export async function repayBorrow({
|
|
192
157
|
cTokens: AddressLike[];
|
193
158
|
}) {
|
194
159
|
const actionArgs = compoundExternalPositionActionArgs({
|
195
|
-
assets,
|
196
160
|
amounts,
|
161
|
+
assets,
|
197
162
|
data: encodeArgs(['address[]'], [cTokens]),
|
198
163
|
});
|
199
164
|
|
200
|
-
|
201
|
-
|
165
|
+
return callOnExternalPosition({
|
166
|
+
actionArgs,
|
202
167
|
actionId: CompoundDebtPositionActionId.RepayBorrowedAssets,
|
203
|
-
|
168
|
+
comptrollerProxy,
|
169
|
+
externalPositionManager,
|
170
|
+
externalPositionProxy,
|
171
|
+
signer: fundOwner,
|
204
172
|
});
|
205
|
-
|
206
|
-
const repayTx = comptrollerProxy
|
207
|
-
.connect(fundOwner)
|
208
|
-
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.CallOnExternalPosition, callArgs);
|
209
|
-
|
210
|
-
return repayTx;
|
211
173
|
}
|
212
174
|
|
213
|
-
export async function
|
175
|
+
export async function createCompoundDebtPosition({
|
176
|
+
signer,
|
214
177
|
comptrollerProxy,
|
215
178
|
externalPositionManager,
|
216
|
-
fundOwner,
|
217
|
-
externalPositionProxy,
|
218
179
|
}: {
|
180
|
+
signer: SignerWithAddress;
|
219
181
|
comptrollerProxy: ComptrollerLib;
|
220
182
|
externalPositionManager: ExternalPositionManager;
|
221
|
-
fundOwner: SignerWithAddress;
|
222
|
-
externalPositionProxy: AddressLike;
|
223
183
|
}) {
|
224
|
-
|
225
|
-
|
184
|
+
return createExternalPosition({
|
185
|
+
comptrollerProxy,
|
186
|
+
externalPositionManager,
|
187
|
+
externalPositionTypeId: ExternalPositionType.CompoundDebtPosition,
|
188
|
+
signer,
|
226
189
|
});
|
227
|
-
|
228
|
-
const callArgs = callOnExternalPositionArgs({ externalPositionProxy, encodedCallArgs: actionArgs });
|
229
|
-
|
230
|
-
const removeExternalPositionTx = comptrollerProxy
|
231
|
-
.connect(fundOwner)
|
232
|
-
.callOnExtension(externalPositionManager, ExternalPositionManagerActionId.RemoveExternalPosition, callArgs);
|
233
|
-
|
234
|
-
return removeExternalPositionTx;
|
235
190
|
}
|
@@ -1,16 +1,18 @@
|
|
1
|
+
import type { AddressLike } from '@enzymefinance/ethers';
|
2
|
+
import type { SignerWithAddress } from '@enzymefinance/hardhat';
|
3
|
+
import type { ComptrollerLib, ExternalPositionFactory, ExternalPositionManager } from '@enzymefinance/protocol';
|
1
4
|
import {
|
2
|
-
ComptrollerLib,
|
3
5
|
encodeArgs,
|
4
6
|
ExternalPositionManagerActionId,
|
5
|
-
|
6
|
-
|
7
|
+
mockGenericExternalPositionActionArgs,
|
8
|
+
MockGenericExternalPositionActionId,
|
7
9
|
MockGenericExternalPositionLib,
|
8
10
|
MockGenericExternalPositionParser,
|
9
11
|
VaultLib,
|
10
|
-
} from '@enzymefinance/protocol
|
11
|
-
import {
|
12
|
-
|
13
|
-
import {
|
12
|
+
} from '@enzymefinance/protocol';
|
13
|
+
import type { BigNumberish } from 'ethers';
|
14
|
+
|
15
|
+
import { callOnExternalPosition } from './actions';
|
14
16
|
|
15
17
|
export async function createMockExternalPosition({
|
16
18
|
comptrollerProxy,
|
@@ -63,10 +65,130 @@ export async function createMockExternalPosition({
|
|
63
65
|
const externalPositionProxy = (await vaultProxy.getActiveExternalPositions())[0];
|
64
66
|
|
65
67
|
return {
|
66
|
-
typeId,
|
67
|
-
mockGenericExternalPositionLib,
|
68
|
-
mockExternalPositionParser,
|
69
68
|
externalPositionProxy,
|
69
|
+
mockExternalPositionParser,
|
70
|
+
mockGenericExternalPositionLib,
|
70
71
|
receipt,
|
72
|
+
typeId,
|
71
73
|
};
|
72
74
|
}
|
75
|
+
|
76
|
+
export async function mockExternalPositionAddDebtAssets({
|
77
|
+
signer,
|
78
|
+
comptrollerProxy,
|
79
|
+
externalPositionManager,
|
80
|
+
externalPositionProxy,
|
81
|
+
assets,
|
82
|
+
amounts,
|
83
|
+
}: {
|
84
|
+
signer: SignerWithAddress;
|
85
|
+
comptrollerProxy: ComptrollerLib;
|
86
|
+
externalPositionManager: ExternalPositionManager;
|
87
|
+
externalPositionProxy: AddressLike;
|
88
|
+
assets: AddressLike[];
|
89
|
+
amounts: BigNumberish[];
|
90
|
+
}) {
|
91
|
+
const actionArgs = mockGenericExternalPositionActionArgs({
|
92
|
+
amounts,
|
93
|
+
assets,
|
94
|
+
});
|
95
|
+
|
96
|
+
return callOnExternalPosition({
|
97
|
+
actionArgs,
|
98
|
+
actionId: MockGenericExternalPositionActionId.AddDebtAssets,
|
99
|
+
comptrollerProxy,
|
100
|
+
externalPositionManager,
|
101
|
+
externalPositionProxy,
|
102
|
+
signer,
|
103
|
+
});
|
104
|
+
}
|
105
|
+
|
106
|
+
export async function mockExternalPositionAddManagedAssets({
|
107
|
+
signer,
|
108
|
+
comptrollerProxy,
|
109
|
+
externalPositionManager,
|
110
|
+
externalPositionProxy,
|
111
|
+
assets,
|
112
|
+
amounts,
|
113
|
+
}: {
|
114
|
+
signer: SignerWithAddress;
|
115
|
+
comptrollerProxy: ComptrollerLib;
|
116
|
+
externalPositionManager: ExternalPositionManager;
|
117
|
+
externalPositionProxy: AddressLike;
|
118
|
+
assets: AddressLike[];
|
119
|
+
amounts: BigNumberish[];
|
120
|
+
}) {
|
121
|
+
const actionArgs = mockGenericExternalPositionActionArgs({
|
122
|
+
amounts,
|
123
|
+
assets,
|
124
|
+
});
|
125
|
+
|
126
|
+
return callOnExternalPosition({
|
127
|
+
actionArgs,
|
128
|
+
actionId: MockGenericExternalPositionActionId.AddManagedAssets,
|
129
|
+
comptrollerProxy,
|
130
|
+
externalPositionManager,
|
131
|
+
externalPositionProxy,
|
132
|
+
signer,
|
133
|
+
});
|
134
|
+
}
|
135
|
+
|
136
|
+
export async function mockExternalPositionRemoveDebtAssets({
|
137
|
+
signer,
|
138
|
+
comptrollerProxy,
|
139
|
+
externalPositionManager,
|
140
|
+
externalPositionProxy,
|
141
|
+
assets,
|
142
|
+
amounts,
|
143
|
+
}: {
|
144
|
+
signer: SignerWithAddress;
|
145
|
+
comptrollerProxy: ComptrollerLib;
|
146
|
+
externalPositionManager: ExternalPositionManager;
|
147
|
+
externalPositionProxy: AddressLike;
|
148
|
+
assets: AddressLike[];
|
149
|
+
amounts: BigNumberish[];
|
150
|
+
}) {
|
151
|
+
const actionArgs = mockGenericExternalPositionActionArgs({
|
152
|
+
amounts,
|
153
|
+
assets,
|
154
|
+
});
|
155
|
+
|
156
|
+
return callOnExternalPosition({
|
157
|
+
actionArgs,
|
158
|
+
actionId: MockGenericExternalPositionActionId.RemoveDebtAssets,
|
159
|
+
comptrollerProxy,
|
160
|
+
externalPositionManager,
|
161
|
+
externalPositionProxy,
|
162
|
+
signer,
|
163
|
+
});
|
164
|
+
}
|
165
|
+
|
166
|
+
export async function mockExternalPositionRemoveManagedAssets({
|
167
|
+
signer,
|
168
|
+
comptrollerProxy,
|
169
|
+
externalPositionManager,
|
170
|
+
externalPositionProxy,
|
171
|
+
assets,
|
172
|
+
amounts,
|
173
|
+
}: {
|
174
|
+
signer: SignerWithAddress;
|
175
|
+
comptrollerProxy: ComptrollerLib;
|
176
|
+
externalPositionManager: ExternalPositionManager;
|
177
|
+
externalPositionProxy: AddressLike;
|
178
|
+
assets: AddressLike[];
|
179
|
+
amounts: BigNumberish[];
|
180
|
+
}) {
|
181
|
+
const actionArgs = mockGenericExternalPositionActionArgs({
|
182
|
+
amounts,
|
183
|
+
assets,
|
184
|
+
});
|
185
|
+
|
186
|
+
return callOnExternalPosition({
|
187
|
+
actionArgs,
|
188
|
+
actionId: MockGenericExternalPositionActionId.RemoveManagedAssets,
|
189
|
+
comptrollerProxy,
|
190
|
+
externalPositionManager,
|
191
|
+
externalPositionProxy,
|
192
|
+
signer,
|
193
|
+
});
|
194
|
+
}
|