@enzymefinance/testutils 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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 };