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