@enzymefinance/testutils 4.0.0-next.0 → 4.0.0-next.5
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 +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
|
+
}
|