@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.
Files changed (81) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/declarations/src/assertions.d.ts +4 -4
  3. package/dist/declarations/src/deployment.d.ts +181 -82
  4. package/dist/declarations/src/gasRelayer.d.ts +56 -54
  5. package/dist/declarations/src/helpers.d.ts +16 -15
  6. package/dist/declarations/src/index.d.ts +6 -6
  7. package/dist/declarations/src/scaffolding/assets.d.ts +10 -10
  8. package/dist/declarations/src/scaffolding/chainlink.d.ts +3 -3
  9. package/dist/declarations/src/scaffolding/common.d.ts +7 -7
  10. package/dist/declarations/src/scaffolding/core.d.ts +17 -16
  11. package/dist/declarations/src/scaffolding/extensions/common.d.ts +11 -11
  12. package/dist/declarations/src/scaffolding/extensions/external-positions/actions.d.ts +35 -0
  13. package/dist/declarations/src/scaffolding/extensions/external-positions/compound.d.ts +56 -59
  14. package/dist/declarations/src/scaffolding/extensions/external-positions/index.d.ts +4 -2
  15. package/dist/declarations/src/scaffolding/extensions/external-positions/mocks.d.ts +53 -20
  16. package/dist/declarations/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.d.ts +99 -0
  17. package/dist/declarations/src/scaffolding/extensions/fees.d.ts +12 -12
  18. package/dist/declarations/src/scaffolding/extensions/index.d.ts +5 -5
  19. package/dist/declarations/src/scaffolding/extensions/integrations/aave.d.ts +20 -19
  20. package/dist/declarations/src/scaffolding/extensions/integrations/compound.d.ts +28 -28
  21. package/dist/declarations/src/scaffolding/extensions/integrations/curve.d.ts +272 -271
  22. package/dist/declarations/src/scaffolding/extensions/integrations/idle.d.ts +28 -28
  23. package/dist/declarations/src/scaffolding/extensions/integrations/index.d.ts +14 -12
  24. package/dist/declarations/src/scaffolding/extensions/integrations/mock.d.ts +32 -32
  25. package/dist/declarations/src/scaffolding/extensions/integrations/paraSwapV4.d.ts +23 -22
  26. package/dist/declarations/src/scaffolding/extensions/integrations/paraSwapV5.d.ts +23 -0
  27. package/dist/declarations/src/scaffolding/extensions/integrations/poolTogetherV4.d.ts +29 -0
  28. package/dist/declarations/src/scaffolding/extensions/integrations/synthetix.d.ts +33 -25
  29. package/dist/declarations/src/scaffolding/extensions/integrations/trackedAssets.d.ts +15 -15
  30. package/dist/declarations/src/scaffolding/extensions/integrations/uniswapV2.d.ts +46 -46
  31. package/dist/declarations/src/scaffolding/extensions/integrations/uniswapV3.d.ts +15 -15
  32. package/dist/declarations/src/scaffolding/extensions/integrations/yearn.d.ts +22 -22
  33. package/dist/declarations/src/scaffolding/extensions/integrations/zeroExV2.d.ts +12 -12
  34. package/dist/declarations/src/scaffolding/extensions/policies.d.ts +17 -17
  35. package/dist/declarations/src/scaffolding/index.d.ts +8 -8
  36. package/dist/declarations/src/scaffolding/setup.d.ts +77 -75
  37. package/dist/declarations/src/scaffolding/shares.d.ts +35 -35
  38. package/dist/declarations/src/scaffolding/vaultCalls.d.ts +32 -17
  39. package/dist/declarations/src/whales.d.ts +42 -44
  40. package/dist/enzymefinance-testutils.browser.cjs.js +1470 -697
  41. package/dist/enzymefinance-testutils.browser.esm.js +1257 -508
  42. package/dist/enzymefinance-testutils.cjs.dev.js +1470 -697
  43. package/dist/enzymefinance-testutils.cjs.prod.js +1470 -697
  44. package/dist/enzymefinance-testutils.esm.js +1257 -508
  45. package/package.json +6 -6
  46. package/src/assertions.ts +5 -2
  47. package/src/deployment.ts +202 -99
  48. package/src/gasRelayer.ts +17 -18
  49. package/src/helpers.ts +6 -4
  50. package/src/scaffolding/assets.ts +6 -5
  51. package/src/scaffolding/chainlink.ts +2 -2
  52. package/src/scaffolding/common.ts +1 -1
  53. package/src/scaffolding/core.ts +28 -12
  54. package/src/scaffolding/extensions/common.ts +4 -4
  55. package/src/scaffolding/extensions/external-positions/actions.ts +103 -0
  56. package/src/scaffolding/extensions/external-positions/compound.ts +69 -114
  57. package/src/scaffolding/extensions/external-positions/index.ts +2 -0
  58. package/src/scaffolding/extensions/external-positions/mocks.ts +132 -10
  59. package/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.ts +290 -0
  60. package/src/scaffolding/extensions/fees.ts +1 -1
  61. package/src/scaffolding/extensions/integrations/aave.ts +6 -8
  62. package/src/scaffolding/extensions/integrations/compound.ts +10 -11
  63. package/src/scaffolding/extensions/integrations/curve.ts +72 -68
  64. package/src/scaffolding/extensions/integrations/idle.ts +9 -11
  65. package/src/scaffolding/extensions/integrations/index.ts +2 -0
  66. package/src/scaffolding/extensions/integrations/mock.ts +11 -13
  67. package/src/scaffolding/extensions/integrations/paraSwapV4.ts +16 -11
  68. package/src/scaffolding/extensions/integrations/paraSwapV5.ts +73 -0
  69. package/src/scaffolding/extensions/integrations/poolTogetherV4.ts +117 -0
  70. package/src/scaffolding/extensions/integrations/synthetix.ts +45 -12
  71. package/src/scaffolding/extensions/integrations/trackedAssets.ts +3 -4
  72. package/src/scaffolding/extensions/integrations/uniswapV2.ts +31 -27
  73. package/src/scaffolding/extensions/integrations/uniswapV3.ts +9 -10
  74. package/src/scaffolding/extensions/integrations/yearn.ts +9 -11
  75. package/src/scaffolding/extensions/integrations/zeroExV2.ts +9 -7
  76. package/src/scaffolding/extensions/policies.ts +2 -1
  77. package/src/scaffolding/setup.ts +27 -19
  78. package/src/scaffolding/shares.ts +5 -4
  79. package/src/scaffolding/vaultCalls.ts +50 -3
  80. package/src/whales.ts +26 -17
  81. 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
- externalPositionRemoveArgs,
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
- export async function createExternalPosition({
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 addCollateral({
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
- const callArgs = callOnExternalPositionArgs({
61
- externalPositionProxy,
37
+ return callOnExternalPosition({
38
+ actionArgs,
62
39
  actionId: CompoundDebtPositionActionId.AddCollateralAssets,
63
- encodedCallArgs: actionArgs,
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 removeCollateral({
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
- const callArgs = callOnExternalPositionArgs({
71
+ return callOnExternalPosition({
72
+ actionArgs,
73
+ actionId: CompoundDebtPositionActionId.BorrowAsset,
74
+ comptrollerProxy,
75
+ externalPositionManager,
97
76
  externalPositionProxy,
98
- actionId: CompoundDebtPositionActionId.RemoveCollateralAssets,
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 borrow({
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
- assets,
129
- amounts,
130
- data: encodeArgs(['address[]'], [cTokens]),
94
+ amounts: [],
95
+ assets: [],
96
+ data: '0x',
131
97
  });
132
98
 
133
- const callArgs = callOnExternalPositionArgs({
99
+ return callOnExternalPosition({
100
+ actionArgs,
101
+ actionId: CompoundDebtPositionActionId.ClaimComp,
102
+ comptrollerProxy,
103
+ externalPositionManager,
134
104
  externalPositionProxy,
135
- actionId: CompoundDebtPositionActionId.BorrowAsset,
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 claimComp({
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
- assets: [],
160
- amounts: [],
161
- data: '0x',
127
+ amounts,
128
+ assets,
129
+ data: encodeArgs(['address[]'], [cTokens]),
162
130
  });
163
131
 
164
- const callArgs = callOnExternalPositionArgs({
132
+ return callOnExternalPosition({
133
+ actionArgs,
134
+ actionId: CompoundDebtPositionActionId.RemoveCollateralAssets,
135
+ comptrollerProxy,
136
+ externalPositionManager,
165
137
  externalPositionProxy,
166
- actionId: CompoundDebtPositionActionId.ClaimComp,
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 repayBorrow({
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
- const callArgs = callOnExternalPositionArgs({
201
- externalPositionProxy,
165
+ return callOnExternalPosition({
166
+ actionArgs,
202
167
  actionId: CompoundDebtPositionActionId.RepayBorrowedAssets,
203
- encodedCallArgs: actionArgs,
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 removeExternalPosition({
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
- const actionArgs = externalPositionRemoveArgs({
225
- externalPositionProxy,
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,2 +1,4 @@
1
+ export * from './actions';
1
2
  export * from './compound';
2
3
  export * from './mocks';
4
+ export * from './uniswap-v3-liquidity';
@@ -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
- ExternalPositionFactory,
6
- ExternalPositionManager,
7
+ mockGenericExternalPositionActionArgs,
8
+ MockGenericExternalPositionActionId,
7
9
  MockGenericExternalPositionLib,
8
10
  MockGenericExternalPositionParser,
9
11
  VaultLib,
10
- } from '@enzymefinance/protocol/src';
11
- import { SignerWithAddress } from '@enzymefinance/hardhat';
12
- import { AddressLike } from '@enzymefinance/ethers';
13
- import { BigNumberish } from 'ethers';
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
+ }