@enzymefinance/testutils 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/declarations/src/assertions.d.ts +4 -0
  3. package/dist/declarations/src/deployment.d.ts +81 -0
  4. package/dist/declarations/src/helpers.d.ts +2 -0
  5. package/dist/declarations/src/index.d.ts +5 -0
  6. package/dist/declarations/src/scaffolding/assets.d.ts +12 -0
  7. package/dist/declarations/src/scaffolding/chainlink.d.ts +3 -0
  8. package/dist/declarations/src/scaffolding/common.d.ts +6 -0
  9. package/dist/declarations/src/scaffolding/core.d.ts +19 -0
  10. package/dist/declarations/src/scaffolding/extensions/common.d.ts +11 -0
  11. package/dist/declarations/src/scaffolding/extensions/fees.d.ts +14 -0
  12. package/dist/declarations/src/scaffolding/extensions/index.d.ts +4 -0
  13. package/dist/declarations/src/scaffolding/extensions/integrations/aave.d.ts +19 -0
  14. package/dist/declarations/src/scaffolding/extensions/integrations/alpha.d.ts +36 -0
  15. package/dist/declarations/src/scaffolding/extensions/integrations/compound.d.ts +27 -0
  16. package/dist/declarations/src/scaffolding/extensions/integrations/curve.d.ts +331 -0
  17. package/dist/declarations/src/scaffolding/extensions/integrations/idle.d.ts +57 -0
  18. package/dist/declarations/src/scaffolding/extensions/integrations/index.d.ts +14 -0
  19. package/dist/declarations/src/scaffolding/extensions/integrations/kyber.d.ts +23 -0
  20. package/dist/declarations/src/scaffolding/extensions/integrations/mock.d.ts +32 -0
  21. package/dist/declarations/src/scaffolding/extensions/integrations/paraSwapV4.d.ts +22 -0
  22. package/dist/declarations/src/scaffolding/extensions/integrations/synthetix.d.ts +25 -0
  23. package/dist/declarations/src/scaffolding/extensions/integrations/trackedAssets.d.ts +17 -0
  24. package/dist/declarations/src/scaffolding/extensions/integrations/uniswapV2.d.ts +46 -0
  25. package/dist/declarations/src/scaffolding/extensions/integrations/uniswapV3.d.ts +15 -0
  26. package/dist/declarations/src/scaffolding/extensions/integrations/yearn.d.ts +22 -0
  27. package/dist/declarations/src/scaffolding/extensions/integrations/zeroExV2.d.ts +12 -0
  28. package/dist/declarations/src/scaffolding/extensions/policies.d.ts +15 -0
  29. package/dist/declarations/src/scaffolding/index.d.ts +9 -0
  30. package/dist/declarations/src/scaffolding/peripheral/index.d.ts +1 -0
  31. package/dist/declarations/src/scaffolding/peripheral/sharesRequestors.d.ts +19 -0
  32. package/dist/declarations/src/scaffolding/setup.d.ts +46 -0
  33. package/dist/declarations/src/scaffolding/shares.d.ts +30 -0
  34. package/dist/declarations/src/scaffolding/vaultCalls.d.ts +17 -0
  35. package/dist/declarations/src/whales.d.ts +43 -0
  36. package/dist/enzymefinance-testutils.browser.cjs.js +3160 -0
  37. package/dist/enzymefinance-testutils.browser.esm.js +3045 -0
  38. package/dist/enzymefinance-testutils.cjs.d.ts +1 -0
  39. package/dist/enzymefinance-testutils.cjs.dev.js +3160 -0
  40. package/dist/enzymefinance-testutils.cjs.js +7 -0
  41. package/dist/enzymefinance-testutils.cjs.prod.js +3160 -0
  42. package/dist/enzymefinance-testutils.esm.js +3045 -0
  43. package/package.json +18 -0
  44. package/src/assertions.ts +20 -0
  45. package/src/deployment.ts +169 -0
  46. package/src/helpers.ts +6 -0
  47. package/src/index.ts +5 -0
  48. package/src/scaffolding/assets.ts +39 -0
  49. package/src/scaffolding/chainlink.ts +8 -0
  50. package/src/scaffolding/common.ts +6 -0
  51. package/src/scaffolding/core.ts +77 -0
  52. package/src/scaffolding/extensions/common.ts +30 -0
  53. package/src/scaffolding/extensions/fees.ts +87 -0
  54. package/src/scaffolding/extensions/index.ts +4 -0
  55. package/src/scaffolding/extensions/integrations/aave.ts +80 -0
  56. package/src/scaffolding/extensions/integrations/alpha.ts +119 -0
  57. package/src/scaffolding/extensions/integrations/compound.ts +97 -0
  58. package/src/scaffolding/extensions/integrations/curve.ts +1207 -0
  59. package/src/scaffolding/extensions/integrations/idle.ts +215 -0
  60. package/src/scaffolding/extensions/integrations/index.ts +14 -0
  61. package/src/scaffolding/extensions/integrations/kyber.ts +69 -0
  62. package/src/scaffolding/extensions/integrations/mock.ts +118 -0
  63. package/src/scaffolding/extensions/integrations/paraSwapV4.ts +65 -0
  64. package/src/scaffolding/extensions/integrations/synthetix.ts +97 -0
  65. package/src/scaffolding/extensions/integrations/trackedAssets.ts +66 -0
  66. package/src/scaffolding/extensions/integrations/uniswapV2.ts +171 -0
  67. package/src/scaffolding/extensions/integrations/uniswapV3.ts +56 -0
  68. package/src/scaffolding/extensions/integrations/yearn.ts +81 -0
  69. package/src/scaffolding/extensions/integrations/zeroExV2.ts +45 -0
  70. package/src/scaffolding/extensions/policies.ts +85 -0
  71. package/src/scaffolding/index.ts +9 -0
  72. package/src/scaffolding/peripheral/index.ts +1 -0
  73. package/src/scaffolding/peripheral/sharesRequestors.ts +53 -0
  74. package/src/scaffolding/setup.ts +135 -0
  75. package/src/scaffolding/shares.ts +63 -0
  76. package/src/scaffolding/vaultCalls.ts +58 -0
  77. package/src/types.d.ts +1 -0
  78. package/src/whales.ts +63 -0
  79. package/tsconfig.json +4 -0
@@ -0,0 +1 @@
1
+ export * from "./declarations/src/index";
@@ -0,0 +1,3160 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
6
+ var _regeneratorRuntime = require('@babel/runtime/regenerator');
7
+ var protocol = require('@enzymefinance/protocol');
8
+ var ethers = require('ethers');
9
+ var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
10
+ var ethers$1 = require('@enzymefinance/ethers');
11
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
12
+
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
14
+
15
+ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefault(_regeneratorRuntime);
16
+
17
+ function getNamedSigner(_x) {
18
+ return _getNamedSigner.apply(this, arguments);
19
+ }
20
+
21
+ function _getNamedSigner() {
22
+ _getNamedSigner = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(name) {
23
+ var accounts;
24
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
25
+ while (1) {
26
+ switch (_context.prev = _context.next) {
27
+ case 0:
28
+ _context.next = 2;
29
+ return hre.getNamedAccounts();
30
+
31
+ case 2:
32
+ accounts = _context.sent;
33
+
34
+ if (accounts[name]) {
35
+ _context.next = 5;
36
+ break;
37
+ }
38
+
39
+ throw new Error("Missing account with name ".concat(name));
40
+
41
+ case 5:
42
+ return _context.abrupt("return", provider.getSignerWithAddress(accounts[name]));
43
+
44
+ case 6:
45
+ case "end":
46
+ return _context.stop();
47
+ }
48
+ }
49
+ }, _callee);
50
+ }));
51
+ return _getNamedSigner.apply(this, arguments);
52
+ }
53
+
54
+ function getUnnamedSigners() {
55
+ return _getUnnamedSigners.apply(this, arguments);
56
+ }
57
+
58
+ function _getUnnamedSigners() {
59
+ _getUnnamedSigners = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
60
+ var accounts;
61
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
62
+ while (1) {
63
+ switch (_context2.prev = _context2.next) {
64
+ case 0:
65
+ _context2.next = 2;
66
+ return hre.getUnnamedAccounts();
67
+
68
+ case 2:
69
+ accounts = _context2.sent;
70
+ return _context2.abrupt("return", Promise.all(accounts.map(function (account) {
71
+ return provider.getSignerWithAddress(account);
72
+ })));
73
+
74
+ case 4:
75
+ case "end":
76
+ return _context2.stop();
77
+ }
78
+ }
79
+ }, _callee2);
80
+ }));
81
+ return _getUnnamedSigners.apply(this, arguments);
82
+ }
83
+
84
+ function deployProtocolFixture() {
85
+ return _deployProtocolFixture.apply(this, arguments);
86
+ }
87
+
88
+ function _deployProtocolFixture() {
89
+ _deployProtocolFixture = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3() {
90
+ var fixture, deployer, accounts, config, deployment;
91
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
92
+ while (1) {
93
+ switch (_context3.prev = _context3.next) {
94
+ case 0:
95
+ _context3.next = 2;
96
+ return hre.deployments.fixture();
97
+
98
+ case 2:
99
+ fixture = _context3.sent;
100
+ _context3.next = 5;
101
+ return getNamedSigner('deployer');
102
+
103
+ case 5:
104
+ deployer = _context3.sent;
105
+ _context3.next = 8;
106
+ return getUnnamedSigners();
107
+
108
+ case 8:
109
+ accounts = _context3.sent;
110
+ config = fixture['Config'].linkedData; // prettier-ignore
111
+
112
+ deployment = {
113
+ dispatcher: new protocol.Dispatcher(fixture['Dispatcher'].address, deployer),
114
+ vaultLib: new protocol.VaultLib(fixture['VaultLib'].address, deployer),
115
+ fundDeployer: new protocol.FundDeployer(fixture['FundDeployer'].address, deployer),
116
+ policyManager: new protocol.PolicyManager(fixture['PolicyManager'].address, deployer),
117
+ aavePriceFeed: new protocol.AavePriceFeed(fixture['AavePriceFeed'].address, deployer),
118
+ alphaHomoraV1PriceFeed: new protocol.AlphaHomoraV1PriceFeed(fixture['AlphaHomoraV1PriceFeed'].address, deployer),
119
+ chainlinkPriceFeed: new protocol.ChainlinkPriceFeed(fixture['ChainlinkPriceFeed'].address, deployer),
120
+ compoundPriceFeed: new protocol.CompoundPriceFeed(fixture['CompoundPriceFeed'].address, deployer),
121
+ curvePriceFeed: new protocol.CurvePriceFeed(fixture['CurvePriceFeed'].address, deployer),
122
+ idlePriceFeed: new protocol.IdlePriceFeed(fixture['IdlePriceFeed'].address, deployer),
123
+ lidoStethPriceFeed: new protocol.LidoStethPriceFeed(fixture['LidoStethPriceFeed'].address, deployer),
124
+ revertingPriceFeed: new protocol.RevertingPriceFeed(fixture['RevertingPriceFeed'].address, deployer),
125
+ synthetixPriceFeed: new protocol.SynthetixPriceFeed(fixture['SynthetixPriceFeed'].address, deployer),
126
+ stakehoundEthPriceFeed: new protocol.StakehoundEthPriceFeed(fixture['StakehoundEthPriceFeed'].address, deployer),
127
+ wdgldPriceFeed: new protocol.WdgldPriceFeed(fixture['WdgldPriceFeed'].address, deployer),
128
+ yearnVaultV2PriceFeed: new protocol.YearnVaultV2PriceFeed(fixture['YearnVaultV2PriceFeed'].address, deployer),
129
+ aggregatedDerivativePriceFeed: new protocol.AggregatedDerivativePriceFeed(fixture['AggregatedDerivativePriceFeed'].address, deployer),
130
+ valueInterpreter: new protocol.ValueInterpreter(fixture['ValueInterpreter'].address, deployer),
131
+ uniswapV2PoolPriceFeed: new protocol.UniswapV2PoolPriceFeed(fixture['UniswapV2PoolPriceFeed'].address, deployer),
132
+ integrationManager: new protocol.IntegrationManager(fixture['IntegrationManager'].address, deployer),
133
+ curveLiquidityAaveAdapter: new protocol.CurveLiquidityAaveAdapter(fixture['CurveLiquidityAaveAdapter'].address, deployer),
134
+ curveLiquidityEursAdapter: new protocol.CurveLiquidityEursAdapter(fixture['CurveLiquidityEursAdapter'].address, deployer),
135
+ curveLiquiditySethAdapter: new protocol.CurveLiquiditySethAdapter(fixture['CurveLiquiditySethAdapter'].address, deployer),
136
+ curveLiquidityStethAdapter: new protocol.CurveLiquidityStethAdapter(fixture['CurveLiquidityStethAdapter'].address, deployer),
137
+ aaveAdapter: new protocol.AaveAdapter(fixture['AaveAdapter'].address, deployer),
138
+ alphaHomoraV1Adapter: new protocol.AlphaHomoraV1Adapter(fixture['AlphaHomoraV1Adapter'].address, deployer),
139
+ idleAdapter: new protocol.IdleAdapter(fixture['IdleAdapter'].address, deployer),
140
+ paraSwapV4Adapter: new protocol.ParaSwapV4Adapter(fixture['ParaSwapV4Adapter'].address, deployer),
141
+ synthetixAdapter: new protocol.SynthetixAdapter(fixture['SynthetixAdapter'].address, deployer),
142
+ yearnVaultV2Adapter: new protocol.YearnVaultV2Adapter(fixture['YearnVaultV2Adapter'].address, deployer),
143
+ zeroExV2Adapter: new protocol.ZeroExV2Adapter(fixture['ZeroExV2Adapter'].address, deployer),
144
+ compoundAdapter: new protocol.CompoundAdapter(fixture['CompoundAdapter'].address, deployer),
145
+ uniswapV2Adapter: new protocol.UniswapV2Adapter(fixture['UniswapV2Adapter'].address, deployer),
146
+ trackedAssetsAdapter: new protocol.TrackedAssetsAdapter(fixture['TrackedAssetsAdapter'].address, deployer),
147
+ uniswapV3Adapter: new protocol.UniswapV3Adapter(fixture['UniswapV3Adapter'].address, deployer),
148
+ curveExchangeAdapter: new protocol.CurveExchangeAdapter(fixture['CurveExchangeAdapter'].address, deployer),
149
+ kyberAdapter: new protocol.KyberAdapter(fixture['KyberAdapter'].address, deployer),
150
+ feeManager: new protocol.FeeManager(fixture['FeeManager'].address, deployer),
151
+ comptrollerLib: new protocol.ComptrollerLib(fixture['ComptrollerLib'].address, deployer),
152
+ entranceRateBurnFee: new protocol.EntranceRateBurnFee(fixture['EntranceRateBurnFee'].address, deployer),
153
+ entranceRateDirectFee: new protocol.EntranceRateDirectFee(fixture['EntranceRateDirectFee'].address, deployer),
154
+ managementFee: new protocol.ManagementFee(fixture['ManagementFee'].address, deployer),
155
+ performanceFee: new protocol.PerformanceFee(fixture['PerformanceFee'].address, deployer),
156
+ authUserExecutedSharesRequestorLib: new protocol.AuthUserExecutedSharesRequestorLib(fixture['AuthUserExecutedSharesRequestorLib'].address, deployer),
157
+ authUserExecutedSharesRequestorFactory: new protocol.AuthUserExecutedSharesRequestorFactory(fixture['AuthUserExecutedSharesRequestorFactory'].address, deployer),
158
+ fundActionsWrapper: new protocol.FundActionsWrapper(fixture['FundActionsWrapper'].address, deployer),
159
+ adapterBlacklist: new protocol.AdapterBlacklist(fixture['AdapterBlacklist'].address, deployer),
160
+ adapterWhitelist: new protocol.AdapterWhitelist(fixture['AdapterWhitelist'].address, deployer),
161
+ assetBlacklist: new protocol.AssetBlacklist(fixture['AssetBlacklist'].address, deployer),
162
+ assetWhitelist: new protocol.AssetWhitelist(fixture['AssetWhitelist'].address, deployer),
163
+ buySharesCallerWhitelist: new protocol.BuySharesCallerWhitelist(fixture['BuySharesCallerWhitelist'].address, deployer),
164
+ maxConcentration: new protocol.MaxConcentration(fixture['MaxConcentration'].address, deployer),
165
+ minMaxInvestment: new protocol.MinMaxInvestment(fixture['MinMaxInvestment'].address, deployer),
166
+ investorWhitelist: new protocol.InvestorWhitelist(fixture['InvestorWhitelist'].address, deployer),
167
+ guaranteedRedemption: new protocol.GuaranteedRedemption(fixture['GuaranteedRedemption'].address, deployer)
168
+ };
169
+ return _context3.abrupt("return", {
170
+ deployer: deployer,
171
+ deployment: deployment,
172
+ accounts: accounts,
173
+ config: config
174
+ });
175
+
176
+ case 12:
177
+ case "end":
178
+ return _context3.stop();
179
+ }
180
+ }
181
+ }, _callee3);
182
+ }));
183
+ return _deployProtocolFixture.apply(this, arguments);
184
+ }
185
+
186
+ // TODO: Remove this.
187
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
188
+ function defaultTestDeployment(_x2) {
189
+ return _defaultTestDeployment.apply(this, arguments);
190
+ }
191
+
192
+ function _defaultTestDeployment() {
193
+ _defaultTestDeployment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee4(_) {
194
+ return _regeneratorRuntime__default['default'].wrap(function _callee4$(_context4) {
195
+ while (1) {
196
+ switch (_context4.prev = _context4.next) {
197
+ case 0:
198
+ throw new Error('Removed');
199
+
200
+ case 1:
201
+ case "end":
202
+ return _context4.stop();
203
+ }
204
+ }
205
+ }, _callee4);
206
+ }));
207
+ return _defaultTestDeployment.apply(this, arguments);
208
+ }
209
+
210
+ function addTrackedAssets(_x) {
211
+ return _addTrackedAssets.apply(this, arguments);
212
+ }
213
+
214
+ function _addTrackedAssets() {
215
+ _addTrackedAssets = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
216
+ var comptrollerProxy, integrationManager, fundOwner, trackedAssetsAdapter, incomingAssets, args, callArgs, addTrackedAssetsTx;
217
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
218
+ while (1) {
219
+ switch (_context.prev = _context.next) {
220
+ case 0:
221
+ comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, trackedAssetsAdapter = _ref.trackedAssetsAdapter, incomingAssets = _ref.incomingAssets;
222
+ args = protocol.addTrackedAssetsArgs(incomingAssets);
223
+ callArgs = protocol.callOnIntegrationArgs({
224
+ adapter: trackedAssetsAdapter,
225
+ selector: protocol.addTrackedAssetsSelector,
226
+ encodedCallArgs: args
227
+ });
228
+ addTrackedAssetsTx = comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
229
+ _context.next = 6;
230
+ return expect(addTrackedAssetsTx).resolves.toBeReceipt();
231
+
232
+ case 6:
233
+ return _context.abrupt("return", addTrackedAssetsTx);
234
+
235
+ case 7:
236
+ case "end":
237
+ return _context.stop();
238
+ }
239
+ }
240
+ }, _callee);
241
+ }));
242
+ return _addTrackedAssets.apply(this, arguments);
243
+ }
244
+
245
+ function removeTrackedAssets(_x2) {
246
+ return _removeTrackedAssets.apply(this, arguments);
247
+ }
248
+
249
+ function _removeTrackedAssets() {
250
+ _removeTrackedAssets = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
251
+ var comptrollerProxy, integrationManager, fundOwner, trackedAssetsAdapter, spendAssets, callArgs;
252
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
253
+ while (1) {
254
+ switch (_context2.prev = _context2.next) {
255
+ case 0:
256
+ comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, trackedAssetsAdapter = _ref2.trackedAssetsAdapter, spendAssets = _ref2.spendAssets;
257
+ callArgs = protocol.callOnIntegrationArgs({
258
+ adapter: trackedAssetsAdapter,
259
+ selector: protocol.removeTrackedAssetsSelector,
260
+ encodedCallArgs: protocol.removeTrackedAssetsArgs(spendAssets)
261
+ });
262
+ return _context2.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
263
+
264
+ case 3:
265
+ case "end":
266
+ return _context2.stop();
267
+ }
268
+ }
269
+ }, _callee2);
270
+ }));
271
+ return _removeTrackedAssets.apply(this, arguments);
272
+ }
273
+
274
+ function addNewAssetsToFund(_x) {
275
+ return _addNewAssetsToFund.apply(this, arguments);
276
+ }
277
+
278
+ function _addNewAssetsToFund() {
279
+ _addNewAssetsToFund = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
280
+ var fundOwner, comptrollerProxy, vaultProxy, integrationManager, trackedAssetsAdapter, assets, _ref$amounts, amounts, i;
281
+
282
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
283
+ while (1) {
284
+ switch (_context.prev = _context.next) {
285
+ case 0:
286
+ fundOwner = _ref.fundOwner, comptrollerProxy = _ref.comptrollerProxy, vaultProxy = _ref.vaultProxy, integrationManager = _ref.integrationManager, trackedAssetsAdapter = _ref.trackedAssetsAdapter, assets = _ref.assets, _ref$amounts = _ref.amounts, amounts = _ref$amounts === void 0 ? new Array(assets.length).fill(1) : _ref$amounts;
287
+ _context.t0 = _regeneratorRuntime__default['default'].keys(assets);
288
+
289
+ case 2:
290
+ if ((_context.t1 = _context.t0()).done) {
291
+ _context.next = 8;
292
+ break;
293
+ }
294
+
295
+ i = _context.t1.value;
296
+ _context.next = 6;
297
+ return assets[i].transfer(vaultProxy, amounts[i]);
298
+
299
+ case 6:
300
+ _context.next = 2;
301
+ break;
302
+
303
+ case 8:
304
+ return _context.abrupt("return", addTrackedAssets({
305
+ comptrollerProxy: comptrollerProxy,
306
+ integrationManager: integrationManager,
307
+ fundOwner: fundOwner,
308
+ trackedAssetsAdapter: trackedAssetsAdapter,
309
+ incomingAssets: assets
310
+ }));
311
+
312
+ case 9:
313
+ case "end":
314
+ return _context.stop();
315
+ }
316
+ }
317
+ }, _callee);
318
+ }));
319
+ return _addNewAssetsToFund.apply(this, arguments);
320
+ }
321
+
322
+ function updateChainlinkAggregator(_x, _x2) {
323
+ return _updateChainlinkAggregator.apply(this, arguments);
324
+ }
325
+
326
+ function _updateChainlinkAggregator() {
327
+ _updateChainlinkAggregator = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(aggregator, price) {
328
+ var answer, block;
329
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
330
+ while (1) {
331
+ switch (_context.prev = _context.next) {
332
+ case 0:
333
+ if (!(price !== null && price !== void 0)) {
334
+ _context.next = 4;
335
+ break;
336
+ }
337
+
338
+ _context.t0 = price;
339
+ _context.next = 7;
340
+ break;
341
+
342
+ case 4:
343
+ _context.next = 6;
344
+ return aggregator.latestAnswer();
345
+
346
+ case 6:
347
+ _context.t0 = _context.sent;
348
+
349
+ case 7:
350
+ answer = _context.t0;
351
+ _context.next = 10;
352
+ return aggregator.provider.getBlock('latest');
353
+
354
+ case 10:
355
+ block = _context.sent;
356
+ _context.next = 13;
357
+ return aggregator.setLatestAnswer(answer, block.timestamp);
358
+
359
+ case 13:
360
+ case "end":
361
+ return _context.stop();
362
+ }
363
+ }
364
+ }, _callee);
365
+ }));
366
+ return _updateChainlinkAggregator.apply(this, arguments);
367
+ }
368
+
369
+ function getAssetBalances(_x) {
370
+ return _getAssetBalances.apply(this, arguments);
371
+ }
372
+
373
+ function _getAssetBalances() {
374
+ _getAssetBalances = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
375
+ var account, assets;
376
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
377
+ while (1) {
378
+ switch (_context.prev = _context.next) {
379
+ case 0:
380
+ account = _ref.account, assets = _ref.assets;
381
+ return _context.abrupt("return", Promise.all(assets.map(function (asset) {
382
+ return asset.balanceOf(account);
383
+ })));
384
+
385
+ case 2:
386
+ case "end":
387
+ return _context.stop();
388
+ }
389
+ }
390
+ }, _callee);
391
+ }));
392
+ return _getAssetBalances.apply(this, arguments);
393
+ }
394
+
395
+ function createFundDeployer(_x) {
396
+ return _createFundDeployer.apply(this, arguments);
397
+ }
398
+
399
+ function _createFundDeployer() {
400
+ _createFundDeployer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
401
+ var deployer, chainlinkPriceFeed, dispatcher, feeManager, integrationManager, policyManager, synthetixAddressResolverAddress, synthetixPriceFeed, valueInterpreter, vaultLib, _ref$vaultCallContrac, vaultCallContracts, _ref$vaultCallSelecto, vaultCallSelectors, _ref$setOnDispatcher, setOnDispatcher, _ref$setReleaseStatus, setReleaseStatusLive, nextFundDeployer, nextComptrollerLib;
402
+
403
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
404
+ while (1) {
405
+ switch (_context.prev = _context.next) {
406
+ case 0:
407
+ deployer = _ref.deployer, chainlinkPriceFeed = _ref.chainlinkPriceFeed, dispatcher = _ref.dispatcher, feeManager = _ref.feeManager, integrationManager = _ref.integrationManager, policyManager = _ref.policyManager, synthetixAddressResolverAddress = _ref.synthetixAddressResolverAddress, synthetixPriceFeed = _ref.synthetixPriceFeed, valueInterpreter = _ref.valueInterpreter, vaultLib = _ref.vaultLib, _ref$vaultCallContrac = _ref.vaultCallContracts, vaultCallContracts = _ref$vaultCallContrac === void 0 ? [] : _ref$vaultCallContrac, _ref$vaultCallSelecto = _ref.vaultCallSelectors, vaultCallSelectors = _ref$vaultCallSelecto === void 0 ? [] : _ref$vaultCallSelecto, _ref$setOnDispatcher = _ref.setOnDispatcher, setOnDispatcher = _ref$setOnDispatcher === void 0 ? true : _ref$setOnDispatcher, _ref$setReleaseStatus = _ref.setReleaseStatusLive, setReleaseStatusLive = _ref$setReleaseStatus === void 0 ? true : _ref$setReleaseStatus;
408
+ _context.next = 3;
409
+ return protocol.FundDeployer.deploy(deployer, dispatcher, vaultLib, vaultCallContracts, vaultCallSelectors);
410
+
411
+ case 3:
412
+ nextFundDeployer = _context.sent;
413
+ _context.next = 6;
414
+ return protocol.ComptrollerLib.deploy(deployer, dispatcher, nextFundDeployer, valueInterpreter, feeManager, integrationManager, policyManager, chainlinkPriceFeed, synthetixPriceFeed, synthetixAddressResolverAddress);
415
+
416
+ case 6:
417
+ nextComptrollerLib = _context.sent;
418
+ _context.next = 9;
419
+ return nextFundDeployer.setComptrollerLib(nextComptrollerLib);
420
+
421
+ case 9:
422
+ if (!setReleaseStatusLive) {
423
+ _context.next = 12;
424
+ break;
425
+ }
426
+
427
+ _context.next = 12;
428
+ return nextFundDeployer.setReleaseStatus(protocol.ReleaseStatusTypes.Live);
429
+
430
+ case 12:
431
+ if (!setOnDispatcher) {
432
+ _context.next = 15;
433
+ break;
434
+ }
435
+
436
+ _context.next = 15;
437
+ return dispatcher.setCurrentFundDeployer(nextFundDeployer);
438
+
439
+ case 15:
440
+ return _context.abrupt("return", nextFundDeployer);
441
+
442
+ case 16:
443
+ case "end":
444
+ return _context.stop();
445
+ }
446
+ }
447
+ }, _callee);
448
+ }));
449
+ return _createFundDeployer.apply(this, arguments);
450
+ }
451
+
452
+ function callOnExtension(_x) {
453
+ return _callOnExtension.apply(this, arguments);
454
+ }
455
+
456
+ function _callOnExtension() {
457
+ _callOnExtension = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
458
+ var comptrollerProxy, extension, actionId, _ref$callArgs, callArgs, signer, callOnExtensionTx;
459
+
460
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
461
+ while (1) {
462
+ switch (_context.prev = _context.next) {
463
+ case 0:
464
+ comptrollerProxy = _ref.comptrollerProxy, extension = _ref.extension, actionId = _ref.actionId, _ref$callArgs = _ref.callArgs, callArgs = _ref$callArgs === void 0 ? '0x' : _ref$callArgs, signer = _ref.signer;
465
+
466
+ if (signer) {
467
+ callOnExtensionTx = comptrollerProxy.connect(signer).callOnExtension(extension, actionId, callArgs);
468
+ } else {
469
+ callOnExtensionTx = comptrollerProxy.callOnExtension(extension, actionId, callArgs);
470
+ }
471
+
472
+ _context.next = 4;
473
+ return expect(callOnExtensionTx).resolves.toBeReceipt();
474
+
475
+ case 4:
476
+ return _context.abrupt("return", callOnExtensionTx);
477
+
478
+ case 5:
479
+ case "end":
480
+ return _context.stop();
481
+ }
482
+ }
483
+ }, _callee);
484
+ }));
485
+ return _callOnExtension.apply(this, arguments);
486
+ }
487
+
488
+ function generateFeeManagerConfigWithMockFees(_x) {
489
+ return _generateFeeManagerConfigWithMockFees.apply(this, arguments);
490
+ }
491
+
492
+ function _generateFeeManagerConfigWithMockFees() {
493
+ _generateFeeManagerConfigWithMockFees = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
494
+ var deployer, feeManager, fees, feeManagerSettingsData;
495
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
496
+ while (1) {
497
+ switch (_context.prev = _context.next) {
498
+ case 0:
499
+ deployer = _ref.deployer, feeManager = _ref.feeManager;
500
+ _context.next = 3;
501
+ return generateRegisteredMockFees({
502
+ deployer: deployer,
503
+ feeManager: feeManager
504
+ });
505
+
506
+ case 3:
507
+ fees = _context.sent;
508
+ feeManagerSettingsData = [ethers.utils.randomBytes(10), '0x', ethers.utils.randomBytes(2)];
509
+ return _context.abrupt("return", protocol.feeManagerConfigArgs({
510
+ fees: Object.values(fees),
511
+ settings: feeManagerSettingsData
512
+ }));
513
+
514
+ case 6:
515
+ case "end":
516
+ return _context.stop();
517
+ }
518
+ }
519
+ }, _callee);
520
+ }));
521
+ return _generateFeeManagerConfigWithMockFees.apply(this, arguments);
522
+ }
523
+
524
+ function generateRegisteredMockFees(_x2) {
525
+ return _generateRegisteredMockFees.apply(this, arguments);
526
+ }
527
+
528
+ function _generateRegisteredMockFees() {
529
+ _generateRegisteredMockFees = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
530
+ var deployer, feeManager, mockContinuousFeeSettleOnly, mockContinuousFeeWithGavAndUpdates, mockPostBuySharesFee;
531
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
532
+ while (1) {
533
+ switch (_context2.prev = _context2.next) {
534
+ case 0:
535
+ deployer = _ref2.deployer, feeManager = _ref2.feeManager;
536
+ _context2.next = 3;
537
+ return protocol.IFee.mock(deployer);
538
+
539
+ case 3:
540
+ mockContinuousFeeSettleOnly = _context2.sent;
541
+ _context2.next = 6;
542
+ return protocol.IFee.mock(deployer);
543
+
544
+ case 6:
545
+ mockContinuousFeeWithGavAndUpdates = _context2.sent;
546
+ _context2.next = 9;
547
+ return protocol.IFee.mock(deployer);
548
+
549
+ case 9:
550
+ mockPostBuySharesFee = _context2.sent;
551
+ _context2.next = 12;
552
+ return Promise.all([// Continuous fee the mimics ManagementFee
553
+ mockContinuousFeeSettleOnly.identifier.returns("MOCK_CONTINUOUS_1"), mockContinuousFeeSettleOnly.settle.returns(protocol.FeeSettlementType.None, ethers.constants.AddressZero, 0), mockContinuousFeeSettleOnly.payout.returns(false), mockContinuousFeeSettleOnly.addFundSettings.returns(undefined), mockContinuousFeeSettleOnly.activateForFund.returns(undefined), mockContinuousFeeSettleOnly.update.returns(undefined), mockContinuousFeeSettleOnly.implementedHooks.returns([protocol.FeeHook.Continuous, protocol.FeeHook.PreBuyShares, protocol.FeeHook.PreRedeemShares], [], false, false), // Continuous fee the mimics PerformanceFee
554
+ mockContinuousFeeWithGavAndUpdates.identifier.returns("MOCK_CONTINUOUS_2"), mockContinuousFeeWithGavAndUpdates.settle.returns(protocol.FeeSettlementType.None, ethers.constants.AddressZero, 0), mockContinuousFeeWithGavAndUpdates.payout.returns(false), mockContinuousFeeWithGavAndUpdates.addFundSettings.returns(undefined), mockContinuousFeeWithGavAndUpdates.activateForFund.returns(undefined), mockContinuousFeeWithGavAndUpdates.update.returns(undefined), mockContinuousFeeWithGavAndUpdates.implementedHooks.returns([protocol.FeeHook.Continuous, protocol.FeeHook.PreBuyShares, protocol.FeeHook.PreRedeemShares], [protocol.FeeHook.Continuous, protocol.FeeHook.PostBuyShares, protocol.FeeHook.PreRedeemShares], true, true), // PostBuyShares fee
555
+ mockPostBuySharesFee.identifier.returns("MOCK_POST_BUY_SHARES"), mockPostBuySharesFee.settle.returns(protocol.FeeSettlementType.None, ethers.constants.AddressZero, 0), mockPostBuySharesFee.payout.returns(false), mockPostBuySharesFee.addFundSettings.returns(undefined), mockPostBuySharesFee.activateForFund.returns(undefined), mockPostBuySharesFee.update.returns(undefined), mockPostBuySharesFee.implementedHooks.returns([protocol.FeeHook.PostBuyShares], [], false, false)]);
556
+
557
+ case 12:
558
+ _context2.next = 14;
559
+ return feeManager.registerFees([mockContinuousFeeSettleOnly, mockContinuousFeeWithGavAndUpdates, mockPostBuySharesFee]);
560
+
561
+ case 14:
562
+ return _context2.abrupt("return", {
563
+ mockContinuousFeeSettleOnly: mockContinuousFeeSettleOnly,
564
+ mockContinuousFeeWithGavAndUpdates: mockContinuousFeeWithGavAndUpdates,
565
+ mockPostBuySharesFee: mockPostBuySharesFee
566
+ });
567
+
568
+ case 15:
569
+ case "end":
570
+ return _context2.stop();
571
+ }
572
+ }
573
+ }, _callee2);
574
+ }));
575
+ return _generateRegisteredMockFees.apply(this, arguments);
576
+ }
577
+
578
+ function aaveLend(_x) {
579
+ return _aaveLend.apply(this, arguments);
580
+ }
581
+
582
+ function _aaveLend() {
583
+ _aaveLend = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
584
+ var comptrollerProxy, integrationManager, fundOwner, aaveAdapter, aToken, _ref$amount, amount, lendArgs, callArgs, lendTx;
585
+
586
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
587
+ while (1) {
588
+ switch (_context.prev = _context.next) {
589
+ case 0:
590
+ comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, aaveAdapter = _ref.aaveAdapter, aToken = _ref.aToken, _ref$amount = _ref.amount, amount = _ref$amount === void 0 ? ethers.utils.parseEther('1') : _ref$amount;
591
+ lendArgs = protocol.aaveLendArgs({
592
+ aToken: aToken,
593
+ amount: amount
594
+ });
595
+ callArgs = protocol.callOnIntegrationArgs({
596
+ adapter: aaveAdapter,
597
+ selector: protocol.lendSelector,
598
+ encodedCallArgs: lendArgs
599
+ });
600
+ lendTx = comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
601
+ return _context.abrupt("return", lendTx);
602
+
603
+ case 5:
604
+ case "end":
605
+ return _context.stop();
606
+ }
607
+ }
608
+ }, _callee);
609
+ }));
610
+ return _aaveLend.apply(this, arguments);
611
+ }
612
+
613
+ function aaveRedeem(_x2) {
614
+ return _aaveRedeem.apply(this, arguments);
615
+ }
616
+
617
+ function _aaveRedeem() {
618
+ _aaveRedeem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
619
+ var comptrollerProxy, integrationManager, fundOwner, aaveAdapter, aToken, _ref2$amount, amount, redeemArgs, callArgs, redeemTx;
620
+
621
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
622
+ while (1) {
623
+ switch (_context2.prev = _context2.next) {
624
+ case 0:
625
+ comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, aaveAdapter = _ref2.aaveAdapter, aToken = _ref2.aToken, _ref2$amount = _ref2.amount, amount = _ref2$amount === void 0 ? ethers.utils.parseEther('1') : _ref2$amount;
626
+ redeemArgs = protocol.aaveRedeemArgs({
627
+ aToken: aToken,
628
+ amount: amount
629
+ });
630
+ callArgs = protocol.callOnIntegrationArgs({
631
+ adapter: aaveAdapter,
632
+ selector: protocol.redeemSelector,
633
+ encodedCallArgs: redeemArgs
634
+ });
635
+ redeemTx = comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
636
+ return _context2.abrupt("return", redeemTx);
637
+
638
+ case 5:
639
+ case "end":
640
+ return _context2.stop();
641
+ }
642
+ }
643
+ }, _callee2);
644
+ }));
645
+ return _aaveRedeem.apply(this, arguments);
646
+ }
647
+
648
+ var _templateObject$4, _templateObject2$1;
649
+ var AlphaHomoraV1BankConfig = ethers$1.contract()(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteral(["\n function getReservePoolBps() view returns (uint256)\n"])));
650
+ var AlphaHomoraV1Bank = ethers$1.contract()(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral(["\n function config() view returns (address)\n function glbDebtVal() view returns (uint256)\n function pendingInterest(uint256) view returns (uint256)\n function reservePool() view returns (uint256)\n function totalEth() view returns (uint256)\n"])));
651
+ function alphaHomoraV1Lend(_x) {
652
+ return _alphaHomoraV1Lend.apply(this, arguments);
653
+ }
654
+
655
+ function _alphaHomoraV1Lend() {
656
+ _alphaHomoraV1Lend = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
657
+ var comptrollerProxy, integrationManager, fundOwner, alphaHomoraV1Adapter, _ref$wethAmount, wethAmount, _ref$minibethAmount, minibethAmount, lendArgs, callArgs;
658
+
659
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
660
+ while (1) {
661
+ switch (_context.prev = _context.next) {
662
+ case 0:
663
+ comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, alphaHomoraV1Adapter = _ref.alphaHomoraV1Adapter, _ref$wethAmount = _ref.wethAmount, wethAmount = _ref$wethAmount === void 0 ? ethers.utils.parseEther('1') : _ref$wethAmount, _ref$minibethAmount = _ref.minibethAmount, minibethAmount = _ref$minibethAmount === void 0 ? 1 : _ref$minibethAmount;
664
+ lendArgs = protocol.alphaHomoraV1LendArgs({
665
+ outgoingWethAmount: wethAmount,
666
+ minIncomingIbethAmount: minibethAmount
667
+ });
668
+ callArgs = protocol.callOnIntegrationArgs({
669
+ adapter: alphaHomoraV1Adapter,
670
+ selector: protocol.lendSelector,
671
+ encodedCallArgs: lendArgs
672
+ });
673
+ return _context.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
674
+
675
+ case 4:
676
+ case "end":
677
+ return _context.stop();
678
+ }
679
+ }
680
+ }, _callee);
681
+ }));
682
+ return _alphaHomoraV1Lend.apply(this, arguments);
683
+ }
684
+
685
+ function alphaHomoraV1Redeem(_x2) {
686
+ return _alphaHomoraV1Redeem.apply(this, arguments);
687
+ }
688
+
689
+ function _alphaHomoraV1Redeem() {
690
+ _alphaHomoraV1Redeem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
691
+ var comptrollerProxy, integrationManager, fundOwner, alphaHomoraV1Adapter, _ref2$ibethAmount, ibethAmount, _ref2$minWethAmount, minWethAmount, redeemArgs, callArgs;
692
+
693
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
694
+ while (1) {
695
+ switch (_context2.prev = _context2.next) {
696
+ case 0:
697
+ comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, alphaHomoraV1Adapter = _ref2.alphaHomoraV1Adapter, _ref2$ibethAmount = _ref2.ibethAmount, ibethAmount = _ref2$ibethAmount === void 0 ? ethers.utils.parseEther('1') : _ref2$ibethAmount, _ref2$minWethAmount = _ref2.minWethAmount, minWethAmount = _ref2$minWethAmount === void 0 ? 1 : _ref2$minWethAmount;
698
+ redeemArgs = protocol.alphaHomoraV1RedeemArgs({
699
+ outgoingIbethAmount: ibethAmount,
700
+ minIncomingWethAmount: minWethAmount
701
+ });
702
+ callArgs = protocol.callOnIntegrationArgs({
703
+ adapter: alphaHomoraV1Adapter,
704
+ selector: protocol.redeemSelector,
705
+ encodedCallArgs: redeemArgs
706
+ });
707
+ return _context2.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
708
+
709
+ case 4:
710
+ case "end":
711
+ return _context2.stop();
712
+ }
713
+ }
714
+ }, _callee2);
715
+ }));
716
+ return _alphaHomoraV1Redeem.apply(this, arguments);
717
+ }
718
+
719
+ function calcAlphaBankLiveTotalEth(_x3) {
720
+ return _calcAlphaBankLiveTotalEth.apply(this, arguments);
721
+ }
722
+
723
+ function _calcAlphaBankLiveTotalEth() {
724
+ _calcAlphaBankLiveTotalEth = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3(_ref3) {
725
+ var provider, alphaHomoraBank, pendingInterest, glbDebtVal, bankConfig, toReserveAmount, reservePool, bankEthBalance;
726
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
727
+ while (1) {
728
+ switch (_context3.prev = _context3.next) {
729
+ case 0:
730
+ provider = _ref3.provider, alphaHomoraBank = _ref3.alphaHomoraBank;
731
+ _context3.next = 3;
732
+ return alphaHomoraBank.pendingInterest(0);
733
+
734
+ case 3:
735
+ pendingInterest = _context3.sent;
736
+ _context3.next = 6;
737
+ return alphaHomoraBank.glbDebtVal();
738
+
739
+ case 6:
740
+ glbDebtVal = _context3.sent.add(pendingInterest);
741
+ _context3.t0 = AlphaHomoraV1BankConfig;
742
+ _context3.next = 10;
743
+ return alphaHomoraBank.config();
744
+
745
+ case 10:
746
+ _context3.t1 = _context3.sent;
747
+ _context3.t2 = provider;
748
+ bankConfig = new _context3.t0(_context3.t1, _context3.t2);
749
+ _context3.t3 = pendingInterest;
750
+ _context3.next = 16;
751
+ return bankConfig.getReservePoolBps();
752
+
753
+ case 16:
754
+ _context3.t4 = _context3.sent;
755
+ toReserveAmount = _context3.t3.mul.call(_context3.t3, _context3.t4).div(10000);
756
+ _context3.next = 20;
757
+ return alphaHomoraBank.reservePool();
758
+
759
+ case 20:
760
+ reservePool = _context3.sent.add(toReserveAmount);
761
+ _context3.next = 23;
762
+ return provider.getBalance(alphaHomoraBank.address);
763
+
764
+ case 23:
765
+ bankEthBalance = _context3.sent;
766
+ return _context3.abrupt("return", bankEthBalance.add(glbDebtVal).sub(reservePool));
767
+
768
+ case 25:
769
+ case "end":
770
+ return _context3.stop();
771
+ }
772
+ }
773
+ }, _callee3);
774
+ }));
775
+ return _calcAlphaBankLiveTotalEth.apply(this, arguments);
776
+ }
777
+
778
+ var _templateObject$3;
779
+
780
+ var ICompoundComptroller = ethers$1.contract()(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteral(["\n function claimComp(address)\n "])));
781
+ function compoundLend(_x) {
782
+ return _compoundLend.apply(this, arguments);
783
+ }
784
+
785
+ function _compoundLend() {
786
+ _compoundLend = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
787
+ var comptrollerProxy, integrationManager, fundOwner, compoundAdapter, cToken, _ref$tokenAmount, tokenAmount, _ref$cTokenAmount, cTokenAmount, lendArgs, callArgs, lendTx;
788
+
789
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
790
+ while (1) {
791
+ switch (_context.prev = _context.next) {
792
+ case 0:
793
+ comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, compoundAdapter = _ref.compoundAdapter, cToken = _ref.cToken, _ref$tokenAmount = _ref.tokenAmount, tokenAmount = _ref$tokenAmount === void 0 ? ethers.utils.parseEther('1') : _ref$tokenAmount, _ref$cTokenAmount = _ref.cTokenAmount, cTokenAmount = _ref$cTokenAmount === void 0 ? ethers.utils.parseEther('1') : _ref$cTokenAmount;
794
+ _context.next = 3;
795
+ return protocol.compoundArgs({
796
+ cToken: ethers$1.resolveAddress(cToken),
797
+ outgoingAssetAmount: tokenAmount,
798
+ minIncomingAssetAmount: cTokenAmount
799
+ });
800
+
801
+ case 3:
802
+ lendArgs = _context.sent;
803
+ callArgs = protocol.callOnIntegrationArgs({
804
+ adapter: compoundAdapter,
805
+ selector: protocol.lendSelector,
806
+ encodedCallArgs: lendArgs
807
+ });
808
+ lendTx = comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
809
+ return _context.abrupt("return", lendTx);
810
+
811
+ case 7:
812
+ case "end":
813
+ return _context.stop();
814
+ }
815
+ }
816
+ }, _callee);
817
+ }));
818
+ return _compoundLend.apply(this, arguments);
819
+ }
820
+
821
+ function compoundRedeem(_x2) {
822
+ return _compoundRedeem.apply(this, arguments);
823
+ }
824
+
825
+ function _compoundRedeem() {
826
+ _compoundRedeem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
827
+ var comptrollerProxy, integrationManager, fundOwner, compoundAdapter, cToken, _ref2$tokenAmount, tokenAmount, _ref2$cTokenAmount, cTokenAmount, redeemArgs, callArgs, redeemTx;
828
+
829
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
830
+ while (1) {
831
+ switch (_context2.prev = _context2.next) {
832
+ case 0:
833
+ comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, compoundAdapter = _ref2.compoundAdapter, cToken = _ref2.cToken, _ref2$tokenAmount = _ref2.tokenAmount, tokenAmount = _ref2$tokenAmount === void 0 ? ethers.utils.parseEther('1') : _ref2$tokenAmount, _ref2$cTokenAmount = _ref2.cTokenAmount, cTokenAmount = _ref2$cTokenAmount === void 0 ? ethers.utils.parseEther('1') : _ref2$cTokenAmount;
834
+ _context2.next = 3;
835
+ return protocol.compoundArgs({
836
+ cToken: ethers$1.resolveAddress(cToken),
837
+ outgoingAssetAmount: cTokenAmount,
838
+ minIncomingAssetAmount: tokenAmount
839
+ });
840
+
841
+ case 3:
842
+ redeemArgs = _context2.sent;
843
+ _context2.next = 6;
844
+ return protocol.callOnIntegrationArgs({
845
+ adapter: compoundAdapter,
846
+ selector: protocol.redeemSelector,
847
+ encodedCallArgs: redeemArgs
848
+ });
849
+
850
+ case 6:
851
+ callArgs = _context2.sent;
852
+ redeemTx = comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
853
+ return _context2.abrupt("return", redeemTx);
854
+
855
+ case 9:
856
+ case "end":
857
+ return _context2.stop();
858
+ }
859
+ }
860
+ }, _callee2);
861
+ }));
862
+ return _compoundRedeem.apply(this, arguments);
863
+ }
864
+
865
+ var _templateObject$2, _templateObject2, _templateObject3;
866
+ var CurveLiquidityGaugeV2 = ethers$1.contract()(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n function claim_rewards(address)\n function integrate_fraction(address) view returns (uint256)\n"]))); // prettier-ignore
867
+
868
+ var CurveSwaps = ethers$1.contract()(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n function get_best_rate(address _from, address to, uint256 amount) view returns (address bestPool, uint256 amountReceived)\n"])));
869
+ var CurveMinter = ethers$1.contract()(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n function mint_for(address,address)\n"])));
870
+ function curveApproveAssets(_x) {
871
+ return _curveApproveAssets.apply(this, arguments);
872
+ } // exchanges
873
+
874
+ function _curveApproveAssets() {
875
+ _curveApproveAssets = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
876
+ var comptrollerProxy, integrationManager, fundOwner, adapter, assets, _ref$amounts, amounts, callArgs;
877
+
878
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
879
+ while (1) {
880
+ switch (_context.prev = _context.next) {
881
+ case 0:
882
+ comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, adapter = _ref.adapter, assets = _ref.assets, _ref$amounts = _ref.amounts, amounts = _ref$amounts === void 0 ? new Array(assets.length).fill(ethers.constants.MaxUint256) : _ref$amounts;
883
+ callArgs = protocol.callOnIntegrationArgs({
884
+ adapter: adapter,
885
+ selector: protocol.approveAssetsSelector,
886
+ encodedCallArgs: protocol.curveApproveAssetsArgs({
887
+ assets: assets,
888
+ amounts: amounts
889
+ })
890
+ });
891
+ return _context.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
892
+
893
+ case 3:
894
+ case "end":
895
+ return _context.stop();
896
+ }
897
+ }
898
+ }, _callee);
899
+ }));
900
+ return _curveApproveAssets.apply(this, arguments);
901
+ }
902
+
903
+ function curveTakeOrder(_x2) {
904
+ return _curveTakeOrder.apply(this, arguments);
905
+ } // aave pool
906
+
907
+ function _curveTakeOrder() {
908
+ _curveTakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
909
+ var comptrollerProxy, integrationManager, fundOwner, curveExchangeAdapter, pool, outgoingAsset, _ref2$outgoingAssetAm, outgoingAssetAmount, incomingAsset, _ref2$minIncomingAsse, minIncomingAssetAmount, takeOrderArgs, callArgs;
910
+
911
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
912
+ while (1) {
913
+ switch (_context2.prev = _context2.next) {
914
+ case 0:
915
+ comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, curveExchangeAdapter = _ref2.curveExchangeAdapter, pool = _ref2.pool, outgoingAsset = _ref2.outgoingAsset, _ref2$outgoingAssetAm = _ref2.outgoingAssetAmount, outgoingAssetAmount = _ref2$outgoingAssetAm === void 0 ? ethers.utils.parseEther('1') : _ref2$outgoingAssetAm, incomingAsset = _ref2.incomingAsset, _ref2$minIncomingAsse = _ref2.minIncomingAssetAmount, minIncomingAssetAmount = _ref2$minIncomingAsse === void 0 ? ethers.utils.parseEther('1') : _ref2$minIncomingAsse;
916
+ takeOrderArgs = protocol.curveTakeOrderArgs({
917
+ pool: pool,
918
+ outgoingAsset: outgoingAsset,
919
+ outgoingAssetAmount: outgoingAssetAmount,
920
+ incomingAsset: incomingAsset,
921
+ minIncomingAssetAmount: minIncomingAssetAmount
922
+ });
923
+ callArgs = protocol.callOnIntegrationArgs({
924
+ adapter: curveExchangeAdapter,
925
+ selector: protocol.takeOrderSelector,
926
+ encodedCallArgs: takeOrderArgs
927
+ });
928
+ return _context2.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
929
+
930
+ case 4:
931
+ case "end":
932
+ return _context2.stop();
933
+ }
934
+ }
935
+ }, _callee2);
936
+ }));
937
+ return _curveTakeOrder.apply(this, arguments);
938
+ }
939
+
940
+ function curveAaveClaimRewards(_ref3) {
941
+ var comptrollerProxy = _ref3.comptrollerProxy,
942
+ integrationManager = _ref3.integrationManager,
943
+ fundOwner = _ref3.fundOwner,
944
+ curveLiquidityAaveAdapter = _ref3.curveLiquidityAaveAdapter;
945
+ var callArgs = protocol.callOnIntegrationArgs({
946
+ adapter: curveLiquidityAaveAdapter,
947
+ selector: protocol.claimRewardsSelector,
948
+ encodedCallArgs: ethers.constants.HashZero
949
+ });
950
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
951
+ }
952
+ function curveAaveClaimRewardsAndReinvest(_ref4) {
953
+ var comptrollerProxy = _ref4.comptrollerProxy,
954
+ integrationManager = _ref4.integrationManager,
955
+ fundOwner = _ref4.fundOwner,
956
+ curveLiquidityAaveAdapter = _ref4.curveLiquidityAaveAdapter,
957
+ useFullBalances = _ref4.useFullBalances,
958
+ _ref4$minIncomingLiqu = _ref4.minIncomingLiquidityGaugeTokenAmount,
959
+ minIncomingLiquidityGaugeTokenAmount = _ref4$minIncomingLiqu === void 0 ? ethers.BigNumber.from(1) : _ref4$minIncomingLiqu,
960
+ _ref4$intermediaryUnd = _ref4.intermediaryUnderlyingAssetIndex,
961
+ intermediaryUnderlyingAssetIndex = _ref4$intermediaryUnd === void 0 ? protocol.CurveAavePoolAssetIndex.AaveDai : _ref4$intermediaryUnd;
962
+ var callArgs = protocol.callOnIntegrationArgs({
963
+ adapter: curveLiquidityAaveAdapter,
964
+ selector: protocol.claimRewardsAndReinvestSelector,
965
+ encodedCallArgs: protocol.curveAaveClaimRewardsAndReinvestArgs({
966
+ useFullBalances: useFullBalances,
967
+ minIncomingLiquidityGaugeTokenAmount: minIncomingLiquidityGaugeTokenAmount,
968
+ intermediaryUnderlyingAssetIndex: intermediaryUnderlyingAssetIndex
969
+ })
970
+ });
971
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
972
+ }
973
+ function curveAaveClaimRewardsAndSwap(_ref5) {
974
+ var comptrollerProxy = _ref5.comptrollerProxy,
975
+ integrationManager = _ref5.integrationManager,
976
+ fundOwner = _ref5.fundOwner,
977
+ curveLiquidityAaveAdapter = _ref5.curveLiquidityAaveAdapter,
978
+ useFullBalances = _ref5.useFullBalances,
979
+ incomingAsset = _ref5.incomingAsset,
980
+ _ref5$minIncomingAsse = _ref5.minIncomingAssetAmount,
981
+ minIncomingAssetAmount = _ref5$minIncomingAsse === void 0 ? ethers.BigNumber.from(1) : _ref5$minIncomingAsse;
982
+ var callArgs = protocol.callOnIntegrationArgs({
983
+ adapter: curveLiquidityAaveAdapter,
984
+ selector: protocol.claimRewardsAndSwapSelector,
985
+ encodedCallArgs: protocol.curveAaveClaimRewardsAndSwapArgs({
986
+ useFullBalances: useFullBalances,
987
+ incomingAsset: incomingAsset,
988
+ minIncomingAssetAmount: minIncomingAssetAmount
989
+ })
990
+ });
991
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
992
+ }
993
+ function curveAaveLend(_ref6) {
994
+ var comptrollerProxy = _ref6.comptrollerProxy,
995
+ integrationManager = _ref6.integrationManager,
996
+ fundOwner = _ref6.fundOwner,
997
+ curveLiquidityAaveAdapter = _ref6.curveLiquidityAaveAdapter,
998
+ _ref6$outgoingAaveDai = _ref6.outgoingAaveDaiAmount,
999
+ outgoingAaveDaiAmount = _ref6$outgoingAaveDai === void 0 ? ethers.BigNumber.from(0) : _ref6$outgoingAaveDai,
1000
+ _ref6$outgoingAaveUsd = _ref6.outgoingAaveUsdcAmount,
1001
+ outgoingAaveUsdcAmount = _ref6$outgoingAaveUsd === void 0 ? ethers.BigNumber.from(0) : _ref6$outgoingAaveUsd,
1002
+ _ref6$outgoingAaveUsd2 = _ref6.outgoingAaveUsdtAmount,
1003
+ outgoingAaveUsdtAmount = _ref6$outgoingAaveUsd2 === void 0 ? ethers.BigNumber.from(0) : _ref6$outgoingAaveUsd2,
1004
+ _ref6$minIncomingLPTo = _ref6.minIncomingLPTokenAmount,
1005
+ minIncomingLPTokenAmount = _ref6$minIncomingLPTo === void 0 ? ethers.BigNumber.from(1) : _ref6$minIncomingLPTo,
1006
+ _ref6$useUnderlyings = _ref6.useUnderlyings,
1007
+ useUnderlyings = _ref6$useUnderlyings === void 0 ? false : _ref6$useUnderlyings;
1008
+ var callArgs = protocol.callOnIntegrationArgs({
1009
+ adapter: curveLiquidityAaveAdapter,
1010
+ selector: protocol.lendSelector,
1011
+ encodedCallArgs: protocol.curveAaveLendArgs({
1012
+ outgoingAaveDaiAmount: outgoingAaveDaiAmount,
1013
+ outgoingAaveUsdcAmount: outgoingAaveUsdcAmount,
1014
+ outgoingAaveUsdtAmount: outgoingAaveUsdtAmount,
1015
+ minIncomingLPTokenAmount: minIncomingLPTokenAmount,
1016
+ useUnderlyings: useUnderlyings
1017
+ })
1018
+ });
1019
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1020
+ }
1021
+ function curveAaveLendAndStake(_ref7) {
1022
+ var comptrollerProxy = _ref7.comptrollerProxy,
1023
+ integrationManager = _ref7.integrationManager,
1024
+ fundOwner = _ref7.fundOwner,
1025
+ curveLiquidityAaveAdapter = _ref7.curveLiquidityAaveAdapter,
1026
+ _ref7$outgoingAaveDai = _ref7.outgoingAaveDaiAmount,
1027
+ outgoingAaveDaiAmount = _ref7$outgoingAaveDai === void 0 ? ethers.BigNumber.from(0) : _ref7$outgoingAaveDai,
1028
+ _ref7$outgoingAaveUsd = _ref7.outgoingAaveUsdcAmount,
1029
+ outgoingAaveUsdcAmount = _ref7$outgoingAaveUsd === void 0 ? ethers.BigNumber.from(0) : _ref7$outgoingAaveUsd,
1030
+ _ref7$outgoingAaveUsd2 = _ref7.outgoingAaveUsdtAmount,
1031
+ outgoingAaveUsdtAmount = _ref7$outgoingAaveUsd2 === void 0 ? ethers.BigNumber.from(0) : _ref7$outgoingAaveUsd2,
1032
+ _ref7$minIncomingLiqu = _ref7.minIncomingLiquidityGaugeTokenAmount,
1033
+ minIncomingLiquidityGaugeTokenAmount = _ref7$minIncomingLiqu === void 0 ? ethers.BigNumber.from(1) : _ref7$minIncomingLiqu,
1034
+ _ref7$useUnderlyings = _ref7.useUnderlyings,
1035
+ useUnderlyings = _ref7$useUnderlyings === void 0 ? false : _ref7$useUnderlyings;
1036
+ var callArgs = protocol.callOnIntegrationArgs({
1037
+ adapter: curveLiquidityAaveAdapter,
1038
+ selector: protocol.lendAndStakeSelector,
1039
+ encodedCallArgs: protocol.curveAaveLendAndStakeArgs({
1040
+ outgoingAaveDaiAmount: outgoingAaveDaiAmount,
1041
+ outgoingAaveUsdcAmount: outgoingAaveUsdcAmount,
1042
+ outgoingAaveUsdtAmount: outgoingAaveUsdtAmount,
1043
+ minIncomingLiquidityGaugeTokenAmount: minIncomingLiquidityGaugeTokenAmount,
1044
+ useUnderlyings: useUnderlyings
1045
+ })
1046
+ });
1047
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1048
+ }
1049
+ function curveAaveRedeem(_ref8) {
1050
+ var comptrollerProxy = _ref8.comptrollerProxy,
1051
+ integrationManager = _ref8.integrationManager,
1052
+ fundOwner = _ref8.fundOwner,
1053
+ curveLiquidityAaveAdapter = _ref8.curveLiquidityAaveAdapter,
1054
+ outgoingLPTokenAmount = _ref8.outgoingLPTokenAmount,
1055
+ _ref8$minIncomingAave = _ref8.minIncomingAaveDaiAmount,
1056
+ minIncomingAaveDaiAmount = _ref8$minIncomingAave === void 0 ? ethers.BigNumber.from(1) : _ref8$minIncomingAave,
1057
+ _ref8$minIncomingAave2 = _ref8.minIncomingAaveUsdcAmount,
1058
+ minIncomingAaveUsdcAmount = _ref8$minIncomingAave2 === void 0 ? ethers.BigNumber.from(1) : _ref8$minIncomingAave2,
1059
+ _ref8$minIncomingAave3 = _ref8.minIncomingAaveUsdtAmount,
1060
+ minIncomingAaveUsdtAmount = _ref8$minIncomingAave3 === void 0 ? ethers.BigNumber.from(1) : _ref8$minIncomingAave3,
1061
+ _ref8$receiveSingleAs = _ref8.receiveSingleAsset,
1062
+ receiveSingleAsset = _ref8$receiveSingleAs === void 0 ? false : _ref8$receiveSingleAs,
1063
+ _ref8$useUnderlyings = _ref8.useUnderlyings,
1064
+ useUnderlyings = _ref8$useUnderlyings === void 0 ? false : _ref8$useUnderlyings;
1065
+ var callArgs = protocol.callOnIntegrationArgs({
1066
+ adapter: curveLiquidityAaveAdapter,
1067
+ selector: protocol.redeemSelector,
1068
+ encodedCallArgs: protocol.curveAaveRedeemArgs({
1069
+ outgoingLPTokenAmount: outgoingLPTokenAmount,
1070
+ minIncomingAaveDaiAmount: minIncomingAaveDaiAmount,
1071
+ minIncomingAaveUsdcAmount: minIncomingAaveUsdcAmount,
1072
+ minIncomingAaveUsdtAmount: minIncomingAaveUsdtAmount,
1073
+ receiveSingleAsset: receiveSingleAsset,
1074
+ useUnderlyings: useUnderlyings
1075
+ })
1076
+ });
1077
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1078
+ }
1079
+ function curveAaveStake(_ref9) {
1080
+ var comptrollerProxy = _ref9.comptrollerProxy,
1081
+ integrationManager = _ref9.integrationManager,
1082
+ fundOwner = _ref9.fundOwner,
1083
+ curveLiquidityAaveAdapter = _ref9.curveLiquidityAaveAdapter,
1084
+ outgoingLPTokenAmount = _ref9.outgoingLPTokenAmount;
1085
+ var callArgs = protocol.callOnIntegrationArgs({
1086
+ adapter: curveLiquidityAaveAdapter,
1087
+ selector: protocol.stakeSelector,
1088
+ encodedCallArgs: protocol.curveAaveStakeArgs({
1089
+ outgoingLPTokenAmount: outgoingLPTokenAmount
1090
+ })
1091
+ });
1092
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1093
+ }
1094
+ function curveAaveUnstakeAndRedeem(_ref10) {
1095
+ var comptrollerProxy = _ref10.comptrollerProxy,
1096
+ integrationManager = _ref10.integrationManager,
1097
+ fundOwner = _ref10.fundOwner,
1098
+ curveLiquidityAaveAdapter = _ref10.curveLiquidityAaveAdapter,
1099
+ outgoingLiquidityGaugeTokenAmount = _ref10.outgoingLiquidityGaugeTokenAmount,
1100
+ _ref10$minIncomingAav = _ref10.minIncomingAaveDaiAmount,
1101
+ minIncomingAaveDaiAmount = _ref10$minIncomingAav === void 0 ? ethers.BigNumber.from(1) : _ref10$minIncomingAav,
1102
+ _ref10$minIncomingAav2 = _ref10.minIncomingAaveUsdcAmount,
1103
+ minIncomingAaveUsdcAmount = _ref10$minIncomingAav2 === void 0 ? ethers.BigNumber.from(1) : _ref10$minIncomingAav2,
1104
+ _ref10$minIncomingAav3 = _ref10.minIncomingAaveUsdtAmount,
1105
+ minIncomingAaveUsdtAmount = _ref10$minIncomingAav3 === void 0 ? ethers.BigNumber.from(1) : _ref10$minIncomingAav3,
1106
+ _ref10$receiveSingleA = _ref10.receiveSingleAsset,
1107
+ receiveSingleAsset = _ref10$receiveSingleA === void 0 ? false : _ref10$receiveSingleA,
1108
+ _ref10$useUnderlyings = _ref10.useUnderlyings,
1109
+ useUnderlyings = _ref10$useUnderlyings === void 0 ? false : _ref10$useUnderlyings;
1110
+ var callArgs = protocol.callOnIntegrationArgs({
1111
+ adapter: curveLiquidityAaveAdapter,
1112
+ selector: protocol.unstakeAndRedeemSelector,
1113
+ encodedCallArgs: protocol.curveAaveUnstakeAndRedeemArgs({
1114
+ outgoingLiquidityGaugeTokenAmount: outgoingLiquidityGaugeTokenAmount,
1115
+ minIncomingAaveDaiAmount: minIncomingAaveDaiAmount,
1116
+ minIncomingAaveUsdcAmount: minIncomingAaveUsdcAmount,
1117
+ minIncomingAaveUsdtAmount: minIncomingAaveUsdtAmount,
1118
+ receiveSingleAsset: receiveSingleAsset,
1119
+ useUnderlyings: useUnderlyings
1120
+ })
1121
+ });
1122
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1123
+ }
1124
+ function curveAaveUnstake(_ref11) {
1125
+ var comptrollerProxy = _ref11.comptrollerProxy,
1126
+ integrationManager = _ref11.integrationManager,
1127
+ fundOwner = _ref11.fundOwner,
1128
+ curveLiquidityAaveAdapter = _ref11.curveLiquidityAaveAdapter,
1129
+ outgoingLiquidityGaugeTokenAmount = _ref11.outgoingLiquidityGaugeTokenAmount;
1130
+ var callArgs = protocol.callOnIntegrationArgs({
1131
+ adapter: curveLiquidityAaveAdapter,
1132
+ selector: protocol.unstakeSelector,
1133
+ encodedCallArgs: protocol.curveAaveUnstakeArgs({
1134
+ outgoingLiquidityGaugeTokenAmount: outgoingLiquidityGaugeTokenAmount
1135
+ })
1136
+ });
1137
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1138
+ } // eurs pool
1139
+
1140
+ function curveEursClaimRewards(_ref12) {
1141
+ var comptrollerProxy = _ref12.comptrollerProxy,
1142
+ integrationManager = _ref12.integrationManager,
1143
+ fundOwner = _ref12.fundOwner,
1144
+ curveLiquidityEursAdapter = _ref12.curveLiquidityEursAdapter;
1145
+ var callArgs = protocol.callOnIntegrationArgs({
1146
+ adapter: curveLiquidityEursAdapter,
1147
+ selector: protocol.claimRewardsSelector,
1148
+ encodedCallArgs: ethers.constants.HashZero
1149
+ });
1150
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1151
+ }
1152
+ function curveEursLend(_ref13) {
1153
+ var comptrollerProxy = _ref13.comptrollerProxy,
1154
+ integrationManager = _ref13.integrationManager,
1155
+ fundOwner = _ref13.fundOwner,
1156
+ curveLiquidityEursAdapter = _ref13.curveLiquidityEursAdapter,
1157
+ outgoingEursAmount = _ref13.outgoingEursAmount,
1158
+ outgoingSeurAmount = _ref13.outgoingSeurAmount,
1159
+ minIncomingLPTokenAmount = _ref13.minIncomingLPTokenAmount;
1160
+ var callArgs = protocol.callOnIntegrationArgs({
1161
+ adapter: curveLiquidityEursAdapter,
1162
+ selector: protocol.lendSelector,
1163
+ encodedCallArgs: protocol.curveEursLendArgs({
1164
+ outgoingEursAmount: outgoingEursAmount,
1165
+ outgoingSeurAmount: outgoingSeurAmount,
1166
+ minIncomingLPTokenAmount: minIncomingLPTokenAmount
1167
+ })
1168
+ });
1169
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1170
+ }
1171
+ function curveEursLendAndStake(_ref14) {
1172
+ var comptrollerProxy = _ref14.comptrollerProxy,
1173
+ integrationManager = _ref14.integrationManager,
1174
+ fundOwner = _ref14.fundOwner,
1175
+ curveLiquidityEursAdapter = _ref14.curveLiquidityEursAdapter,
1176
+ outgoingEursAmount = _ref14.outgoingEursAmount,
1177
+ outgoingSeurAmount = _ref14.outgoingSeurAmount,
1178
+ minIncomingLiquidityGaugeTokenAmount = _ref14.minIncomingLiquidityGaugeTokenAmount;
1179
+ var callArgs = protocol.callOnIntegrationArgs({
1180
+ adapter: curveLiquidityEursAdapter,
1181
+ selector: protocol.lendAndStakeSelector,
1182
+ encodedCallArgs: protocol.curveEursLendAndStakeArgs({
1183
+ outgoingEursAmount: outgoingEursAmount,
1184
+ outgoingSeurAmount: outgoingSeurAmount,
1185
+ minIncomingLiquidityGaugeTokenAmount: minIncomingLiquidityGaugeTokenAmount
1186
+ })
1187
+ });
1188
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1189
+ }
1190
+ function curveEursRedeem(_ref15) {
1191
+ var comptrollerProxy = _ref15.comptrollerProxy,
1192
+ integrationManager = _ref15.integrationManager,
1193
+ fundOwner = _ref15.fundOwner,
1194
+ curveLiquidityEursAdapter = _ref15.curveLiquidityEursAdapter,
1195
+ outgoingLPTokenAmount = _ref15.outgoingLPTokenAmount,
1196
+ minIncomingEursAmount = _ref15.minIncomingEursAmount,
1197
+ minIncomingSeurAmount = _ref15.minIncomingSeurAmount,
1198
+ receiveSingleAsset = _ref15.receiveSingleAsset;
1199
+ var callArgs = protocol.callOnIntegrationArgs({
1200
+ adapter: curveLiquidityEursAdapter,
1201
+ selector: protocol.redeemSelector,
1202
+ encodedCallArgs: protocol.curveEursRedeemArgs({
1203
+ outgoingLPTokenAmount: outgoingLPTokenAmount,
1204
+ minIncomingEursAmount: minIncomingEursAmount,
1205
+ minIncomingSeurAmount: minIncomingSeurAmount,
1206
+ receiveSingleAsset: receiveSingleAsset
1207
+ })
1208
+ });
1209
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1210
+ }
1211
+ function curveEursStake(_ref16) {
1212
+ var comptrollerProxy = _ref16.comptrollerProxy,
1213
+ integrationManager = _ref16.integrationManager,
1214
+ fundOwner = _ref16.fundOwner,
1215
+ curveLiquidityEursAdapter = _ref16.curveLiquidityEursAdapter,
1216
+ outgoingLPTokenAmount = _ref16.outgoingLPTokenAmount;
1217
+ var callArgs = protocol.callOnIntegrationArgs({
1218
+ adapter: curveLiquidityEursAdapter,
1219
+ selector: protocol.stakeSelector,
1220
+ encodedCallArgs: protocol.curveEursStakeArgs({
1221
+ outgoingLPTokenAmount: outgoingLPTokenAmount
1222
+ })
1223
+ });
1224
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1225
+ }
1226
+ function curveEursUnstakeAndRedeem(_ref17) {
1227
+ var comptrollerProxy = _ref17.comptrollerProxy,
1228
+ integrationManager = _ref17.integrationManager,
1229
+ fundOwner = _ref17.fundOwner,
1230
+ curveLiquidityEursAdapter = _ref17.curveLiquidityEursAdapter,
1231
+ outgoingLiquidityGaugeTokenAmount = _ref17.outgoingLiquidityGaugeTokenAmount,
1232
+ minIncomingEursAmount = _ref17.minIncomingEursAmount,
1233
+ minIncomingSeurAmount = _ref17.minIncomingSeurAmount,
1234
+ receiveSingleAsset = _ref17.receiveSingleAsset;
1235
+ var callArgs = protocol.callOnIntegrationArgs({
1236
+ adapter: curveLiquidityEursAdapter,
1237
+ selector: protocol.unstakeAndRedeemSelector,
1238
+ encodedCallArgs: protocol.curveEursUnstakeAndRedeemArgs({
1239
+ outgoingLiquidityGaugeTokenAmount: outgoingLiquidityGaugeTokenAmount,
1240
+ minIncomingEursAmount: minIncomingEursAmount,
1241
+ minIncomingSeurAmount: minIncomingSeurAmount,
1242
+ receiveSingleAsset: receiveSingleAsset
1243
+ })
1244
+ });
1245
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1246
+ }
1247
+ function curveEursUnstake(_ref18) {
1248
+ var comptrollerProxy = _ref18.comptrollerProxy,
1249
+ integrationManager = _ref18.integrationManager,
1250
+ fundOwner = _ref18.fundOwner,
1251
+ curveLiquidityEursAdapter = _ref18.curveLiquidityEursAdapter,
1252
+ outgoingLiquidityGaugeTokenAmount = _ref18.outgoingLiquidityGaugeTokenAmount;
1253
+ var callArgs = protocol.callOnIntegrationArgs({
1254
+ adapter: curveLiquidityEursAdapter,
1255
+ selector: protocol.unstakeSelector,
1256
+ encodedCallArgs: protocol.curveEursUnstakeArgs({
1257
+ outgoingLiquidityGaugeTokenAmount: outgoingLiquidityGaugeTokenAmount
1258
+ })
1259
+ });
1260
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1261
+ } // sETH pool
1262
+
1263
+ function curveSethClaimRewards(_ref19) {
1264
+ var comptrollerProxy = _ref19.comptrollerProxy,
1265
+ integrationManager = _ref19.integrationManager,
1266
+ fundOwner = _ref19.fundOwner,
1267
+ curveLiquiditySethAdapter = _ref19.curveLiquiditySethAdapter;
1268
+ var callArgs = protocol.callOnIntegrationArgs({
1269
+ adapter: curveLiquiditySethAdapter,
1270
+ selector: protocol.claimRewardsSelector,
1271
+ encodedCallArgs: ethers.constants.HashZero
1272
+ });
1273
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1274
+ }
1275
+ function curveSethClaimRewardsAndReinvest(_ref20) {
1276
+ var comptrollerProxy = _ref20.comptrollerProxy,
1277
+ integrationManager = _ref20.integrationManager,
1278
+ fundOwner = _ref20.fundOwner,
1279
+ curveLiquiditySethAdapter = _ref20.curveLiquiditySethAdapter,
1280
+ useFullBalances = _ref20.useFullBalances,
1281
+ _ref20$minIncomingLiq = _ref20.minIncomingLiquidityGaugeTokenAmount,
1282
+ minIncomingLiquidityGaugeTokenAmount = _ref20$minIncomingLiq === void 0 ? ethers.BigNumber.from(1) : _ref20$minIncomingLiq;
1283
+ var callArgs = protocol.callOnIntegrationArgs({
1284
+ adapter: curveLiquiditySethAdapter,
1285
+ selector: protocol.claimRewardsAndReinvestSelector,
1286
+ encodedCallArgs: protocol.curveSethClaimRewardsAndReinvestArgs({
1287
+ useFullBalances: useFullBalances,
1288
+ minIncomingLiquidityGaugeTokenAmount: minIncomingLiquidityGaugeTokenAmount
1289
+ })
1290
+ });
1291
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1292
+ }
1293
+ function curveSethClaimRewardsAndSwap(_ref21) {
1294
+ var comptrollerProxy = _ref21.comptrollerProxy,
1295
+ integrationManager = _ref21.integrationManager,
1296
+ fundOwner = _ref21.fundOwner,
1297
+ curveLiquiditySethAdapter = _ref21.curveLiquiditySethAdapter,
1298
+ useFullBalances = _ref21.useFullBalances,
1299
+ incomingAsset = _ref21.incomingAsset,
1300
+ _ref21$minIncomingAss = _ref21.minIncomingAssetAmount,
1301
+ minIncomingAssetAmount = _ref21$minIncomingAss === void 0 ? ethers.BigNumber.from(1) : _ref21$minIncomingAss;
1302
+ var callArgs = protocol.callOnIntegrationArgs({
1303
+ adapter: curveLiquiditySethAdapter,
1304
+ selector: protocol.claimRewardsAndSwapSelector,
1305
+ encodedCallArgs: protocol.curveSethClaimRewardsAndSwapArgs({
1306
+ useFullBalances: useFullBalances,
1307
+ incomingAsset: incomingAsset,
1308
+ minIncomingAssetAmount: minIncomingAssetAmount
1309
+ })
1310
+ });
1311
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1312
+ }
1313
+ function curveSethLend(_ref22) {
1314
+ var comptrollerProxy = _ref22.comptrollerProxy,
1315
+ integrationManager = _ref22.integrationManager,
1316
+ fundOwner = _ref22.fundOwner,
1317
+ curveLiquiditySethAdapter = _ref22.curveLiquiditySethAdapter,
1318
+ outgoingWethAmount = _ref22.outgoingWethAmount,
1319
+ outgoingSethAmount = _ref22.outgoingSethAmount,
1320
+ minIncomingLPTokenAmount = _ref22.minIncomingLPTokenAmount;
1321
+ var callArgs = protocol.callOnIntegrationArgs({
1322
+ adapter: curveLiquiditySethAdapter,
1323
+ selector: protocol.lendSelector,
1324
+ encodedCallArgs: protocol.curveSethLendArgs({
1325
+ outgoingWethAmount: outgoingWethAmount,
1326
+ outgoingSethAmount: outgoingSethAmount,
1327
+ minIncomingLPTokenAmount: minIncomingLPTokenAmount
1328
+ })
1329
+ });
1330
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1331
+ }
1332
+ function curveSethLendAndStake(_ref23) {
1333
+ var comptrollerProxy = _ref23.comptrollerProxy,
1334
+ integrationManager = _ref23.integrationManager,
1335
+ fundOwner = _ref23.fundOwner,
1336
+ curveLiquiditySethAdapter = _ref23.curveLiquiditySethAdapter,
1337
+ outgoingWethAmount = _ref23.outgoingWethAmount,
1338
+ outgoingSethAmount = _ref23.outgoingSethAmount,
1339
+ minIncomingLiquidityGaugeTokenAmount = _ref23.minIncomingLiquidityGaugeTokenAmount;
1340
+ var callArgs = protocol.callOnIntegrationArgs({
1341
+ adapter: curveLiquiditySethAdapter,
1342
+ selector: protocol.lendAndStakeSelector,
1343
+ encodedCallArgs: protocol.curveSethLendAndStakeArgs({
1344
+ outgoingWethAmount: outgoingWethAmount,
1345
+ outgoingSethAmount: outgoingSethAmount,
1346
+ minIncomingLiquidityGaugeTokenAmount: minIncomingLiquidityGaugeTokenAmount
1347
+ })
1348
+ });
1349
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1350
+ }
1351
+ function curveSethRedeem(_ref24) {
1352
+ var comptrollerProxy = _ref24.comptrollerProxy,
1353
+ integrationManager = _ref24.integrationManager,
1354
+ fundOwner = _ref24.fundOwner,
1355
+ curveLiquiditySethAdapter = _ref24.curveLiquiditySethAdapter,
1356
+ outgoingLPTokenAmount = _ref24.outgoingLPTokenAmount,
1357
+ minIncomingWethAmount = _ref24.minIncomingWethAmount,
1358
+ minIncomingSethAmount = _ref24.minIncomingSethAmount,
1359
+ receiveSingleAsset = _ref24.receiveSingleAsset;
1360
+ var callArgs = protocol.callOnIntegrationArgs({
1361
+ adapter: curveLiquiditySethAdapter,
1362
+ selector: protocol.redeemSelector,
1363
+ encodedCallArgs: protocol.curveSethRedeemArgs({
1364
+ outgoingLPTokenAmount: outgoingLPTokenAmount,
1365
+ minIncomingWethAmount: minIncomingWethAmount,
1366
+ minIncomingSethAmount: minIncomingSethAmount,
1367
+ receiveSingleAsset: receiveSingleAsset
1368
+ })
1369
+ });
1370
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1371
+ }
1372
+ function curveSethStake(_ref25) {
1373
+ var comptrollerProxy = _ref25.comptrollerProxy,
1374
+ integrationManager = _ref25.integrationManager,
1375
+ fundOwner = _ref25.fundOwner,
1376
+ curveLiquiditySethAdapter = _ref25.curveLiquiditySethAdapter,
1377
+ outgoingLPTokenAmount = _ref25.outgoingLPTokenAmount;
1378
+ var callArgs = protocol.callOnIntegrationArgs({
1379
+ adapter: curveLiquiditySethAdapter,
1380
+ selector: protocol.stakeSelector,
1381
+ encodedCallArgs: protocol.curveSethStakeArgs({
1382
+ outgoingLPTokenAmount: outgoingLPTokenAmount
1383
+ })
1384
+ });
1385
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1386
+ }
1387
+ function curveSethUnstakeAndRedeem(_ref26) {
1388
+ var comptrollerProxy = _ref26.comptrollerProxy,
1389
+ integrationManager = _ref26.integrationManager,
1390
+ fundOwner = _ref26.fundOwner,
1391
+ curveLiquiditySethAdapter = _ref26.curveLiquiditySethAdapter,
1392
+ outgoingLiquidityGaugeTokenAmount = _ref26.outgoingLiquidityGaugeTokenAmount,
1393
+ minIncomingWethAmount = _ref26.minIncomingWethAmount,
1394
+ minIncomingSethAmount = _ref26.minIncomingSethAmount,
1395
+ receiveSingleAsset = _ref26.receiveSingleAsset;
1396
+ var callArgs = protocol.callOnIntegrationArgs({
1397
+ adapter: curveLiquiditySethAdapter,
1398
+ selector: protocol.unstakeAndRedeemSelector,
1399
+ encodedCallArgs: protocol.curveSethUnstakeAndRedeemArgs({
1400
+ outgoingLiquidityGaugeTokenAmount: outgoingLiquidityGaugeTokenAmount,
1401
+ minIncomingWethAmount: minIncomingWethAmount,
1402
+ minIncomingSethAmount: minIncomingSethAmount,
1403
+ receiveSingleAsset: receiveSingleAsset
1404
+ })
1405
+ });
1406
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1407
+ }
1408
+ function curveSethUnstake(_ref27) {
1409
+ var comptrollerProxy = _ref27.comptrollerProxy,
1410
+ integrationManager = _ref27.integrationManager,
1411
+ fundOwner = _ref27.fundOwner,
1412
+ curveLiquiditySethAdapter = _ref27.curveLiquiditySethAdapter,
1413
+ outgoingLiquidityGaugeTokenAmount = _ref27.outgoingLiquidityGaugeTokenAmount;
1414
+ var callArgs = protocol.callOnIntegrationArgs({
1415
+ adapter: curveLiquiditySethAdapter,
1416
+ selector: protocol.unstakeSelector,
1417
+ encodedCallArgs: protocol.curveSethUnstakeArgs({
1418
+ outgoingLiquidityGaugeTokenAmount: outgoingLiquidityGaugeTokenAmount
1419
+ })
1420
+ });
1421
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1422
+ } // stETH pool
1423
+
1424
+ function curveStethClaimRewards(_ref28) {
1425
+ var comptrollerProxy = _ref28.comptrollerProxy,
1426
+ integrationManager = _ref28.integrationManager,
1427
+ fundOwner = _ref28.fundOwner,
1428
+ curveLiquidityStethAdapter = _ref28.curveLiquidityStethAdapter;
1429
+ var callArgs = protocol.callOnIntegrationArgs({
1430
+ adapter: curveLiquidityStethAdapter,
1431
+ selector: protocol.claimRewardsSelector,
1432
+ encodedCallArgs: ethers.constants.HashZero
1433
+ });
1434
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1435
+ }
1436
+ function curveStethClaimRewardsAndReinvest(_ref29) {
1437
+ var comptrollerProxy = _ref29.comptrollerProxy,
1438
+ integrationManager = _ref29.integrationManager,
1439
+ fundOwner = _ref29.fundOwner,
1440
+ curveLiquidityStethAdapter = _ref29.curveLiquidityStethAdapter,
1441
+ useFullBalances = _ref29.useFullBalances,
1442
+ _ref29$minIncomingLiq = _ref29.minIncomingLiquidityGaugeTokenAmount,
1443
+ minIncomingLiquidityGaugeTokenAmount = _ref29$minIncomingLiq === void 0 ? ethers.BigNumber.from(1) : _ref29$minIncomingLiq;
1444
+ var callArgs = protocol.callOnIntegrationArgs({
1445
+ adapter: curveLiquidityStethAdapter,
1446
+ selector: protocol.claimRewardsAndReinvestSelector,
1447
+ encodedCallArgs: protocol.curveStethClaimRewardsAndReinvestArgs({
1448
+ useFullBalances: useFullBalances,
1449
+ minIncomingLiquidityGaugeTokenAmount: minIncomingLiquidityGaugeTokenAmount
1450
+ })
1451
+ });
1452
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1453
+ }
1454
+ function curveStethClaimRewardsAndSwap(_ref30) {
1455
+ var comptrollerProxy = _ref30.comptrollerProxy,
1456
+ integrationManager = _ref30.integrationManager,
1457
+ fundOwner = _ref30.fundOwner,
1458
+ curveLiquidityStethAdapter = _ref30.curveLiquidityStethAdapter,
1459
+ useFullBalances = _ref30.useFullBalances,
1460
+ incomingAsset = _ref30.incomingAsset,
1461
+ _ref30$minIncomingAss = _ref30.minIncomingAssetAmount,
1462
+ minIncomingAssetAmount = _ref30$minIncomingAss === void 0 ? ethers.BigNumber.from(1) : _ref30$minIncomingAss;
1463
+ var callArgs = protocol.callOnIntegrationArgs({
1464
+ adapter: curveLiquidityStethAdapter,
1465
+ selector: protocol.claimRewardsAndSwapSelector,
1466
+ encodedCallArgs: protocol.curveStethClaimRewardsAndSwapArgs({
1467
+ useFullBalances: useFullBalances,
1468
+ incomingAsset: incomingAsset,
1469
+ minIncomingAssetAmount: minIncomingAssetAmount
1470
+ })
1471
+ });
1472
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1473
+ }
1474
+ function curveStethLend(_ref31) {
1475
+ var comptrollerProxy = _ref31.comptrollerProxy,
1476
+ integrationManager = _ref31.integrationManager,
1477
+ fundOwner = _ref31.fundOwner,
1478
+ curveLiquidityStethAdapter = _ref31.curveLiquidityStethAdapter,
1479
+ outgoingWethAmount = _ref31.outgoingWethAmount,
1480
+ outgoingStethAmount = _ref31.outgoingStethAmount,
1481
+ minIncomingLPTokenAmount = _ref31.minIncomingLPTokenAmount;
1482
+ var callArgs = protocol.callOnIntegrationArgs({
1483
+ adapter: curveLiquidityStethAdapter,
1484
+ selector: protocol.lendSelector,
1485
+ encodedCallArgs: protocol.curveStethLendArgs({
1486
+ outgoingWethAmount: outgoingWethAmount,
1487
+ outgoingStethAmount: outgoingStethAmount,
1488
+ minIncomingLPTokenAmount: minIncomingLPTokenAmount
1489
+ })
1490
+ });
1491
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1492
+ }
1493
+ function curveStethLendAndStake(_ref32) {
1494
+ var comptrollerProxy = _ref32.comptrollerProxy,
1495
+ integrationManager = _ref32.integrationManager,
1496
+ fundOwner = _ref32.fundOwner,
1497
+ curveLiquidityStethAdapter = _ref32.curveLiquidityStethAdapter,
1498
+ outgoingWethAmount = _ref32.outgoingWethAmount,
1499
+ outgoingStethAmount = _ref32.outgoingStethAmount,
1500
+ minIncomingLiquidityGaugeTokenAmount = _ref32.minIncomingLiquidityGaugeTokenAmount;
1501
+ var callArgs = protocol.callOnIntegrationArgs({
1502
+ adapter: curveLiquidityStethAdapter,
1503
+ selector: protocol.lendAndStakeSelector,
1504
+ encodedCallArgs: protocol.curveStethLendAndStakeArgs({
1505
+ outgoingWethAmount: outgoingWethAmount,
1506
+ outgoingStethAmount: outgoingStethAmount,
1507
+ minIncomingLiquidityGaugeTokenAmount: minIncomingLiquidityGaugeTokenAmount
1508
+ })
1509
+ });
1510
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1511
+ }
1512
+ function curveStethRedeem(_ref33) {
1513
+ var comptrollerProxy = _ref33.comptrollerProxy,
1514
+ integrationManager = _ref33.integrationManager,
1515
+ fundOwner = _ref33.fundOwner,
1516
+ curveLiquidityStethAdapter = _ref33.curveLiquidityStethAdapter,
1517
+ outgoingLPTokenAmount = _ref33.outgoingLPTokenAmount,
1518
+ minIncomingWethAmount = _ref33.minIncomingWethAmount,
1519
+ minIncomingStethAmount = _ref33.minIncomingStethAmount,
1520
+ receiveSingleAsset = _ref33.receiveSingleAsset;
1521
+ var callArgs = protocol.callOnIntegrationArgs({
1522
+ adapter: curveLiquidityStethAdapter,
1523
+ selector: protocol.redeemSelector,
1524
+ encodedCallArgs: protocol.curveStethRedeemArgs({
1525
+ outgoingLPTokenAmount: outgoingLPTokenAmount,
1526
+ minIncomingWethAmount: minIncomingWethAmount,
1527
+ minIncomingStethAmount: minIncomingStethAmount,
1528
+ receiveSingleAsset: receiveSingleAsset
1529
+ })
1530
+ });
1531
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1532
+ }
1533
+ function curveStethStake(_ref34) {
1534
+ var comptrollerProxy = _ref34.comptrollerProxy,
1535
+ integrationManager = _ref34.integrationManager,
1536
+ fundOwner = _ref34.fundOwner,
1537
+ curveLiquidityStethAdapter = _ref34.curveLiquidityStethAdapter,
1538
+ outgoingLPTokenAmount = _ref34.outgoingLPTokenAmount;
1539
+ var callArgs = protocol.callOnIntegrationArgs({
1540
+ adapter: curveLiquidityStethAdapter,
1541
+ selector: protocol.stakeSelector,
1542
+ encodedCallArgs: protocol.curveStethStakeArgs({
1543
+ outgoingLPTokenAmount: outgoingLPTokenAmount
1544
+ })
1545
+ });
1546
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1547
+ }
1548
+ function curveStethUnstakeAndRedeem(_ref35) {
1549
+ var comptrollerProxy = _ref35.comptrollerProxy,
1550
+ integrationManager = _ref35.integrationManager,
1551
+ fundOwner = _ref35.fundOwner,
1552
+ curveLiquidityStethAdapter = _ref35.curveLiquidityStethAdapter,
1553
+ outgoingLiquidityGaugeTokenAmount = _ref35.outgoingLiquidityGaugeTokenAmount,
1554
+ minIncomingWethAmount = _ref35.minIncomingWethAmount,
1555
+ minIncomingStethAmount = _ref35.minIncomingStethAmount,
1556
+ receiveSingleAsset = _ref35.receiveSingleAsset;
1557
+ var callArgs = protocol.callOnIntegrationArgs({
1558
+ adapter: curveLiquidityStethAdapter,
1559
+ selector: protocol.unstakeAndRedeemSelector,
1560
+ encodedCallArgs: protocol.curveStethUnstakeAndRedeemArgs({
1561
+ outgoingLiquidityGaugeTokenAmount: outgoingLiquidityGaugeTokenAmount,
1562
+ minIncomingWethAmount: minIncomingWethAmount,
1563
+ minIncomingStethAmount: minIncomingStethAmount,
1564
+ receiveSingleAsset: receiveSingleAsset
1565
+ })
1566
+ });
1567
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1568
+ }
1569
+ function curveStethUnstake(_ref36) {
1570
+ var comptrollerProxy = _ref36.comptrollerProxy,
1571
+ integrationManager = _ref36.integrationManager,
1572
+ fundOwner = _ref36.fundOwner,
1573
+ curveLiquidityStethAdapter = _ref36.curveLiquidityStethAdapter,
1574
+ outgoingLiquidityGaugeTokenAmount = _ref36.outgoingLiquidityGaugeTokenAmount;
1575
+ var callArgs = protocol.callOnIntegrationArgs({
1576
+ adapter: curveLiquidityStethAdapter,
1577
+ selector: protocol.unstakeSelector,
1578
+ encodedCallArgs: protocol.curveStethUnstakeArgs({
1579
+ outgoingLiquidityGaugeTokenAmount: outgoingLiquidityGaugeTokenAmount
1580
+ })
1581
+ });
1582
+ return comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1583
+ }
1584
+
1585
+ function idleApproveAssets(_x) {
1586
+ return _idleApproveAssets.apply(this, arguments);
1587
+ }
1588
+
1589
+ function _idleApproveAssets() {
1590
+ _idleApproveAssets = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
1591
+ var comptrollerProxy, integrationManager, fundOwner, idleAdapter, idleToken, assets, amounts, callArgs;
1592
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
1593
+ while (1) {
1594
+ switch (_context.prev = _context.next) {
1595
+ case 0:
1596
+ comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, idleAdapter = _ref.idleAdapter, idleToken = _ref.idleToken, assets = _ref.assets, amounts = _ref.amounts;
1597
+ callArgs = protocol.callOnIntegrationArgs({
1598
+ adapter: idleAdapter,
1599
+ selector: protocol.approveAssetsSelector,
1600
+ encodedCallArgs: protocol.idleApproveAssetsArgs({
1601
+ idleToken: idleToken,
1602
+ assets: assets,
1603
+ amounts: amounts
1604
+ })
1605
+ });
1606
+ return _context.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
1607
+
1608
+ case 3:
1609
+ case "end":
1610
+ return _context.stop();
1611
+ }
1612
+ }
1613
+ }, _callee);
1614
+ }));
1615
+ return _idleApproveAssets.apply(this, arguments);
1616
+ }
1617
+
1618
+ function idleClaimRewards(_x2) {
1619
+ return _idleClaimRewards.apply(this, arguments);
1620
+ }
1621
+
1622
+ function _idleClaimRewards() {
1623
+ _idleClaimRewards = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
1624
+ var comptrollerProxy, integrationManager, fundOwner, idleAdapter, idleToken, callArgs;
1625
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
1626
+ while (1) {
1627
+ switch (_context2.prev = _context2.next) {
1628
+ case 0:
1629
+ comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, idleAdapter = _ref2.idleAdapter, idleToken = _ref2.idleToken;
1630
+ _context2.t0 = protocol.callOnIntegrationArgs;
1631
+ _context2.t1 = idleAdapter;
1632
+ _context2.t2 = protocol.claimRewardsSelector;
1633
+ _context2.t3 = protocol.idleClaimRewardsArgs;
1634
+ _context2.next = 7;
1635
+ return comptrollerProxy.getVaultProxy();
1636
+
1637
+ case 7:
1638
+ _context2.t4 = _context2.sent;
1639
+ _context2.t5 = idleToken;
1640
+ _context2.t6 = {
1641
+ vaultProxy: _context2.t4,
1642
+ idleToken: _context2.t5
1643
+ };
1644
+ _context2.t7 = (0, _context2.t3)(_context2.t6);
1645
+ _context2.t8 = {
1646
+ adapter: _context2.t1,
1647
+ selector: _context2.t2,
1648
+ encodedCallArgs: _context2.t7
1649
+ };
1650
+ callArgs = (0, _context2.t0)(_context2.t8);
1651
+ return _context2.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
1652
+
1653
+ case 14:
1654
+ case "end":
1655
+ return _context2.stop();
1656
+ }
1657
+ }
1658
+ }, _callee2);
1659
+ }));
1660
+ return _idleClaimRewards.apply(this, arguments);
1661
+ }
1662
+
1663
+ function idleClaimRewardsAndReinvest(_x3) {
1664
+ return _idleClaimRewardsAndReinvest.apply(this, arguments);
1665
+ }
1666
+
1667
+ function _idleClaimRewardsAndReinvest() {
1668
+ _idleClaimRewardsAndReinvest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3(_ref3) {
1669
+ var comptrollerProxy, integrationManager, fundOwner, idleAdapter, idleToken, _ref3$minIncomingIdle, minIncomingIdleTokenAmount, useFullBalances, callArgs;
1670
+
1671
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
1672
+ while (1) {
1673
+ switch (_context3.prev = _context3.next) {
1674
+ case 0:
1675
+ comptrollerProxy = _ref3.comptrollerProxy, integrationManager = _ref3.integrationManager, fundOwner = _ref3.fundOwner, idleAdapter = _ref3.idleAdapter, idleToken = _ref3.idleToken, _ref3$minIncomingIdle = _ref3.minIncomingIdleTokenAmount, minIncomingIdleTokenAmount = _ref3$minIncomingIdle === void 0 ? ethers.BigNumber.from(1) : _ref3$minIncomingIdle, useFullBalances = _ref3.useFullBalances;
1676
+ _context3.t0 = protocol.callOnIntegrationArgs;
1677
+ _context3.t1 = idleAdapter;
1678
+ _context3.t2 = protocol.claimRewardsAndReinvestSelector;
1679
+ _context3.t3 = protocol.idleClaimRewardsAndReinvestArgs;
1680
+ _context3.next = 7;
1681
+ return comptrollerProxy.getVaultProxy();
1682
+
1683
+ case 7:
1684
+ _context3.t4 = _context3.sent;
1685
+ _context3.t5 = idleToken;
1686
+ _context3.t6 = minIncomingIdleTokenAmount;
1687
+ _context3.t7 = useFullBalances;
1688
+ _context3.t8 = {
1689
+ vaultProxy: _context3.t4,
1690
+ idleToken: _context3.t5,
1691
+ minIncomingIdleTokenAmount: _context3.t6,
1692
+ useFullBalances: _context3.t7
1693
+ };
1694
+ _context3.t9 = (0, _context3.t3)(_context3.t8);
1695
+ _context3.t10 = {
1696
+ adapter: _context3.t1,
1697
+ selector: _context3.t2,
1698
+ encodedCallArgs: _context3.t9
1699
+ };
1700
+ callArgs = (0, _context3.t0)(_context3.t10);
1701
+ return _context3.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
1702
+
1703
+ case 16:
1704
+ case "end":
1705
+ return _context3.stop();
1706
+ }
1707
+ }
1708
+ }, _callee3);
1709
+ }));
1710
+ return _idleClaimRewardsAndReinvest.apply(this, arguments);
1711
+ }
1712
+
1713
+ function idleClaimRewardsAndSwap(_x4) {
1714
+ return _idleClaimRewardsAndSwap.apply(this, arguments);
1715
+ }
1716
+
1717
+ function _idleClaimRewardsAndSwap() {
1718
+ _idleClaimRewardsAndSwap = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee4(_ref4) {
1719
+ var comptrollerProxy, integrationManager, fundOwner, idleAdapter, idleToken, incomingAsset, _ref4$minIncomingAsse, minIncomingAssetAmount, useFullBalances, callArgs;
1720
+
1721
+ return _regeneratorRuntime__default['default'].wrap(function _callee4$(_context4) {
1722
+ while (1) {
1723
+ switch (_context4.prev = _context4.next) {
1724
+ case 0:
1725
+ comptrollerProxy = _ref4.comptrollerProxy, integrationManager = _ref4.integrationManager, fundOwner = _ref4.fundOwner, idleAdapter = _ref4.idleAdapter, idleToken = _ref4.idleToken, incomingAsset = _ref4.incomingAsset, _ref4$minIncomingAsse = _ref4.minIncomingAssetAmount, minIncomingAssetAmount = _ref4$minIncomingAsse === void 0 ? ethers.BigNumber.from(1) : _ref4$minIncomingAsse, useFullBalances = _ref4.useFullBalances;
1726
+ _context4.t0 = protocol.callOnIntegrationArgs;
1727
+ _context4.t1 = idleAdapter;
1728
+ _context4.t2 = protocol.claimRewardsAndSwapSelector;
1729
+ _context4.t3 = protocol.idleClaimRewardsAndSwapArgs;
1730
+ _context4.next = 7;
1731
+ return comptrollerProxy.getVaultProxy();
1732
+
1733
+ case 7:
1734
+ _context4.t4 = _context4.sent;
1735
+ _context4.t5 = idleToken;
1736
+ _context4.t6 = incomingAsset;
1737
+ _context4.t7 = minIncomingAssetAmount;
1738
+ _context4.t8 = useFullBalances;
1739
+ _context4.t9 = {
1740
+ vaultProxy: _context4.t4,
1741
+ idleToken: _context4.t5,
1742
+ incomingAsset: _context4.t6,
1743
+ minIncomingAssetAmount: _context4.t7,
1744
+ useFullBalances: _context4.t8
1745
+ };
1746
+ _context4.t10 = (0, _context4.t3)(_context4.t9);
1747
+ _context4.t11 = {
1748
+ adapter: _context4.t1,
1749
+ selector: _context4.t2,
1750
+ encodedCallArgs: _context4.t10
1751
+ };
1752
+ callArgs = (0, _context4.t0)(_context4.t11);
1753
+ return _context4.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
1754
+
1755
+ case 17:
1756
+ case "end":
1757
+ return _context4.stop();
1758
+ }
1759
+ }
1760
+ }, _callee4);
1761
+ }));
1762
+ return _idleClaimRewardsAndSwap.apply(this, arguments);
1763
+ }
1764
+
1765
+ function idleLend(_x5) {
1766
+ return _idleLend.apply(this, arguments);
1767
+ }
1768
+
1769
+ function _idleLend() {
1770
+ _idleLend = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee5(_ref5) {
1771
+ var comptrollerProxy, integrationManager, fundOwner, idleAdapter, idleToken, outgoingUnderlyingAmount, _ref5$minIncomingIdle, minIncomingIdleTokenAmount, callArgs;
1772
+
1773
+ return _regeneratorRuntime__default['default'].wrap(function _callee5$(_context5) {
1774
+ while (1) {
1775
+ switch (_context5.prev = _context5.next) {
1776
+ case 0:
1777
+ comptrollerProxy = _ref5.comptrollerProxy, integrationManager = _ref5.integrationManager, fundOwner = _ref5.fundOwner, idleAdapter = _ref5.idleAdapter, idleToken = _ref5.idleToken, outgoingUnderlyingAmount = _ref5.outgoingUnderlyingAmount, _ref5$minIncomingIdle = _ref5.minIncomingIdleTokenAmount, minIncomingIdleTokenAmount = _ref5$minIncomingIdle === void 0 ? ethers.BigNumber.from(1) : _ref5$minIncomingIdle;
1778
+ callArgs = protocol.callOnIntegrationArgs({
1779
+ adapter: idleAdapter,
1780
+ selector: protocol.lendSelector,
1781
+ encodedCallArgs: protocol.idleLendArgs({
1782
+ idleToken: idleToken,
1783
+ outgoingUnderlyingAmount: outgoingUnderlyingAmount,
1784
+ minIncomingIdleTokenAmount: minIncomingIdleTokenAmount
1785
+ })
1786
+ });
1787
+ return _context5.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
1788
+
1789
+ case 3:
1790
+ case "end":
1791
+ return _context5.stop();
1792
+ }
1793
+ }
1794
+ }, _callee5);
1795
+ }));
1796
+ return _idleLend.apply(this, arguments);
1797
+ }
1798
+
1799
+ function idleRedeem(_x6) {
1800
+ return _idleRedeem.apply(this, arguments);
1801
+ }
1802
+
1803
+ function _idleRedeem() {
1804
+ _idleRedeem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee6(_ref6) {
1805
+ var comptrollerProxy, integrationManager, fundOwner, idleAdapter, idleToken, outgoingIdleTokenAmount, _ref6$minIncomingUnde, minIncomingUnderlyingAmount, callArgs;
1806
+
1807
+ return _regeneratorRuntime__default['default'].wrap(function _callee6$(_context6) {
1808
+ while (1) {
1809
+ switch (_context6.prev = _context6.next) {
1810
+ case 0:
1811
+ comptrollerProxy = _ref6.comptrollerProxy, integrationManager = _ref6.integrationManager, fundOwner = _ref6.fundOwner, idleAdapter = _ref6.idleAdapter, idleToken = _ref6.idleToken, outgoingIdleTokenAmount = _ref6.outgoingIdleTokenAmount, _ref6$minIncomingUnde = _ref6.minIncomingUnderlyingAmount, minIncomingUnderlyingAmount = _ref6$minIncomingUnde === void 0 ? ethers.BigNumber.from(1) : _ref6$minIncomingUnde;
1812
+ callArgs = protocol.callOnIntegrationArgs({
1813
+ adapter: idleAdapter,
1814
+ selector: protocol.redeemSelector,
1815
+ encodedCallArgs: protocol.idleRedeemArgs({
1816
+ idleToken: idleToken,
1817
+ outgoingIdleTokenAmount: outgoingIdleTokenAmount,
1818
+ minIncomingUnderlyingAmount: minIncomingUnderlyingAmount
1819
+ })
1820
+ });
1821
+ return _context6.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
1822
+
1823
+ case 3:
1824
+ case "end":
1825
+ return _context6.stop();
1826
+ }
1827
+ }
1828
+ }, _callee6);
1829
+ }));
1830
+ return _idleRedeem.apply(this, arguments);
1831
+ }
1832
+
1833
+ var _templateObject$1;
1834
+
1835
+ var KyberNetworkProxy = ethers$1.contract()(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n function getExpectedRate(address src, address dest, uint256 srcQty) view returns (uint256 expectedRate, uint256 worstRate)\n"])));
1836
+ function kyberTakeOrder(_x) {
1837
+ return _kyberTakeOrder.apply(this, arguments);
1838
+ }
1839
+
1840
+ function _kyberTakeOrder() {
1841
+ _kyberTakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
1842
+ var comptrollerProxy, vaultProxy, integrationManager, fundOwner, kyberAdapter, outgoingAsset, _ref$outgoingAssetAmo, outgoingAssetAmount, incomingAsset, _ref$minIncomingAsset, minIncomingAssetAmount, _ref$seedFund, seedFund, takeOrderArgs, callArgs;
1843
+
1844
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
1845
+ while (1) {
1846
+ switch (_context.prev = _context.next) {
1847
+ case 0:
1848
+ comptrollerProxy = _ref.comptrollerProxy, vaultProxy = _ref.vaultProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, kyberAdapter = _ref.kyberAdapter, outgoingAsset = _ref.outgoingAsset, _ref$outgoingAssetAmo = _ref.outgoingAssetAmount, outgoingAssetAmount = _ref$outgoingAssetAmo === void 0 ? ethers.utils.parseEther('1') : _ref$outgoingAssetAmo, incomingAsset = _ref.incomingAsset, _ref$minIncomingAsset = _ref.minIncomingAssetAmount, minIncomingAssetAmount = _ref$minIncomingAsset === void 0 ? ethers.utils.parseEther('1') : _ref$minIncomingAsset, _ref$seedFund = _ref.seedFund, seedFund = _ref$seedFund === void 0 ? false : _ref$seedFund;
1849
+
1850
+ if (!seedFund) {
1851
+ _context.next = 4;
1852
+ break;
1853
+ }
1854
+
1855
+ _context.next = 4;
1856
+ return outgoingAsset.transfer(vaultProxy, outgoingAssetAmount);
1857
+
1858
+ case 4:
1859
+ takeOrderArgs = protocol.kyberTakeOrderArgs({
1860
+ incomingAsset: incomingAsset,
1861
+ minIncomingAssetAmount: minIncomingAssetAmount,
1862
+ outgoingAsset: outgoingAsset,
1863
+ outgoingAssetAmount: outgoingAssetAmount
1864
+ });
1865
+ callArgs = protocol.callOnIntegrationArgs({
1866
+ adapter: kyberAdapter,
1867
+ selector: protocol.takeOrderSelector,
1868
+ encodedCallArgs: takeOrderArgs
1869
+ });
1870
+ return _context.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
1871
+
1872
+ case 7:
1873
+ case "end":
1874
+ return _context.stop();
1875
+ }
1876
+ }
1877
+ }, _callee);
1878
+ }));
1879
+ return _kyberTakeOrder.apply(this, arguments);
1880
+ }
1881
+
1882
+ var mockGenericRemoveOnlySelector = protocol.sighash(ethers.utils.FunctionFragment.fromString('removeOnly(address,bytes,bytes)'));
1883
+ var mockGenericSwapASelector = protocol.sighash(ethers.utils.FunctionFragment.fromString('swapA(address,bytes,bytes)'));
1884
+ var mockGenericSwapBSelector = protocol.sighash(ethers.utils.FunctionFragment.fromString('swapB(address,bytes,bytes)'));
1885
+ var mockGenericSwapDirectFromVaultSelector = protocol.sighash(ethers.utils.FunctionFragment.fromString('swapDirectFromVault(address,bytes,bytes)'));
1886
+ var mockGenericSwapViaApprovalSelector = protocol.sighash(ethers.utils.FunctionFragment.fromString('swapViaApproval(address,bytes,bytes)'));
1887
+ function mockGenericSwapArgs(_ref) {
1888
+ var _ref$spendAssets = _ref.spendAssets,
1889
+ spendAssets = _ref$spendAssets === void 0 ? [] : _ref$spendAssets,
1890
+ _ref$actualSpendAsset = _ref.actualSpendAssetAmounts,
1891
+ actualSpendAssetAmounts = _ref$actualSpendAsset === void 0 ? [] : _ref$actualSpendAsset,
1892
+ _ref$maxSpendAssetAmo = _ref.maxSpendAssetAmounts,
1893
+ maxSpendAssetAmounts = _ref$maxSpendAssetAmo === void 0 ? actualSpendAssetAmounts : _ref$maxSpendAssetAmo,
1894
+ _ref$incomingAssets = _ref.incomingAssets,
1895
+ incomingAssets = _ref$incomingAssets === void 0 ? [] : _ref$incomingAssets,
1896
+ _ref$actualIncomingAs = _ref.actualIncomingAssetAmounts,
1897
+ actualIncomingAssetAmounts = _ref$actualIncomingAs === void 0 ? [] : _ref$actualIncomingAs,
1898
+ _ref$minIncomingAsset = _ref.minIncomingAssetAmounts,
1899
+ minIncomingAssetAmounts = _ref$minIncomingAsset === void 0 ? actualIncomingAssetAmounts : _ref$minIncomingAsset;
1900
+ return protocol.encodeArgs(['address[]', 'uint256[]', 'uint256[]', 'address[]', 'uint256[]', 'uint256[]'], [spendAssets, maxSpendAssetAmounts, actualSpendAssetAmounts, incomingAssets, minIncomingAssetAmounts, actualIncomingAssetAmounts]);
1901
+ }
1902
+ function mockGenericSwap(_x) {
1903
+ return _mockGenericSwap.apply(this, arguments);
1904
+ }
1905
+
1906
+ function _mockGenericSwap() {
1907
+ _mockGenericSwap = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref2) {
1908
+ var comptrollerProxy, vaultProxy, integrationManager, fundOwner, mockGenericAdapter, _ref2$selector, selector, _ref2$spendAssets, spendAssets, _ref2$actualSpendAsse, actualSpendAssetAmounts, _ref2$maxSpendAssetAm, maxSpendAssetAmounts, _ref2$incomingAssets, incomingAssets, _ref2$actualIncomingA, actualIncomingAssetAmounts, _ref2$minIncomingAsse, minIncomingAssetAmounts, _ref2$seedFund, seedFund, key, swapArgs, callArgs, swapTx;
1909
+
1910
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
1911
+ while (1) {
1912
+ switch (_context.prev = _context.next) {
1913
+ case 0:
1914
+ comptrollerProxy = _ref2.comptrollerProxy, vaultProxy = _ref2.vaultProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, mockGenericAdapter = _ref2.mockGenericAdapter, _ref2$selector = _ref2.selector, selector = _ref2$selector === void 0 ? mockGenericSwapASelector : _ref2$selector, _ref2$spendAssets = _ref2.spendAssets, spendAssets = _ref2$spendAssets === void 0 ? [] : _ref2$spendAssets, _ref2$actualSpendAsse = _ref2.actualSpendAssetAmounts, actualSpendAssetAmounts = _ref2$actualSpendAsse === void 0 ? [] : _ref2$actualSpendAsse, _ref2$maxSpendAssetAm = _ref2.maxSpendAssetAmounts, maxSpendAssetAmounts = _ref2$maxSpendAssetAm === void 0 ? actualSpendAssetAmounts : _ref2$maxSpendAssetAm, _ref2$incomingAssets = _ref2.incomingAssets, incomingAssets = _ref2$incomingAssets === void 0 ? [] : _ref2$incomingAssets, _ref2$actualIncomingA = _ref2.actualIncomingAssetAmounts, actualIncomingAssetAmounts = _ref2$actualIncomingA === void 0 ? [] : _ref2$actualIncomingA, _ref2$minIncomingAsse = _ref2.minIncomingAssetAmounts, minIncomingAssetAmounts = _ref2$minIncomingAsse === void 0 ? actualIncomingAssetAmounts : _ref2$minIncomingAsse, _ref2$seedFund = _ref2.seedFund, seedFund = _ref2$seedFund === void 0 ? false : _ref2$seedFund;
1915
+
1916
+ if (!seedFund) {
1917
+ _context.next = 9;
1918
+ break;
1919
+ }
1920
+
1921
+ _context.t0 = _regeneratorRuntime__default['default'].keys(spendAssets);
1922
+
1923
+ case 3:
1924
+ if ((_context.t1 = _context.t0()).done) {
1925
+ _context.next = 9;
1926
+ break;
1927
+ }
1928
+
1929
+ key = _context.t1.value;
1930
+ _context.next = 7;
1931
+ return spendAssets[key].transfer(vaultProxy, maxSpendAssetAmounts[key]);
1932
+
1933
+ case 7:
1934
+ _context.next = 3;
1935
+ break;
1936
+
1937
+ case 9:
1938
+ swapArgs = mockGenericSwapArgs({
1939
+ spendAssets: spendAssets,
1940
+ maxSpendAssetAmounts: maxSpendAssetAmounts,
1941
+ actualSpendAssetAmounts: actualSpendAssetAmounts,
1942
+ incomingAssets: incomingAssets,
1943
+ minIncomingAssetAmounts: minIncomingAssetAmounts,
1944
+ actualIncomingAssetAmounts: actualIncomingAssetAmounts
1945
+ });
1946
+ callArgs = protocol.callOnIntegrationArgs({
1947
+ adapter: mockGenericAdapter,
1948
+ selector: selector,
1949
+ encodedCallArgs: swapArgs
1950
+ });
1951
+ swapTx = comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
1952
+ _context.next = 14;
1953
+ return expect(swapTx).resolves.toBeReceipt();
1954
+
1955
+ case 14:
1956
+ return _context.abrupt("return", swapTx);
1957
+
1958
+ case 15:
1959
+ case "end":
1960
+ return _context.stop();
1961
+ }
1962
+ }
1963
+ }, _callee);
1964
+ }));
1965
+ return _mockGenericSwap.apply(this, arguments);
1966
+ }
1967
+
1968
+ function paraSwapV4GenerateDummyPaths(_ref) {
1969
+ var toTokens = _ref.toTokens;
1970
+ return toTokens.map(function (toToken) {
1971
+ return {
1972
+ to: toToken,
1973
+ totalNetworkFee: 0,
1974
+ // Not supported in our protocol
1975
+ routes: [] // Can ignore this param in the dummy
1976
+
1977
+ };
1978
+ });
1979
+ }
1980
+ function paraSwapV4TakeOrder(_x) {
1981
+ return _paraSwapV4TakeOrder.apply(this, arguments);
1982
+ }
1983
+
1984
+ function _paraSwapV4TakeOrder() {
1985
+ _paraSwapV4TakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref2) {
1986
+ var comptrollerProxy, integrationManager, fundOwner, paraSwapV4Adapter, outgoingAsset, _ref2$outgoingAssetAm, outgoingAssetAmount, _ref2$minIncomingAsse, minIncomingAssetAmount, _ref2$expectedIncomin, expectedIncomingAssetAmount, paths, takeOrderArgs, callArgs;
1987
+
1988
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
1989
+ while (1) {
1990
+ switch (_context.prev = _context.next) {
1991
+ case 0:
1992
+ comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, paraSwapV4Adapter = _ref2.paraSwapV4Adapter, outgoingAsset = _ref2.outgoingAsset, _ref2$outgoingAssetAm = _ref2.outgoingAssetAmount, outgoingAssetAmount = _ref2$outgoingAssetAm === void 0 ? ethers.utils.parseEther('1') : _ref2$outgoingAssetAm, _ref2$minIncomingAsse = _ref2.minIncomingAssetAmount, minIncomingAssetAmount = _ref2$minIncomingAsse === void 0 ? 1 : _ref2$minIncomingAsse, _ref2$expectedIncomin = _ref2.expectedIncomingAssetAmount, expectedIncomingAssetAmount = _ref2$expectedIncomin === void 0 ? minIncomingAssetAmount : _ref2$expectedIncomin, paths = _ref2.paths;
1993
+ takeOrderArgs = protocol.paraSwapV4TakeOrderArgs({
1994
+ minIncomingAssetAmount: minIncomingAssetAmount,
1995
+ expectedIncomingAssetAmount: expectedIncomingAssetAmount,
1996
+ outgoingAsset: outgoingAsset,
1997
+ outgoingAssetAmount: outgoingAssetAmount,
1998
+ paths: paths
1999
+ });
2000
+ callArgs = protocol.callOnIntegrationArgs({
2001
+ adapter: paraSwapV4Adapter,
2002
+ selector: protocol.takeOrderSelector,
2003
+ encodedCallArgs: takeOrderArgs
2004
+ });
2005
+ return _context.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
2006
+
2007
+ case 4:
2008
+ case "end":
2009
+ return _context.stop();
2010
+ }
2011
+ }
2012
+ }, _callee);
2013
+ }));
2014
+ return _paraSwapV4TakeOrder.apply(this, arguments);
2015
+ }
2016
+
2017
+ function synthetixAssignExchangeDelegate(_x) {
2018
+ return _synthetixAssignExchangeDelegate.apply(this, arguments);
2019
+ }
2020
+
2021
+ function _synthetixAssignExchangeDelegate() {
2022
+ _synthetixAssignExchangeDelegate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2023
+ var comptrollerProxy, addressResolver, fundOwner, delegate, delegateApprovals;
2024
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2025
+ while (1) {
2026
+ switch (_context.prev = _context.next) {
2027
+ case 0:
2028
+ comptrollerProxy = _ref.comptrollerProxy, addressResolver = _ref.addressResolver, fundOwner = _ref.fundOwner, delegate = _ref.delegate;
2029
+ _context.next = 3;
2030
+ return synthetixResolveAddress({
2031
+ addressResolver: addressResolver,
2032
+ name: 'DelegateApprovals'
2033
+ });
2034
+
2035
+ case 3:
2036
+ delegateApprovals = _context.sent;
2037
+ _context.next = 6;
2038
+ return comptrollerProxy.connect(fundOwner).vaultCallOnContract(delegateApprovals, protocol.synthetixAssignExchangeDelegateSelector, protocol.encodeArgs(['address'], [delegate]));
2039
+
2040
+ case 6:
2041
+ case "end":
2042
+ return _context.stop();
2043
+ }
2044
+ }
2045
+ }, _callee);
2046
+ }));
2047
+ return _synthetixAssignExchangeDelegate.apply(this, arguments);
2048
+ }
2049
+
2050
+ function synthetixResolveAddress(_x2) {
2051
+ return _synthetixResolveAddress.apply(this, arguments);
2052
+ }
2053
+
2054
+ function _synthetixResolveAddress() {
2055
+ _synthetixResolveAddress = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
2056
+ var addressResolver, name;
2057
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
2058
+ while (1) {
2059
+ switch (_context2.prev = _context2.next) {
2060
+ case 0:
2061
+ addressResolver = _ref2.addressResolver, name = _ref2.name;
2062
+ return _context2.abrupt("return", addressResolver.requireAndGetAddress(ethers.utils.formatBytes32String(name), "Missing ".concat(name)));
2063
+
2064
+ case 2:
2065
+ case "end":
2066
+ return _context2.stop();
2067
+ }
2068
+ }
2069
+ }, _callee2);
2070
+ }));
2071
+ return _synthetixResolveAddress.apply(this, arguments);
2072
+ }
2073
+
2074
+ function synthetixTakeOrder(_x3) {
2075
+ return _synthetixTakeOrder.apply(this, arguments);
2076
+ }
2077
+
2078
+ function _synthetixTakeOrder() {
2079
+ _synthetixTakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3(_ref3) {
2080
+ var comptrollerProxy, vaultProxy, integrationManager, fundOwner, synthetixAdapter, outgoingAsset, _ref3$outgoingAssetAm, outgoingAssetAmount, incomingAsset, _ref3$minIncomingAsse, minIncomingAssetAmount, _ref3$seedFund, seedFund, takeOrderArgs, callArgs;
2081
+
2082
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
2083
+ while (1) {
2084
+ switch (_context3.prev = _context3.next) {
2085
+ case 0:
2086
+ comptrollerProxy = _ref3.comptrollerProxy, vaultProxy = _ref3.vaultProxy, integrationManager = _ref3.integrationManager, fundOwner = _ref3.fundOwner, synthetixAdapter = _ref3.synthetixAdapter, outgoingAsset = _ref3.outgoingAsset, _ref3$outgoingAssetAm = _ref3.outgoingAssetAmount, outgoingAssetAmount = _ref3$outgoingAssetAm === void 0 ? ethers.utils.parseEther('1') : _ref3$outgoingAssetAm, incomingAsset = _ref3.incomingAsset, _ref3$minIncomingAsse = _ref3.minIncomingAssetAmount, minIncomingAssetAmount = _ref3$minIncomingAsse === void 0 ? ethers.utils.parseEther('1') : _ref3$minIncomingAsse, _ref3$seedFund = _ref3.seedFund, seedFund = _ref3$seedFund === void 0 ? false : _ref3$seedFund;
2087
+
2088
+ if (!seedFund) {
2089
+ _context3.next = 4;
2090
+ break;
2091
+ }
2092
+
2093
+ _context3.next = 4;
2094
+ return outgoingAsset.transfer(vaultProxy, outgoingAssetAmount);
2095
+
2096
+ case 4:
2097
+ takeOrderArgs = protocol.synthetixTakeOrderArgs({
2098
+ incomingAsset: incomingAsset,
2099
+ minIncomingAssetAmount: minIncomingAssetAmount,
2100
+ outgoingAsset: outgoingAsset,
2101
+ outgoingAssetAmount: outgoingAssetAmount
2102
+ });
2103
+ _context3.next = 7;
2104
+ return protocol.callOnIntegrationArgs({
2105
+ adapter: synthetixAdapter,
2106
+ selector: protocol.takeOrderSelector,
2107
+ encodedCallArgs: takeOrderArgs
2108
+ });
2109
+
2110
+ case 7:
2111
+ callArgs = _context3.sent;
2112
+ return _context3.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
2113
+
2114
+ case 9:
2115
+ case "end":
2116
+ return _context3.stop();
2117
+ }
2118
+ }
2119
+ }, _callee3);
2120
+ }));
2121
+ return _synthetixTakeOrder.apply(this, arguments);
2122
+ }
2123
+
2124
+ var _templateObject;
2125
+ var UniswapV2Factory = ethers$1.contract()(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n function createPair(address,address) returns (address)\n function getPair(address,address) view returns (address)\n"])));
2126
+ function uniswapV2Lend(_x) {
2127
+ return _uniswapV2Lend.apply(this, arguments);
2128
+ }
2129
+
2130
+ function _uniswapV2Lend() {
2131
+ _uniswapV2Lend = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2132
+ var comptrollerProxy, vaultProxy, integrationManager, fundOwner, uniswapV2Adapter, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, minPoolTokenAmount, _ref$seedFund, seedFund, lendArgs, callArgs, lendTx;
2133
+
2134
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2135
+ while (1) {
2136
+ switch (_context.prev = _context.next) {
2137
+ case 0:
2138
+ comptrollerProxy = _ref.comptrollerProxy, vaultProxy = _ref.vaultProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, uniswapV2Adapter = _ref.uniswapV2Adapter, tokenA = _ref.tokenA, tokenB = _ref.tokenB, amountADesired = _ref.amountADesired, amountBDesired = _ref.amountBDesired, amountAMin = _ref.amountAMin, amountBMin = _ref.amountBMin, minPoolTokenAmount = _ref.minPoolTokenAmount, _ref$seedFund = _ref.seedFund, seedFund = _ref$seedFund === void 0 ? false : _ref$seedFund;
2139
+
2140
+ if (!seedFund) {
2141
+ _context.next = 6;
2142
+ break;
2143
+ }
2144
+
2145
+ _context.next = 4;
2146
+ return tokenA.transfer(vaultProxy, amountADesired);
2147
+
2148
+ case 4:
2149
+ _context.next = 6;
2150
+ return tokenB.transfer(vaultProxy, amountBDesired);
2151
+
2152
+ case 6:
2153
+ lendArgs = protocol.uniswapV2LendArgs({
2154
+ tokenA: tokenA,
2155
+ tokenB: tokenB,
2156
+ amountADesired: amountADesired,
2157
+ amountBDesired: amountBDesired,
2158
+ amountAMin: amountAMin,
2159
+ amountBMin: amountBMin,
2160
+ minPoolTokenAmount: minPoolTokenAmount
2161
+ });
2162
+ callArgs = protocol.callOnIntegrationArgs({
2163
+ adapter: uniswapV2Adapter,
2164
+ selector: protocol.lendSelector,
2165
+ encodedCallArgs: lendArgs
2166
+ });
2167
+ lendTx = comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
2168
+ _context.next = 11;
2169
+ return expect(lendTx).resolves.toBeReceipt();
2170
+
2171
+ case 11:
2172
+ return _context.abrupt("return", lendTx);
2173
+
2174
+ case 12:
2175
+ case "end":
2176
+ return _context.stop();
2177
+ }
2178
+ }
2179
+ }, _callee);
2180
+ }));
2181
+ return _uniswapV2Lend.apply(this, arguments);
2182
+ }
2183
+
2184
+ function uniswapV2Redeem(_x2) {
2185
+ return _uniswapV2Redeem.apply(this, arguments);
2186
+ }
2187
+
2188
+ function _uniswapV2Redeem() {
2189
+ _uniswapV2Redeem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
2190
+ var comptrollerProxy, integrationManager, fundOwner, uniswapV2Adapter, poolTokenAmount, tokenA, tokenB, amountAMin, amountBMin, redeemArgs, callArgs, redeemTx;
2191
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
2192
+ while (1) {
2193
+ switch (_context2.prev = _context2.next) {
2194
+ case 0:
2195
+ comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, fundOwner = _ref2.fundOwner, uniswapV2Adapter = _ref2.uniswapV2Adapter, poolTokenAmount = _ref2.poolTokenAmount, tokenA = _ref2.tokenA, tokenB = _ref2.tokenB, amountAMin = _ref2.amountAMin, amountBMin = _ref2.amountBMin;
2196
+ redeemArgs = protocol.uniswapV2RedeemArgs({
2197
+ poolTokenAmount: poolTokenAmount,
2198
+ tokenA: tokenA,
2199
+ tokenB: tokenB,
2200
+ amountAMin: amountAMin,
2201
+ amountBMin: amountBMin
2202
+ });
2203
+ callArgs = protocol.callOnIntegrationArgs({
2204
+ adapter: uniswapV2Adapter,
2205
+ selector: protocol.redeemSelector,
2206
+ encodedCallArgs: redeemArgs
2207
+ });
2208
+ redeemTx = comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs);
2209
+ _context2.next = 6;
2210
+ return expect(redeemTx).resolves.toBeReceipt();
2211
+
2212
+ case 6:
2213
+ return _context2.abrupt("return", redeemTx);
2214
+
2215
+ case 7:
2216
+ case "end":
2217
+ return _context2.stop();
2218
+ }
2219
+ }
2220
+ }, _callee2);
2221
+ }));
2222
+ return _uniswapV2Redeem.apply(this, arguments);
2223
+ }
2224
+
2225
+ function uniswapV2TakeOrder(_x3) {
2226
+ return _uniswapV2TakeOrder.apply(this, arguments);
2227
+ }
2228
+
2229
+ function _uniswapV2TakeOrder() {
2230
+ _uniswapV2TakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3(_ref3) {
2231
+ var comptrollerProxy, vaultProxy, integrationManager, fundOwner, uniswapV2Adapter, path, outgoingAssetAmount, minIncomingAssetAmount, _ref3$seedFund, seedFund, takeOrderArgs, callArgs;
2232
+
2233
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
2234
+ while (1) {
2235
+ switch (_context3.prev = _context3.next) {
2236
+ case 0:
2237
+ comptrollerProxy = _ref3.comptrollerProxy, vaultProxy = _ref3.vaultProxy, integrationManager = _ref3.integrationManager, fundOwner = _ref3.fundOwner, uniswapV2Adapter = _ref3.uniswapV2Adapter, path = _ref3.path, outgoingAssetAmount = _ref3.outgoingAssetAmount, minIncomingAssetAmount = _ref3.minIncomingAssetAmount, _ref3$seedFund = _ref3.seedFund, seedFund = _ref3$seedFund === void 0 ? false : _ref3$seedFund;
2238
+
2239
+ if (!seedFund) {
2240
+ _context3.next = 4;
2241
+ break;
2242
+ }
2243
+
2244
+ _context3.next = 4;
2245
+ return path[0].transfer(vaultProxy, outgoingAssetAmount);
2246
+
2247
+ case 4:
2248
+ takeOrderArgs = protocol.uniswapV2TakeOrderArgs({
2249
+ path: path,
2250
+ outgoingAssetAmount: outgoingAssetAmount,
2251
+ minIncomingAssetAmount: minIncomingAssetAmount
2252
+ });
2253
+ callArgs = protocol.callOnIntegrationArgs({
2254
+ adapter: uniswapV2Adapter,
2255
+ selector: protocol.takeOrderSelector,
2256
+ encodedCallArgs: takeOrderArgs
2257
+ });
2258
+ return _context3.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
2259
+
2260
+ case 7:
2261
+ case "end":
2262
+ return _context3.stop();
2263
+ }
2264
+ }
2265
+ }, _callee3);
2266
+ }));
2267
+ return _uniswapV2TakeOrder.apply(this, arguments);
2268
+ }
2269
+
2270
+ function uniswapV3TakeOrder(_x) {
2271
+ return _uniswapV3TakeOrder.apply(this, arguments);
2272
+ }
2273
+
2274
+ function _uniswapV3TakeOrder() {
2275
+ _uniswapV3TakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2276
+ var comptrollerProxy, integrationManager, fundOwner, uniswapV3Adapter, pathAddresses, pathFees, outgoingAssetAmount, _ref$minIncomingAsset, minIncomingAssetAmount, _ref$seedFund, seedFund, takeOrderArgs, callArgs;
2277
+
2278
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2279
+ while (1) {
2280
+ switch (_context.prev = _context.next) {
2281
+ case 0:
2282
+ comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, uniswapV3Adapter = _ref.uniswapV3Adapter, pathAddresses = _ref.pathAddresses, pathFees = _ref.pathFees, outgoingAssetAmount = _ref.outgoingAssetAmount, _ref$minIncomingAsset = _ref.minIncomingAssetAmount, minIncomingAssetAmount = _ref$minIncomingAsset === void 0 ? 1 : _ref$minIncomingAsset, _ref$seedFund = _ref.seedFund, seedFund = _ref$seedFund === void 0 ? false : _ref$seedFund;
2283
+
2284
+ if (!seedFund) {
2285
+ _context.next = 9;
2286
+ break;
2287
+ }
2288
+
2289
+ _context.t0 = pathAddresses[0];
2290
+ _context.next = 5;
2291
+ return comptrollerProxy.getVaultProxy();
2292
+
2293
+ case 5:
2294
+ _context.t1 = _context.sent;
2295
+ _context.t2 = outgoingAssetAmount;
2296
+ _context.next = 9;
2297
+ return _context.t0.transfer.call(_context.t0, _context.t1, _context.t2);
2298
+
2299
+ case 9:
2300
+ takeOrderArgs = protocol.uniswapV3TakeOrderArgs({
2301
+ pathAddresses: pathAddresses,
2302
+ pathFees: pathFees,
2303
+ outgoingAssetAmount: outgoingAssetAmount,
2304
+ minIncomingAssetAmount: minIncomingAssetAmount
2305
+ });
2306
+ callArgs = protocol.callOnIntegrationArgs({
2307
+ adapter: uniswapV3Adapter,
2308
+ selector: protocol.takeOrderSelector,
2309
+ encodedCallArgs: takeOrderArgs
2310
+ });
2311
+ return _context.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
2312
+
2313
+ case 12:
2314
+ case "end":
2315
+ return _context.stop();
2316
+ }
2317
+ }
2318
+ }, _callee);
2319
+ }));
2320
+ return _uniswapV3TakeOrder.apply(this, arguments);
2321
+ }
2322
+
2323
+ function yearnVaultV2Lend(_x) {
2324
+ return _yearnVaultV2Lend.apply(this, arguments);
2325
+ }
2326
+
2327
+ function _yearnVaultV2Lend() {
2328
+ _yearnVaultV2Lend = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2329
+ var signer, comptrollerProxy, integrationManager, yearnVaultV2Adapter, yVault, outgoingUnderlyingAmount, _ref$minIncomingYVaul, minIncomingYVaultSharesAmount, callArgs;
2330
+
2331
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2332
+ while (1) {
2333
+ switch (_context.prev = _context.next) {
2334
+ case 0:
2335
+ signer = _ref.signer, comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, yearnVaultV2Adapter = _ref.yearnVaultV2Adapter, yVault = _ref.yVault, outgoingUnderlyingAmount = _ref.outgoingUnderlyingAmount, _ref$minIncomingYVaul = _ref.minIncomingYVaultSharesAmount, minIncomingYVaultSharesAmount = _ref$minIncomingYVaul === void 0 ? ethers.BigNumber.from(1) : _ref$minIncomingYVaul;
2336
+ callArgs = protocol.callOnIntegrationArgs({
2337
+ adapter: yearnVaultV2Adapter,
2338
+ selector: protocol.lendSelector,
2339
+ encodedCallArgs: protocol.yearnVaultV2LendArgs({
2340
+ yVault: yVault,
2341
+ outgoingUnderlyingAmount: outgoingUnderlyingAmount,
2342
+ minIncomingYVaultSharesAmount: minIncomingYVaultSharesAmount
2343
+ })
2344
+ });
2345
+ return _context.abrupt("return", comptrollerProxy.connect(signer).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
2346
+
2347
+ case 3:
2348
+ case "end":
2349
+ return _context.stop();
2350
+ }
2351
+ }
2352
+ }, _callee);
2353
+ }));
2354
+ return _yearnVaultV2Lend.apply(this, arguments);
2355
+ }
2356
+
2357
+ function yearnVaultV2Redeem(_x2) {
2358
+ return _yearnVaultV2Redeem.apply(this, arguments);
2359
+ }
2360
+
2361
+ function _yearnVaultV2Redeem() {
2362
+ _yearnVaultV2Redeem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
2363
+ var signer, comptrollerProxy, integrationManager, yearnVaultV2Adapter, yVault, maxOutgoingYVaultSharesAmount, _ref2$minIncomingUnde, minIncomingUnderlyingAmount, _ref2$slippageToleran, slippageToleranceBps, callArgs;
2364
+
2365
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
2366
+ while (1) {
2367
+ switch (_context2.prev = _context2.next) {
2368
+ case 0:
2369
+ signer = _ref2.signer, comptrollerProxy = _ref2.comptrollerProxy, integrationManager = _ref2.integrationManager, yearnVaultV2Adapter = _ref2.yearnVaultV2Adapter, yVault = _ref2.yVault, maxOutgoingYVaultSharesAmount = _ref2.maxOutgoingYVaultSharesAmount, _ref2$minIncomingUnde = _ref2.minIncomingUnderlyingAmount, minIncomingUnderlyingAmount = _ref2$minIncomingUnde === void 0 ? ethers.BigNumber.from(1) : _ref2$minIncomingUnde, _ref2$slippageToleran = _ref2.slippageToleranceBps, slippageToleranceBps = _ref2$slippageToleran === void 0 ? 1 : _ref2$slippageToleran;
2370
+ callArgs = protocol.callOnIntegrationArgs({
2371
+ adapter: yearnVaultV2Adapter,
2372
+ selector: protocol.redeemSelector,
2373
+ encodedCallArgs: protocol.yearnVaultV2RedeemArgs({
2374
+ yVault: yVault,
2375
+ maxOutgoingYVaultSharesAmount: maxOutgoingYVaultSharesAmount,
2376
+ minIncomingUnderlyingAmount: minIncomingUnderlyingAmount,
2377
+ slippageToleranceBps: slippageToleranceBps
2378
+ })
2379
+ });
2380
+ return _context2.abrupt("return", comptrollerProxy.connect(signer).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
2381
+
2382
+ case 3:
2383
+ case "end":
2384
+ return _context2.stop();
2385
+ }
2386
+ }
2387
+ }, _callee2);
2388
+ }));
2389
+ return _yearnVaultV2Redeem.apply(this, arguments);
2390
+ }
2391
+
2392
+ function zeroExV2TakeOrder(_x) {
2393
+ return _zeroExV2TakeOrder.apply(this, arguments);
2394
+ }
2395
+
2396
+ function _zeroExV2TakeOrder() {
2397
+ _zeroExV2TakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2398
+ var comptrollerProxy, integrationManager, fundOwner, zeroExV2Adapter, signedOrder, takerAssetFillAmount, takeOrderArgs, callArgs;
2399
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2400
+ while (1) {
2401
+ switch (_context.prev = _context.next) {
2402
+ case 0:
2403
+ comptrollerProxy = _ref.comptrollerProxy, integrationManager = _ref.integrationManager, fundOwner = _ref.fundOwner, zeroExV2Adapter = _ref.zeroExV2Adapter, signedOrder = _ref.signedOrder, takerAssetFillAmount = _ref.takerAssetFillAmount;
2404
+ takeOrderArgs = protocol.zeroExV2TakeOrderArgs({
2405
+ signedOrder: signedOrder,
2406
+ takerAssetFillAmount: takerAssetFillAmount
2407
+ });
2408
+ callArgs = protocol.callOnIntegrationArgs({
2409
+ adapter: zeroExV2Adapter,
2410
+ selector: protocol.takeOrderSelector,
2411
+ encodedCallArgs: takeOrderArgs
2412
+ });
2413
+ return _context.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, protocol.IntegrationManagerActionId.CallOnIntegration, callArgs));
2414
+
2415
+ case 4:
2416
+ case "end":
2417
+ return _context.stop();
2418
+ }
2419
+ }
2420
+ }, _callee);
2421
+ }));
2422
+ return _zeroExV2TakeOrder.apply(this, arguments);
2423
+ }
2424
+
2425
+ function generatePolicyManagerConfigWithMockPolicies(_x) {
2426
+ return _generatePolicyManagerConfigWithMockPolicies.apply(this, arguments);
2427
+ }
2428
+
2429
+ function _generatePolicyManagerConfigWithMockPolicies() {
2430
+ _generatePolicyManagerConfigWithMockPolicies = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2431
+ var deployer, policyManager, policies, policiesSettingsData;
2432
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2433
+ while (1) {
2434
+ switch (_context.prev = _context.next) {
2435
+ case 0:
2436
+ deployer = _ref.deployer, policyManager = _ref.policyManager;
2437
+ _context.next = 3;
2438
+ return generateRegisteredMockPolicies({
2439
+ deployer: deployer,
2440
+ policyManager: policyManager
2441
+ });
2442
+
2443
+ case 3:
2444
+ policies = _context.sent;
2445
+ policiesSettingsData = [ethers.utils.randomBytes(10), ethers.constants.HashZero, ethers.constants.HashZero, ethers.utils.randomBytes(2)];
2446
+ return _context.abrupt("return", protocol.policyManagerConfigArgs({
2447
+ policies: Object.values(policies),
2448
+ settings: policiesSettingsData
2449
+ }));
2450
+
2451
+ case 6:
2452
+ case "end":
2453
+ return _context.stop();
2454
+ }
2455
+ }
2456
+ }, _callee);
2457
+ }));
2458
+ return _generatePolicyManagerConfigWithMockPolicies.apply(this, arguments);
2459
+ }
2460
+
2461
+ function generateRegisteredMockPolicies(_x2) {
2462
+ return _generateRegisteredMockPolicies.apply(this, arguments);
2463
+ }
2464
+
2465
+ function _generateRegisteredMockPolicies() {
2466
+ _generateRegisteredMockPolicies = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
2467
+ var deployer, policyManager, mockPreBuySharesPolicy, mockPostBuySharesPolicy, mockPreCoIPolicy, mockPostCoIPolicy;
2468
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
2469
+ while (1) {
2470
+ switch (_context2.prev = _context2.next) {
2471
+ case 0:
2472
+ deployer = _ref2.deployer, policyManager = _ref2.policyManager;
2473
+ _context2.next = 3;
2474
+ return protocol.IPolicy.mock(deployer);
2475
+
2476
+ case 3:
2477
+ mockPreBuySharesPolicy = _context2.sent;
2478
+ _context2.next = 6;
2479
+ return protocol.IPolicy.mock(deployer);
2480
+
2481
+ case 6:
2482
+ mockPostBuySharesPolicy = _context2.sent;
2483
+ _context2.next = 9;
2484
+ return protocol.IPolicy.mock(deployer);
2485
+
2486
+ case 9:
2487
+ mockPreCoIPolicy = _context2.sent;
2488
+ _context2.next = 12;
2489
+ return protocol.IPolicy.mock(deployer);
2490
+
2491
+ case 12:
2492
+ mockPostCoIPolicy = _context2.sent;
2493
+ _context2.next = 15;
2494
+ return Promise.all([// PreBuyShares
2495
+ mockPreBuySharesPolicy.identifier.returns("MOCK_PRE_BUY_SHARES"), mockPreBuySharesPolicy.addFundSettings.returns(undefined), mockPreBuySharesPolicy.activateForFund.returns(undefined), mockPreBuySharesPolicy.validateRule.returns(true), mockPreBuySharesPolicy.implementedHooks.returns([protocol.PolicyHook.PreBuyShares]), mockPreBuySharesPolicy.updateFundSettings.returns(undefined), // PostBuyShares
2496
+ mockPostBuySharesPolicy.identifier.returns("MOCK_POST_BUY_SHARES"), mockPostBuySharesPolicy.addFundSettings.returns(undefined), mockPostBuySharesPolicy.activateForFund.returns(undefined), mockPostBuySharesPolicy.validateRule.returns(true), mockPostBuySharesPolicy.implementedHooks.returns([protocol.PolicyHook.PostBuyShares]), mockPostBuySharesPolicy.updateFundSettings.returns(undefined), // PreCallOnIntegration
2497
+ mockPreCoIPolicy.identifier.returns("MOCK_PRE_CALL_ON_INTEGRATION"), mockPreCoIPolicy.addFundSettings.returns(undefined), mockPreCoIPolicy.activateForFund.returns(undefined), mockPreCoIPolicy.validateRule.returns(true), mockPreCoIPolicy.implementedHooks.returns([protocol.PolicyHook.PreCallOnIntegration]), mockPreCoIPolicy.updateFundSettings.returns(undefined), // PostCallOnIntegration
2498
+ mockPostCoIPolicy.identifier.returns("MOCK_POST_CALL_ON_INTEGRATION"), mockPostCoIPolicy.addFundSettings.returns(undefined), mockPostCoIPolicy.activateForFund.returns(undefined), mockPostCoIPolicy.validateRule.returns(true), mockPostCoIPolicy.implementedHooks.returns([protocol.PolicyHook.PostCallOnIntegration]), mockPostCoIPolicy.updateFundSettings.returns(undefined)]);
2499
+
2500
+ case 15:
2501
+ _context2.next = 17;
2502
+ return policyManager.registerPolicies([mockPreBuySharesPolicy, mockPostBuySharesPolicy, mockPreCoIPolicy, mockPostCoIPolicy]);
2503
+
2504
+ case 17:
2505
+ return _context2.abrupt("return", {
2506
+ mockPreBuySharesPolicy: mockPreBuySharesPolicy,
2507
+ mockPostBuySharesPolicy: mockPostBuySharesPolicy,
2508
+ mockPreCoIPolicy: mockPreCoIPolicy,
2509
+ mockPostCoIPolicy: mockPostCoIPolicy
2510
+ });
2511
+
2512
+ case 18:
2513
+ case "end":
2514
+ return _context2.stop();
2515
+ }
2516
+ }
2517
+ }, _callee2);
2518
+ }));
2519
+ return _generateRegisteredMockPolicies.apply(this, arguments);
2520
+ }
2521
+
2522
+ function assertEvent(receipt, event, match) {
2523
+ var _events$shift;
2524
+
2525
+ var events = ethers$1.extractEvent(receipt, event);
2526
+ expect(events.length).toBe(1);
2527
+ expect(receipt).toHaveEmittedWith(event, match);
2528
+ var args = (_events$shift = events.shift()) === null || _events$shift === void 0 ? void 0 : _events$shift.args;
2529
+ return args;
2530
+ }
2531
+ function assertNoEvent(receipt, event) {
2532
+ var events = ethers$1.extractEvent(receipt, event);
2533
+ expect(events.length).toBe(0);
2534
+ }
2535
+
2536
+ function createAuthUserExecutedSharesRequestorProxy(_x) {
2537
+ return _createAuthUserExecutedSharesRequestorProxy.apply(this, arguments);
2538
+ }
2539
+
2540
+ function _createAuthUserExecutedSharesRequestorProxy() {
2541
+ _createAuthUserExecutedSharesRequestorProxy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2542
+ var signer, authUserExecutedSharesRequestorFactory, comptrollerProxy, receipt, sharesRequestorProxyDeployedArgs;
2543
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2544
+ while (1) {
2545
+ switch (_context.prev = _context.next) {
2546
+ case 0:
2547
+ signer = _ref.signer, authUserExecutedSharesRequestorFactory = _ref.authUserExecutedSharesRequestorFactory, comptrollerProxy = _ref.comptrollerProxy;
2548
+ _context.next = 3;
2549
+ return authUserExecutedSharesRequestorFactory.connect(signer).deploySharesRequestorProxy(comptrollerProxy);
2550
+
2551
+ case 3:
2552
+ receipt = _context.sent;
2553
+ sharesRequestorProxyDeployedArgs = assertEvent(receipt, 'SharesRequestorProxyDeployed', {
2554
+ comptrollerProxy: comptrollerProxy,
2555
+ sharesRequestorProxy: expect.any(String)
2556
+ });
2557
+ return _context.abrupt("return", {
2558
+ authUserExecutedSharesRequestorProxy: new protocol.AuthUserExecutedSharesRequestorLib(sharesRequestorProxyDeployedArgs.sharesRequestorProxy, signer),
2559
+ receipt: receipt
2560
+ });
2561
+
2562
+ case 6:
2563
+ case "end":
2564
+ return _context.stop();
2565
+ }
2566
+ }
2567
+ }, _callee);
2568
+ }));
2569
+ return _createAuthUserExecutedSharesRequestorProxy.apply(this, arguments);
2570
+ }
2571
+
2572
+ function createAuthUserExecutedSharesRequest(_x2) {
2573
+ return _createAuthUserExecutedSharesRequest.apply(this, arguments);
2574
+ }
2575
+
2576
+ function _createAuthUserExecutedSharesRequest() {
2577
+ _createAuthUserExecutedSharesRequest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
2578
+ var buyer, authUserExecutedSharesRequestorProxy, denominationAsset, _ref2$investmentAmoun, investmentAmount, _ref2$minSharesQuanti, minSharesQuantity;
2579
+
2580
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
2581
+ while (1) {
2582
+ switch (_context2.prev = _context2.next) {
2583
+ case 0:
2584
+ buyer = _ref2.buyer, authUserExecutedSharesRequestorProxy = _ref2.authUserExecutedSharesRequestorProxy, denominationAsset = _ref2.denominationAsset, _ref2$investmentAmoun = _ref2.investmentAmount, investmentAmount = _ref2$investmentAmoun === void 0 ? ethers.utils.parseEther('1') : _ref2$investmentAmoun, _ref2$minSharesQuanti = _ref2.minSharesQuantity, minSharesQuantity = _ref2$minSharesQuanti === void 0 ? investmentAmount : _ref2$minSharesQuanti;
2585
+ _context2.next = 3;
2586
+ return denominationAsset.connect(buyer).approve(authUserExecutedSharesRequestorProxy, investmentAmount);
2587
+
2588
+ case 3:
2589
+ return _context2.abrupt("return", authUserExecutedSharesRequestorProxy.connect(buyer).createRequest(investmentAmount, minSharesQuantity));
2590
+
2591
+ case 4:
2592
+ case "end":
2593
+ return _context2.stop();
2594
+ }
2595
+ }
2596
+ }, _callee2);
2597
+ }));
2598
+ return _createAuthUserExecutedSharesRequest.apply(this, arguments);
2599
+ }
2600
+
2601
+ function buyShares(_x) {
2602
+ return _buyShares.apply(this, arguments);
2603
+ }
2604
+
2605
+ function _buyShares() {
2606
+ _buyShares = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2607
+ var comptrollerProxy, signer, buyers, denominationAsset, _ref$investmentAmount, investmentAmounts, _ref$minSharesAmounts, minSharesAmounts, totalInvestmentAmount, callerDenominationAsset, callerComptrollerProxy;
2608
+
2609
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2610
+ while (1) {
2611
+ switch (_context.prev = _context.next) {
2612
+ case 0:
2613
+ comptrollerProxy = _ref.comptrollerProxy, signer = _ref.signer, buyers = _ref.buyers, denominationAsset = _ref.denominationAsset, _ref$investmentAmount = _ref.investmentAmounts, investmentAmounts = _ref$investmentAmount === void 0 ? new Array(buyers.length).fill(ethers.utils.parseEther('1')) : _ref$investmentAmount, _ref$minSharesAmounts = _ref.minSharesAmounts, minSharesAmounts = _ref$minSharesAmounts === void 0 ? investmentAmounts : _ref$minSharesAmounts;
2614
+ totalInvestmentAmount = investmentAmounts.reduce(function (total, amount) {
2615
+ return total.add(amount);
2616
+ }, ethers.constants.Zero);
2617
+ callerDenominationAsset = denominationAsset.connect(signer);
2618
+ _context.next = 5;
2619
+ return callerDenominationAsset.approve(comptrollerProxy, totalInvestmentAmount);
2620
+
2621
+ case 5:
2622
+ callerComptrollerProxy = comptrollerProxy.connect(signer);
2623
+ return _context.abrupt("return", callerComptrollerProxy.buyShares(buyers, investmentAmounts, minSharesAmounts));
2624
+
2625
+ case 7:
2626
+ case "end":
2627
+ return _context.stop();
2628
+ }
2629
+ }
2630
+ }, _callee);
2631
+ }));
2632
+ return _buyShares.apply(this, arguments);
2633
+ }
2634
+
2635
+ function redeemShares(_x2) {
2636
+ return _redeemShares.apply(this, arguments);
2637
+ }
2638
+
2639
+ function _redeemShares() {
2640
+ _redeemShares = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
2641
+ var comptrollerProxy, signer, quantity, _ref2$additionalAsset, additionalAssets, _ref2$assetsToSkip, assetsToSkip;
2642
+
2643
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
2644
+ while (1) {
2645
+ switch (_context2.prev = _context2.next) {
2646
+ case 0:
2647
+ comptrollerProxy = _ref2.comptrollerProxy, signer = _ref2.signer, quantity = _ref2.quantity, _ref2$additionalAsset = _ref2.additionalAssets, additionalAssets = _ref2$additionalAsset === void 0 ? [] : _ref2$additionalAsset, _ref2$assetsToSkip = _ref2.assetsToSkip, assetsToSkip = _ref2$assetsToSkip === void 0 ? [] : _ref2$assetsToSkip;
2648
+
2649
+ if (!(quantity == undefined)) {
2650
+ _context2.next = 7;
2651
+ break;
2652
+ }
2653
+
2654
+ if (!(additionalAssets.length > 0 || assetsToSkip.length > 0)) {
2655
+ _context2.next = 4;
2656
+ break;
2657
+ }
2658
+
2659
+ throw 'Must specify shares quantity if specifying additional assets or assets to skip';
2660
+
2661
+ case 4:
2662
+ return _context2.abrupt("return", comptrollerProxy.connect(signer).redeemShares());
2663
+
2664
+ case 7:
2665
+ return _context2.abrupt("return", comptrollerProxy.connect(signer).redeemSharesDetailed(quantity, additionalAssets, assetsToSkip));
2666
+
2667
+ case 8:
2668
+ case "end":
2669
+ return _context2.stop();
2670
+ }
2671
+ }
2672
+ }, _callee2);
2673
+ }));
2674
+ return _redeemShares.apply(this, arguments);
2675
+ }
2676
+
2677
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2678
+
2679
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
2680
+ function createComptrollerProxy(_x) {
2681
+ return _createComptrollerProxy.apply(this, arguments);
2682
+ }
2683
+
2684
+ function _createComptrollerProxy() {
2685
+ _createComptrollerProxy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2686
+ var signer, comptrollerLib, denominationAsset, _ref$sharesActionTime, sharesActionTimelock, constructData, comptrollerProxyContract;
2687
+
2688
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2689
+ while (1) {
2690
+ switch (_context.prev = _context.next) {
2691
+ case 0:
2692
+ signer = _ref.signer, comptrollerLib = _ref.comptrollerLib, denominationAsset = _ref.denominationAsset, _ref$sharesActionTime = _ref.sharesActionTimelock, sharesActionTimelock = _ref$sharesActionTime === void 0 ? 0 : _ref$sharesActionTime;
2693
+ constructData = protocol.encodeFunctionData(comptrollerLib.init.fragment, [denominationAsset, sharesActionTimelock]);
2694
+ _context.next = 4;
2695
+ return protocol.ComptrollerProxy.deploy(signer, constructData, comptrollerLib);
2696
+
2697
+ case 4:
2698
+ comptrollerProxyContract = _context.sent;
2699
+ return _context.abrupt("return", {
2700
+ comptrollerProxy: new protocol.ComptrollerLib(comptrollerProxyContract, signer),
2701
+ receipt: comptrollerProxyContract.deployment
2702
+ });
2703
+
2704
+ case 6:
2705
+ case "end":
2706
+ return _context.stop();
2707
+ }
2708
+ }
2709
+ }, _callee);
2710
+ }));
2711
+ return _createComptrollerProxy.apply(this, arguments);
2712
+ }
2713
+
2714
+ function createMigratedFundConfig(_x2) {
2715
+ return _createMigratedFundConfig.apply(this, arguments);
2716
+ } // TODO: should we pass in the fundOwner as a signer also so we can connect comptroller proxy and vault proxy to that acct instead?
2717
+
2718
+ function _createMigratedFundConfig() {
2719
+ _createMigratedFundConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(_ref2) {
2720
+ var signer, fundDeployer, denominationAsset, _ref2$sharesActionTim, sharesActionTimelock, _ref2$feeManagerConfi, feeManagerConfigData, _ref2$policyManagerCo, policyManagerConfigData, receipt, comptrollerDeployedArgs;
2721
+
2722
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
2723
+ while (1) {
2724
+ switch (_context2.prev = _context2.next) {
2725
+ case 0:
2726
+ signer = _ref2.signer, fundDeployer = _ref2.fundDeployer, denominationAsset = _ref2.denominationAsset, _ref2$sharesActionTim = _ref2.sharesActionTimelock, sharesActionTimelock = _ref2$sharesActionTim === void 0 ? 0 : _ref2$sharesActionTim, _ref2$feeManagerConfi = _ref2.feeManagerConfigData, feeManagerConfigData = _ref2$feeManagerConfi === void 0 ? '0x' : _ref2$feeManagerConfi, _ref2$policyManagerCo = _ref2.policyManagerConfigData, policyManagerConfigData = _ref2$policyManagerCo === void 0 ? '0x' : _ref2$policyManagerCo;
2727
+ _context2.next = 3;
2728
+ return fundDeployer.connect(signer).createMigratedFundConfig(denominationAsset, sharesActionTimelock, feeManagerConfigData, policyManagerConfigData);
2729
+
2730
+ case 3:
2731
+ receipt = _context2.sent;
2732
+ comptrollerDeployedArgs = assertEvent(receipt, 'ComptrollerProxyDeployed', {
2733
+ creator: signer,
2734
+ comptrollerProxy: expect.any(String),
2735
+ denominationAsset: denominationAsset,
2736
+ sharesActionTimelock: ethers.BigNumber.from(sharesActionTimelock),
2737
+ feeManagerConfigData: ethers.utils.hexlify(feeManagerConfigData),
2738
+ policyManagerConfigData: ethers.utils.hexlify(policyManagerConfigData),
2739
+ forMigration: true
2740
+ });
2741
+ return _context2.abrupt("return", {
2742
+ receipt: receipt,
2743
+ comptrollerProxy: new protocol.ComptrollerLib(comptrollerDeployedArgs.comptrollerProxy, signer)
2744
+ });
2745
+
2746
+ case 6:
2747
+ case "end":
2748
+ return _context2.stop();
2749
+ }
2750
+ }
2751
+ }, _callee2);
2752
+ }));
2753
+ return _createMigratedFundConfig.apply(this, arguments);
2754
+ }
2755
+
2756
+ function createNewFund(_x3) {
2757
+ return _createNewFund.apply(this, arguments);
2758
+ }
2759
+
2760
+ function _createNewFund() {
2761
+ _createNewFund = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3(_ref3) {
2762
+ var signer, fundDeployer, denominationAsset, _ref3$sharesActionTim, sharesActionTimelock, _ref3$fundOwner, fundOwner, _ref3$fundName, fundName, _ref3$feeManagerConfi, feeManagerConfig, _ref3$policyManagerCo, policyManagerConfig, investment, receipt, comptrollerDeployedArgs, comptrollerProxy, newFundDeployedArgs, vaultProxy;
2763
+
2764
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
2765
+ while (1) {
2766
+ switch (_context3.prev = _context3.next) {
2767
+ case 0:
2768
+ signer = _ref3.signer, fundDeployer = _ref3.fundDeployer, denominationAsset = _ref3.denominationAsset, _ref3$sharesActionTim = _ref3.sharesActionTimelock, sharesActionTimelock = _ref3$sharesActionTim === void 0 ? 0 : _ref3$sharesActionTim, _ref3$fundOwner = _ref3.fundOwner, fundOwner = _ref3$fundOwner === void 0 ? ethers$1.randomAddress() : _ref3$fundOwner, _ref3$fundName = _ref3.fundName, fundName = _ref3$fundName === void 0 ? 'My Fund' : _ref3$fundName, _ref3$feeManagerConfi = _ref3.feeManagerConfig, feeManagerConfig = _ref3$feeManagerConfi === void 0 ? '0x' : _ref3$feeManagerConfi, _ref3$policyManagerCo = _ref3.policyManagerConfig, policyManagerConfig = _ref3$policyManagerCo === void 0 ? '0x' : _ref3$policyManagerCo, investment = _ref3.investment;
2769
+ _context3.next = 3;
2770
+ return fundDeployer.connect(signer).createNewFund(fundOwner, fundName, denominationAsset, sharesActionTimelock, feeManagerConfig, policyManagerConfig);
2771
+
2772
+ case 3:
2773
+ receipt = _context3.sent;
2774
+ comptrollerDeployedArgs = assertEvent(receipt, 'ComptrollerProxyDeployed', {
2775
+ creator: signer,
2776
+ comptrollerProxy: expect.any(String),
2777
+ denominationAsset: denominationAsset,
2778
+ sharesActionTimelock: ethers.BigNumber.from(sharesActionTimelock),
2779
+ feeManagerConfigData: ethers.utils.hexlify(feeManagerConfig),
2780
+ policyManagerConfigData: ethers.utils.hexlify(policyManagerConfig),
2781
+ forMigration: false
2782
+ });
2783
+ comptrollerProxy = new protocol.ComptrollerLib(comptrollerDeployedArgs.comptrollerProxy, signer);
2784
+ newFundDeployedArgs = assertEvent(receipt, 'NewFundCreated', {
2785
+ creator: signer,
2786
+ comptrollerProxy: comptrollerProxy,
2787
+ vaultProxy: expect.any(String),
2788
+ fundOwner: fundOwner,
2789
+ fundName: fundName,
2790
+ denominationAsset: denominationAsset,
2791
+ sharesActionTimelock: ethers.BigNumber.from(sharesActionTimelock),
2792
+ feeManagerConfigData: ethers.utils.hexlify(feeManagerConfig),
2793
+ policyManagerConfigData: ethers.utils.hexlify(policyManagerConfig)
2794
+ });
2795
+ vaultProxy = new protocol.VaultLib(newFundDeployedArgs.vaultProxy, signer);
2796
+
2797
+ if (!(investment != null)) {
2798
+ _context3.next = 11;
2799
+ break;
2800
+ }
2801
+
2802
+ _context3.next = 11;
2803
+ return buyShares(_objectSpread$1({
2804
+ comptrollerProxy: comptrollerProxy,
2805
+ denominationAsset: denominationAsset
2806
+ }, investment));
2807
+
2808
+ case 11:
2809
+ return _context3.abrupt("return", {
2810
+ comptrollerProxy: comptrollerProxy,
2811
+ receipt: receipt,
2812
+ vaultProxy: vaultProxy
2813
+ });
2814
+
2815
+ case 12:
2816
+ case "end":
2817
+ return _context3.stop();
2818
+ }
2819
+ }
2820
+ }, _callee3);
2821
+ }));
2822
+ return _createNewFund.apply(this, arguments);
2823
+ }
2824
+
2825
+ function vaultCallCurveMinterMint(_ref) {
2826
+ var comptrollerProxy = _ref.comptrollerProxy,
2827
+ minter = _ref.minter,
2828
+ gauge = _ref.gauge;
2829
+ return comptrollerProxy.vaultCallOnContract(minter, protocol.curveMinterMintSelector, protocol.encodeArgs(['address'], [gauge]));
2830
+ }
2831
+ function vaultCallCurveMinterMintMany(_ref2) {
2832
+ var comptrollerProxy = _ref2.comptrollerProxy,
2833
+ minter = _ref2.minter,
2834
+ gauges = _ref2.gauges;
2835
+ var gaugesFormatted = new Array(8).fill(ethers.constants.AddressZero);
2836
+
2837
+ for (var i in gauges) {
2838
+ gaugesFormatted[i] = gauges[i];
2839
+ }
2840
+
2841
+ return comptrollerProxy.vaultCallOnContract(minter, protocol.curveMinterMintManySelector, protocol.encodeArgs(['address[8]'], [gaugesFormatted]));
2842
+ }
2843
+ function vaultCallCurveMinterToggleApproveMint(_ref3) {
2844
+ var comptrollerProxy = _ref3.comptrollerProxy,
2845
+ minter = _ref3.minter,
2846
+ account = _ref3.account;
2847
+ return comptrollerProxy.vaultCallOnContract(minter, protocol.curveMinterToggleApproveMintSelector, protocol.encodeArgs(['address'], [account]));
2848
+ }
2849
+
2850
+ function transactionTimestamp(_x) {
2851
+ return _transactionTimestamp.apply(this, arguments);
2852
+ }
2853
+
2854
+ function _transactionTimestamp() {
2855
+ _transactionTimestamp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(receipt) {
2856
+ var block;
2857
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2858
+ while (1) {
2859
+ switch (_context.prev = _context.next) {
2860
+ case 0:
2861
+ _context.next = 2;
2862
+ return provider.getBlock(receipt.blockNumber);
2863
+
2864
+ case 2:
2865
+ block = _context.sent;
2866
+ return _context.abrupt("return", block.timestamp);
2867
+
2868
+ case 4:
2869
+ case "end":
2870
+ return _context.stop();
2871
+ }
2872
+ }
2873
+ }, _callee);
2874
+ }));
2875
+ return _transactionTimestamp.apply(this, arguments);
2876
+ }
2877
+
2878
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2879
+
2880
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
2881
+ var whales = {
2882
+ adai: '0x62e41b1185023bcc14a465d350e1dde341557925',
2883
+ ausdc: '0x3ddfa8ec3052539b6c9549f12cea2c295cff5296',
2884
+ bat: '0x12274c71304bc0e6b38a56b94d2949b118feb838',
2885
+ bnb: '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8',
2886
+ bnt: '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8',
2887
+ comp: '0xC89b6f0146642688bb254bF93C28fcCF1E182C81',
2888
+ crv: '0x4ce799e6eD8D64536b67dD428565d52A531B3640',
2889
+ dai: '0x16463c0fdb6ba9618909f5b120ea1581618c1b9e',
2890
+ knc: '0x9d1167df52328db20d5d77288dce6ae3ef3a3e1f',
2891
+ ldo: '0x3dba737ccc50a32a1764b493285dd51c8af6c278',
2892
+ link: '0xbe6977e08d4479c0a6777539ae0e8fa27be4e9d6',
2893
+ mana: '0xefb94ac00f1cee8a89d5c3f49faa799da6f03024',
2894
+ mln: '0xd8f8a53945bcfbbc19da162aa405e662ef71c40d',
2895
+ repv2: '0x5d65a134fd84b724c34703b88b20b0d84d22d918',
2896
+ ren: '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8',
2897
+ uni: '0x47173b170c64d16393a52e6c480b3ad8c302ba1e',
2898
+ usdc: '0xae2d4617c862309a3d75a0ffb358c7a5009c673f',
2899
+ usdt: '0x5041ed759dd4afc3a72b8192c143f72f4724081a',
2900
+ weth: '0xe08A8b19e5722a201EaF20A6BC595eF655397bd5',
2901
+ zrx: '0x206376e8940e42538781cd94ef024df3c1e0fd43',
2902
+ cbat: '0x285306442cd985cab2c30515cfdab106fca7bc44',
2903
+ ccomp: '0xd74f186194ab9219fafac5c2fe4b3270169666db',
2904
+ cdai: '0x2bddEd18E2CA464355091266B7616956944ee7eE',
2905
+ ceth: '0xdb5aa12ad695ef2a28c6cdb69f2bb04bed20a48e',
2906
+ crep: '0xc2386de1b7271a87b416f4605d500846e826a185',
2907
+ cuni: '0x767ecb395def19ab8d1b2fcc89b3ddfbed28fd6b',
2908
+ cusdc: '0x9b4772e59385ec732bccb06018e318b7b3477459',
2909
+ czrx: '0x57ca561798413a20508b6bc997481e784f3e6e5f',
2910
+ seth: '0xc34a7c65aa08cb36744bda8eeec7b8e9891e147c',
2911
+ seur: '0xca17ef1925d49931918e3fde7aa4516a3a4958c4',
2912
+ susd: '0x49BE88F0fcC3A8393a59d3688480d7D253C37D2A',
2913
+ lidoSteth: '0x31f644e2dd5d74f5c8d6d9de89dd517474d51800',
2914
+ eurs: '0x98ed26de6451db36246672df78ae7c50f2c76f6d',
2915
+ idle: '0x34aaa3d5a73d6f9594326d0422ce69748f09b14f'
2916
+ };
2917
+ function unlockWhale(_x) {
2918
+ return _unlockWhale.apply(this, arguments);
2919
+ }
2920
+
2921
+ function _unlockWhale() {
2922
+ _unlockWhale = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(token) {
2923
+ var address;
2924
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2925
+ while (1) {
2926
+ switch (_context.prev = _context.next) {
2927
+ case 0:
2928
+ address = ethers$1.resolveAddress(whales[token]);
2929
+ _context.next = 3;
2930
+ return provider.send('hardhat_impersonateAccount', [address]);
2931
+
2932
+ case 3:
2933
+ return _context.abrupt("return", provider.getSignerWithAddress(address));
2934
+
2935
+ case 4:
2936
+ case "end":
2937
+ return _context.stop();
2938
+ }
2939
+ }
2940
+ }, _callee);
2941
+ }));
2942
+ return _unlockWhale.apply(this, arguments);
2943
+ }
2944
+
2945
+ function unlockAllWhales() {
2946
+ return _unlockAllWhales.apply(this, arguments);
2947
+ }
2948
+
2949
+ function _unlockAllWhales() {
2950
+ _unlockAllWhales = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3() {
2951
+ var keys, signers;
2952
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
2953
+ while (1) {
2954
+ switch (_context3.prev = _context3.next) {
2955
+ case 0:
2956
+ keys = Object.keys(whales);
2957
+ _context3.next = 3;
2958
+ return Promise.all(keys.map( /*#__PURE__*/function () {
2959
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(token) {
2960
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
2961
+ while (1) {
2962
+ switch (_context2.prev = _context2.next) {
2963
+ case 0:
2964
+ return _context2.abrupt("return", unlockWhale(token));
2965
+
2966
+ case 1:
2967
+ case "end":
2968
+ return _context2.stop();
2969
+ }
2970
+ }
2971
+ }, _callee2);
2972
+ }));
2973
+
2974
+ return function (_x2) {
2975
+ return _ref.apply(this, arguments);
2976
+ };
2977
+ }()));
2978
+
2979
+ case 3:
2980
+ signers = _context3.sent;
2981
+ return _context3.abrupt("return", keys.reduce(function (carry, key, index) {
2982
+ return _objectSpread(_objectSpread({}, carry), {}, _defineProperty({}, key, signers[index]));
2983
+ }, {}));
2984
+
2985
+ case 5:
2986
+ case "end":
2987
+ return _context3.stop();
2988
+ }
2989
+ }
2990
+ }, _callee3);
2991
+ }));
2992
+ return _unlockAllWhales.apply(this, arguments);
2993
+ }
2994
+
2995
+ function unlockWhales() {
2996
+ return _unlockWhales.apply(this, arguments);
2997
+ }
2998
+
2999
+ function _unlockWhales() {
3000
+ _unlockWhales = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee5() {
3001
+ var _len,
3002
+ tokens,
3003
+ _key,
3004
+ signers,
3005
+ _args5 = arguments;
3006
+
3007
+ return _regeneratorRuntime__default['default'].wrap(function _callee5$(_context5) {
3008
+ while (1) {
3009
+ switch (_context5.prev = _context5.next) {
3010
+ case 0:
3011
+ for (_len = _args5.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) {
3012
+ tokens[_key] = _args5[_key];
3013
+ }
3014
+
3015
+ _context5.next = 3;
3016
+ return Promise.all(tokens.map( /*#__PURE__*/function () {
3017
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee4(token) {
3018
+ return _regeneratorRuntime__default['default'].wrap(function _callee4$(_context4) {
3019
+ while (1) {
3020
+ switch (_context4.prev = _context4.next) {
3021
+ case 0:
3022
+ return _context4.abrupt("return", unlockWhale(token));
3023
+
3024
+ case 1:
3025
+ case "end":
3026
+ return _context4.stop();
3027
+ }
3028
+ }
3029
+ }, _callee4);
3030
+ }));
3031
+
3032
+ return function (_x3) {
3033
+ return _ref2.apply(this, arguments);
3034
+ };
3035
+ }()));
3036
+
3037
+ case 3:
3038
+ signers = _context5.sent;
3039
+ return _context5.abrupt("return", tokens.reduce(function (carry, key, index) {
3040
+ return _objectSpread(_objectSpread({}, carry), {}, _defineProperty({}, key, signers[index]));
3041
+ }, {}));
3042
+
3043
+ case 5:
3044
+ case "end":
3045
+ return _context5.stop();
3046
+ }
3047
+ }
3048
+ }, _callee5);
3049
+ }));
3050
+ return _unlockWhales.apply(this, arguments);
3051
+ }
3052
+
3053
+ exports.AlphaHomoraV1Bank = AlphaHomoraV1Bank;
3054
+ exports.AlphaHomoraV1BankConfig = AlphaHomoraV1BankConfig;
3055
+ exports.CurveLiquidityGaugeV2 = CurveLiquidityGaugeV2;
3056
+ exports.CurveMinter = CurveMinter;
3057
+ exports.CurveSwaps = CurveSwaps;
3058
+ exports.ICompoundComptroller = ICompoundComptroller;
3059
+ exports.KyberNetworkProxy = KyberNetworkProxy;
3060
+ exports.UniswapV2Factory = UniswapV2Factory;
3061
+ exports.aaveLend = aaveLend;
3062
+ exports.aaveRedeem = aaveRedeem;
3063
+ exports.addNewAssetsToFund = addNewAssetsToFund;
3064
+ exports.addTrackedAssets = addTrackedAssets;
3065
+ exports.alphaHomoraV1Lend = alphaHomoraV1Lend;
3066
+ exports.alphaHomoraV1Redeem = alphaHomoraV1Redeem;
3067
+ exports.assertEvent = assertEvent;
3068
+ exports.assertNoEvent = assertNoEvent;
3069
+ exports.buyShares = buyShares;
3070
+ exports.calcAlphaBankLiveTotalEth = calcAlphaBankLiveTotalEth;
3071
+ exports.callOnExtension = callOnExtension;
3072
+ exports.compoundLend = compoundLend;
3073
+ exports.compoundRedeem = compoundRedeem;
3074
+ exports.createAuthUserExecutedSharesRequest = createAuthUserExecutedSharesRequest;
3075
+ exports.createAuthUserExecutedSharesRequestorProxy = createAuthUserExecutedSharesRequestorProxy;
3076
+ exports.createComptrollerProxy = createComptrollerProxy;
3077
+ exports.createFundDeployer = createFundDeployer;
3078
+ exports.createMigratedFundConfig = createMigratedFundConfig;
3079
+ exports.createNewFund = createNewFund;
3080
+ exports.curveAaveClaimRewards = curveAaveClaimRewards;
3081
+ exports.curveAaveClaimRewardsAndReinvest = curveAaveClaimRewardsAndReinvest;
3082
+ exports.curveAaveClaimRewardsAndSwap = curveAaveClaimRewardsAndSwap;
3083
+ exports.curveAaveLend = curveAaveLend;
3084
+ exports.curveAaveLendAndStake = curveAaveLendAndStake;
3085
+ exports.curveAaveRedeem = curveAaveRedeem;
3086
+ exports.curveAaveStake = curveAaveStake;
3087
+ exports.curveAaveUnstake = curveAaveUnstake;
3088
+ exports.curveAaveUnstakeAndRedeem = curveAaveUnstakeAndRedeem;
3089
+ exports.curveApproveAssets = curveApproveAssets;
3090
+ exports.curveEursClaimRewards = curveEursClaimRewards;
3091
+ exports.curveEursLend = curveEursLend;
3092
+ exports.curveEursLendAndStake = curveEursLendAndStake;
3093
+ exports.curveEursRedeem = curveEursRedeem;
3094
+ exports.curveEursStake = curveEursStake;
3095
+ exports.curveEursUnstake = curveEursUnstake;
3096
+ exports.curveEursUnstakeAndRedeem = curveEursUnstakeAndRedeem;
3097
+ exports.curveSethClaimRewards = curveSethClaimRewards;
3098
+ exports.curveSethClaimRewardsAndReinvest = curveSethClaimRewardsAndReinvest;
3099
+ exports.curveSethClaimRewardsAndSwap = curveSethClaimRewardsAndSwap;
3100
+ exports.curveSethLend = curveSethLend;
3101
+ exports.curveSethLendAndStake = curveSethLendAndStake;
3102
+ exports.curveSethRedeem = curveSethRedeem;
3103
+ exports.curveSethStake = curveSethStake;
3104
+ exports.curveSethUnstake = curveSethUnstake;
3105
+ exports.curveSethUnstakeAndRedeem = curveSethUnstakeAndRedeem;
3106
+ exports.curveStethClaimRewards = curveStethClaimRewards;
3107
+ exports.curveStethClaimRewardsAndReinvest = curveStethClaimRewardsAndReinvest;
3108
+ exports.curveStethClaimRewardsAndSwap = curveStethClaimRewardsAndSwap;
3109
+ exports.curveStethLend = curveStethLend;
3110
+ exports.curveStethLendAndStake = curveStethLendAndStake;
3111
+ exports.curveStethRedeem = curveStethRedeem;
3112
+ exports.curveStethStake = curveStethStake;
3113
+ exports.curveStethUnstake = curveStethUnstake;
3114
+ exports.curveStethUnstakeAndRedeem = curveStethUnstakeAndRedeem;
3115
+ exports.curveTakeOrder = curveTakeOrder;
3116
+ exports.defaultTestDeployment = defaultTestDeployment;
3117
+ exports.deployProtocolFixture = deployProtocolFixture;
3118
+ exports.generateFeeManagerConfigWithMockFees = generateFeeManagerConfigWithMockFees;
3119
+ exports.generatePolicyManagerConfigWithMockPolicies = generatePolicyManagerConfigWithMockPolicies;
3120
+ exports.generateRegisteredMockFees = generateRegisteredMockFees;
3121
+ exports.generateRegisteredMockPolicies = generateRegisteredMockPolicies;
3122
+ exports.getAssetBalances = getAssetBalances;
3123
+ exports.getNamedSigner = getNamedSigner;
3124
+ exports.getUnnamedSigners = getUnnamedSigners;
3125
+ exports.idleApproveAssets = idleApproveAssets;
3126
+ exports.idleClaimRewards = idleClaimRewards;
3127
+ exports.idleClaimRewardsAndReinvest = idleClaimRewardsAndReinvest;
3128
+ exports.idleClaimRewardsAndSwap = idleClaimRewardsAndSwap;
3129
+ exports.idleLend = idleLend;
3130
+ exports.idleRedeem = idleRedeem;
3131
+ exports.kyberTakeOrder = kyberTakeOrder;
3132
+ exports.mockGenericRemoveOnlySelector = mockGenericRemoveOnlySelector;
3133
+ exports.mockGenericSwap = mockGenericSwap;
3134
+ exports.mockGenericSwapASelector = mockGenericSwapASelector;
3135
+ exports.mockGenericSwapArgs = mockGenericSwapArgs;
3136
+ exports.mockGenericSwapBSelector = mockGenericSwapBSelector;
3137
+ exports.mockGenericSwapDirectFromVaultSelector = mockGenericSwapDirectFromVaultSelector;
3138
+ exports.mockGenericSwapViaApprovalSelector = mockGenericSwapViaApprovalSelector;
3139
+ exports.paraSwapV4GenerateDummyPaths = paraSwapV4GenerateDummyPaths;
3140
+ exports.paraSwapV4TakeOrder = paraSwapV4TakeOrder;
3141
+ exports.redeemShares = redeemShares;
3142
+ exports.removeTrackedAssets = removeTrackedAssets;
3143
+ exports.synthetixAssignExchangeDelegate = synthetixAssignExchangeDelegate;
3144
+ exports.synthetixResolveAddress = synthetixResolveAddress;
3145
+ exports.synthetixTakeOrder = synthetixTakeOrder;
3146
+ exports.transactionTimestamp = transactionTimestamp;
3147
+ exports.uniswapV2Lend = uniswapV2Lend;
3148
+ exports.uniswapV2Redeem = uniswapV2Redeem;
3149
+ exports.uniswapV2TakeOrder = uniswapV2TakeOrder;
3150
+ exports.uniswapV3TakeOrder = uniswapV3TakeOrder;
3151
+ exports.unlockAllWhales = unlockAllWhales;
3152
+ exports.unlockWhale = unlockWhale;
3153
+ exports.unlockWhales = unlockWhales;
3154
+ exports.updateChainlinkAggregator = updateChainlinkAggregator;
3155
+ exports.vaultCallCurveMinterMint = vaultCallCurveMinterMint;
3156
+ exports.vaultCallCurveMinterMintMany = vaultCallCurveMinterMintMany;
3157
+ exports.vaultCallCurveMinterToggleApproveMint = vaultCallCurveMinterToggleApproveMint;
3158
+ exports.yearnVaultV2Lend = yearnVaultV2Lend;
3159
+ exports.yearnVaultV2Redeem = yearnVaultV2Redeem;
3160
+ exports.zeroExV2TakeOrder = zeroExV2TakeOrder;