@enzymefinance/testutils 4.0.0-next.3 → 4.0.0-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,8 @@
1
1
  import _asyncToGenerator from '@babel/runtime/helpers/esm/asyncToGenerator';
2
2
  import _regeneratorRuntime from '@babel/runtime/regenerator';
3
- import { AaveAdapter, AavePriceFeed, AddressListRegistry, AllowedAdapterIncomingAssetsPolicy, AllowedAdaptersPolicy, AllowedAssetsForRedemptionPolicy, AllowedDepositRecipientsPolicy, AllowedExternalPositionTypesPolicy, AllowedSharesTransferRecipientsPolicy, AssetFinalityResolver, CompoundAdapter, CompoundDebtPositionLib, CompoundDebtPositionParser, CompoundPriceFeed, ComptrollerLib, CumulativeSlippageTolerancePolicy, CurveExchangeAdapter, CurveLiquidityAaveAdapter, CurveLiquidityEursAdapter, CurveLiquiditySethAdapter, CurveLiquidityStethAdapter, CurvePriceFeed, DepositWrapper, Dispatcher, EntranceRateBurnFee, EntranceRateDirectFee, ExitRateBurnFee, ExitRateDirectFee, ExternalPositionFactory, ExternalPositionManager, FeeManager, FundDeployer, FundValueCalculator, FundValueCalculatorRouter, FundValueCalculatorUsdWrapper, GasRelayPaymasterFactory, GuaranteedRedemptionPolicy, IdleAdapter, IdlePriceFeed, IntegrationManager, LidoStethPriceFeed, ManagementFee, MinAssetBalancesPostRedemptionPolicy, MinMaxInvestmentPolicy, OnlyRemoveDustExternalPositionPolicy, OnlyUntrackDustOrPricelessAssetsPolicy, ParaSwapV4Adapter, ParaSwapV5Adapter, PerformanceFee, PolicyManager, PoolTogetherV4Adapter, PoolTogetherV4PriceFeed, ProtocolFeeReserveLib, ProtocolFeeTracker, RevertingPriceFeed, StakehoundEthPriceFeed, SynthetixAdapter, SynthetixPriceFeed, UniswapV2ExchangeAdapter, UniswapV2LiquidityAdapter, UniswapV2PoolPriceFeed, UniswapV3Adapter, UnpermissionedActionsWrapper, ValueInterpreter, VaultLib, YearnVaultV2Adapter, YearnVaultV2PriceFeed, ZeroExV2Adapter, IntegrationManagerActionId, addTrackedAssetsToVaultArgs, removeTrackedAssetsFromVaultArgs, StandardToken, callOnExternalPositionArgs, ExternalPositionManagerActionId, IExternalPositionProxy, encodeArgs, externalPositionReactivateArgs, externalPositionRemoveArgs, compoundExternalPositionActionArgs, CompoundDebtPositionActionId, ExternalPositionType, uniswapV3LiquidityPositionInitArgs, uniswapV3LiquidityPositionAddLiquidityArgs, UniswapV3LiquidityPositionActionId, uniswapV3LiquidityPositionCollectArgs, UniswapV3LiquidityPositionLib, uniswapV3LiquidityPositionMintArgs, uniswapV3LiquidityPositionPurgeArgs, uniswapV3LiquidityPositionRemoveLiquidityArgs, feeManagerConfigArgs, FeeSettlementType, FeeHook, IFee, aaveLendArgs, callOnIntegrationArgs, lendSelector, aaveRedeemArgs, redeemSelector, compoundArgs, curveTakeOrderArgs, takeOrderSelector, claimRewardsSelector, curveAaveLendArgs, curveAaveLendAndStakeArgs, lendAndStakeSelector, curveAaveRedeemArgs, curveAaveStakeArgs, stakeSelector, curveAaveUnstakeAndRedeemArgs, unstakeAndRedeemSelector, curveAaveUnstakeArgs, unstakeSelector, curveEursLendArgs, curveEursLendAndStakeArgs, curveEursRedeemArgs, curveEursStakeArgs, curveEursUnstakeAndRedeemArgs, curveEursUnstakeArgs, curveSethLendArgs, curveSethLendAndStakeArgs, curveSethRedeemArgs, curveSethStakeArgs, curveSethUnstakeAndRedeemArgs, curveSethUnstakeArgs, curveStethLendArgs, curveStethLendAndStakeArgs, curveStethRedeemArgs, curveStethStakeArgs, curveStethUnstakeAndRedeemArgs, curveStethUnstakeArgs, idleClaimRewardsArgs, idleLendArgs, idleRedeemArgs, sighash, paraSwapV4TakeOrderArgs, paraSwapV5TakeOrderArgs, poolTogetherV4LendArgs, poolTogetherV4RedeemArgs, poolTogetherV4ClaimRewardsArgs, synthetixAssignExchangeDelegateSelector, synthetixTakeOrderArgs, uniswapV2LendArgs, uniswapV2RedeemArgs, uniswapV2TakeOrderArgs, uniswapV3TakeOrderArgs, yearnVaultV2LendArgs, yearnVaultV2RedeemArgs, zeroExV2TakeOrderArgs, policyManagerConfigArgs, PolicyHook, IPolicy, encodeFunctionData, ComptrollerProxy, VaultProxy, GasRelayPaymasterLib, curveMinterMintSelector, curveMinterMintManySelector, curveMinterToggleApproveMintSelector, IGsnRelayHub, createSignedRelayRequest, isTypedDataSigner } from '@enzymefinance/protocol';
3
+ import { AaveAdapter, AavePriceFeed, AddressListRegistry, AllowedAdapterIncomingAssetsPolicy, AllowedAdaptersPolicy, AllowedAssetsForRedemptionPolicy, AllowedDepositRecipientsPolicy, AllowedExternalPositionTypesPolicy, AllowedSharesTransferRecipientsPolicy, AssetFinalityResolver, CompoundAdapter, CompoundDebtPositionLib, CompoundDebtPositionParser, CompoundPriceFeed, ComptrollerLib, CumulativeSlippageTolerancePolicy, CurveExchangeAdapter, CurveLiquidityAaveAdapter, CurveLiquidityEursAdapter, CurveLiquiditySethAdapter, CurveLiquidityStethAdapter, CurvePriceFeed, DepositWrapper, Dispatcher, EntranceRateBurnFee, EntranceRateDirectFee, ExitRateBurnFee, ExitRateDirectFee, ExternalPositionFactory, ExternalPositionManager, FeeManager, FundDeployer, FundValueCalculator, FundValueCalculatorRouter, FundValueCalculatorUsdWrapper, GasRelayPaymasterFactory, GuaranteedRedemptionPolicy, IdleAdapter, IdlePriceFeed, IntegrationManager, LidoStethPriceFeed, ManagementFee, MinAssetBalancesPostRedemptionPolicy, MinMaxInvestmentPolicy, OnlyRemoveDustExternalPositionPolicy, OnlyUntrackDustOrPricelessAssetsPolicy, ParaSwapV4Adapter, ParaSwapV5Adapter, PerformanceFee, PolicyManager, PoolTogetherV4Adapter, PoolTogetherV4PriceFeed, ProtocolFeeReserveLib, ProtocolFeeTracker, RevertingPriceFeed, StakehoundEthPriceFeed, SynthetixAdapter, SynthetixPriceFeed, UniswapV2ExchangeAdapter, UniswapV2LiquidityAdapter, UniswapV2PoolPriceFeed, UniswapV3Adapter, UnpermissionedActionsWrapper, ValueInterpreter, VaultLib, YearnVaultV2Adapter, YearnVaultV2PriceFeed, ZeroExV2Adapter, IntegrationManagerActionId, addTrackedAssetsToVaultArgs, removeTrackedAssetsFromVaultArgs, StandardToken, callOnExternalPositionArgs, ExternalPositionManagerActionId, IExternalPositionProxy, encodeArgs, externalPositionReactivateArgs, externalPositionRemoveArgs, compoundExternalPositionActionArgs, CompoundDebtPositionActionId, ExternalPositionType, MockGenericExternalPositionParser, MockGenericExternalPositionLib, mockGenericExternalPositionActionArgs, MockGenericExternalPositionActionId, uniswapV3LiquidityPositionInitArgs, uniswapV3LiquidityPositionAddLiquidityArgs, UniswapV3LiquidityPositionActionId, uniswapV3LiquidityPositionCollectArgs, UniswapV3LiquidityPositionLib, uniswapV3LiquidityPositionMintArgs, uniswapV3LiquidityPositionPurgeArgs, uniswapV3LiquidityPositionRemoveLiquidityArgs, feeManagerConfigArgs, FeeSettlementType, FeeHook, IFee, aaveLendArgs, callOnIntegrationArgs, lendSelector, aaveRedeemArgs, redeemSelector, compoundArgs, curveTakeOrderArgs, takeOrderSelector, claimRewardsSelector, curveAaveLendArgs, curveAaveLendAndStakeArgs, lendAndStakeSelector, curveAaveRedeemArgs, curveAaveStakeArgs, stakeSelector, curveAaveUnstakeAndRedeemArgs, unstakeAndRedeemSelector, curveAaveUnstakeArgs, unstakeSelector, curveEursLendArgs, curveEursLendAndStakeArgs, curveEursRedeemArgs, curveEursStakeArgs, curveEursUnstakeAndRedeemArgs, curveEursUnstakeArgs, curveSethLendArgs, curveSethLendAndStakeArgs, curveSethRedeemArgs, curveSethStakeArgs, curveSethUnstakeAndRedeemArgs, curveSethUnstakeArgs, curveStethLendArgs, curveStethLendAndStakeArgs, curveStethRedeemArgs, curveStethStakeArgs, curveStethUnstakeAndRedeemArgs, curveStethUnstakeArgs, idleClaimRewardsArgs, idleLendArgs, idleRedeemArgs, sighash, paraSwapV4TakeOrderArgs, paraSwapV5TakeOrderArgs, poolTogetherV4LendArgs, poolTogetherV4RedeemArgs, poolTogetherV4ClaimRewardsArgs, synthetixAssignExchangeDelegateSelector, synthetixRedeemArgs, synthetixTakeOrderArgs, uniswapV2LendArgs, uniswapV2RedeemArgs, uniswapV2TakeOrderArgs, uniswapV3TakeOrderArgs, yearnVaultV2LendArgs, yearnVaultV2RedeemArgs, zeroExV2TakeOrderArgs, policyManagerConfigArgs, PolicyHook, IPolicy, encodeFunctionData, ComptrollerProxy, VaultProxy, GasRelayPaymasterLib, addressListRegistryCreateListSelector, curveMinterMintSelector, curveMinterMintManySelector, curveMinterToggleApproveMintSelector, IGsnRelayHub, createSignedRelayRequest, isTypedDataSigner } from '@enzymefinance/protocol';
4
4
  import { utils, constants, BigNumber } from 'ethers';
5
5
  import { extractEvent, contract, resolveAddress, randomAddress } from '@enzymefinance/ethers';
6
- import { ExternalPositionManagerActionId as ExternalPositionManagerActionId$1, encodeArgs as encodeArgs$1, MockGenericExternalPositionParser, MockGenericExternalPositionLib, VaultLib as VaultLib$1, mockGenericExternalPositionActionArgs, MockGenericExternalPositionActionId } from '@enzymefinance/protocol/src';
7
6
  import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';
8
7
  import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';
9
8
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
@@ -191,30 +190,6 @@ function _deployProtocolFixture() {
191
190
  return _deployProtocolFixture.apply(this, arguments);
192
191
  }
193
192
 
194
- // TODO: Remove this.
195
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
196
- function defaultTestDeployment(_x2) {
197
- return _defaultTestDeployment.apply(this, arguments);
198
- }
199
-
200
- function _defaultTestDeployment() {
201
- _defaultTestDeployment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_) {
202
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
203
- while (1) {
204
- switch (_context4.prev = _context4.next) {
205
- case 0:
206
- throw new Error('Removed');
207
-
208
- case 1:
209
- case "end":
210
- return _context4.stop();
211
- }
212
- }
213
- }, _callee4);
214
- }));
215
- return _defaultTestDeployment.apply(this, arguments);
216
- }
217
-
218
193
  function addTrackedAssetsToVault(_ref) {
219
194
  var signer = _ref.signer,
220
195
  comptrollerProxy = _ref.comptrollerProxy,
@@ -916,7 +891,7 @@ function _createMockExternalPosition() {
916
891
  switch (_context.prev = _context.next) {
917
892
  case 0:
918
893
  comptrollerProxy = _ref.comptrollerProxy, externalPositionManager = _ref.externalPositionManager, externalPositionFactory = _ref.externalPositionFactory, defaultActionAssetsToTransfer = _ref.defaultActionAssetsToTransfer, defaultActionAmountsToTransfer = _ref.defaultActionAmountsToTransfer, defaultActionAssetsToReceive = _ref.defaultActionAssetsToReceive, fundOwner = _ref.fundOwner, deployer = _ref.deployer;
919
- _context.t0 = VaultLib$1;
894
+ _context.t0 = VaultLib;
920
895
  _context.next = 4;
921
896
  return comptrollerProxy.getVaultProxy();
922
897
 
@@ -949,7 +924,7 @@ function _createMockExternalPosition() {
949
924
 
950
925
  case 21:
951
926
  _context.next = 23;
952
- return comptrollerProxy.connect(fundOwner).callOnExtension(externalPositionManager, ExternalPositionManagerActionId$1.CreateExternalPosition, encodeArgs$1(['uint256', 'bytes'], [typeId, '0x']));
927
+ return comptrollerProxy.connect(fundOwner).callOnExtension(externalPositionManager, ExternalPositionManagerActionId.CreateExternalPosition, encodeArgs(['uint256', 'bytes'], [typeId, '0x']));
953
928
 
954
929
  case 23:
955
930
  receipt = _context.sent;
@@ -1372,6 +1347,20 @@ function _uniswapV3LiquidityPositionRemoveLiquidity() {
1372
1347
  return _uniswapV3LiquidityPositionRemoveLiquidity.apply(this, arguments);
1373
1348
  }
1374
1349
 
1350
+ function uniswapV3OrderTokenPair(_ref7) {
1351
+ var tokenA = _ref7.tokenA,
1352
+ tokenB = _ref7.tokenB;
1353
+ var tokenAAddress = resolveAddress(tokenA);
1354
+ var tokenBAddress = resolveAddress(tokenB);
1355
+ return tokenAAddress < tokenBAddress ? {
1356
+ token0: tokenAAddress,
1357
+ token1: tokenBAddress
1358
+ } : {
1359
+ token0: tokenBAddress,
1360
+ token1: tokenAAddress
1361
+ };
1362
+ }
1363
+
1375
1364
  function generateFeeManagerConfigWithMockFees(_x) {
1376
1365
  return _generateFeeManagerConfigWithMockFees.apply(this, arguments);
1377
1366
  }
@@ -2618,26 +2607,58 @@ function _synthetixResolveAddress() {
2618
2607
  return _synthetixResolveAddress.apply(this, arguments);
2619
2608
  }
2620
2609
 
2621
- function synthetixTakeOrder(_x3) {
2610
+ function synthetixRedeem(_x3) {
2611
+ return _synthetixRedeem.apply(this, arguments);
2612
+ }
2613
+
2614
+ function _synthetixRedeem() {
2615
+ _synthetixRedeem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(_ref3) {
2616
+ var comptrollerProxy, integrationManager, signer, synthetixAdapter, synths, redeemArgs, callArgs;
2617
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
2618
+ while (1) {
2619
+ switch (_context3.prev = _context3.next) {
2620
+ case 0:
2621
+ comptrollerProxy = _ref3.comptrollerProxy, integrationManager = _ref3.integrationManager, signer = _ref3.signer, synthetixAdapter = _ref3.synthetixAdapter, synths = _ref3.synths;
2622
+ redeemArgs = synthetixRedeemArgs({
2623
+ synths: synths
2624
+ });
2625
+ callArgs = callOnIntegrationArgs({
2626
+ adapter: synthetixAdapter,
2627
+ encodedCallArgs: redeemArgs,
2628
+ selector: redeemSelector
2629
+ });
2630
+ return _context3.abrupt("return", comptrollerProxy.connect(signer).callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs));
2631
+
2632
+ case 4:
2633
+ case "end":
2634
+ return _context3.stop();
2635
+ }
2636
+ }
2637
+ }, _callee3);
2638
+ }));
2639
+ return _synthetixRedeem.apply(this, arguments);
2640
+ }
2641
+
2642
+ function synthetixTakeOrder(_x4) {
2622
2643
  return _synthetixTakeOrder.apply(this, arguments);
2623
2644
  }
2624
2645
 
2625
2646
  function _synthetixTakeOrder() {
2626
- _synthetixTakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(_ref3) {
2627
- var comptrollerProxy, vaultProxy, integrationManager, fundOwner, synthetixAdapter, outgoingAsset, _ref3$outgoingAssetAm, outgoingAssetAmount, incomingAsset, _ref3$minIncomingAsse, minIncomingAssetAmount, _ref3$seedFund, seedFund, takeOrderArgs, callArgs;
2647
+ _synthetixTakeOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref4) {
2648
+ var comptrollerProxy, vaultProxy, integrationManager, fundOwner, synthetixAdapter, outgoingAsset, _ref4$outgoingAssetAm, outgoingAssetAmount, incomingAsset, _ref4$minIncomingAsse, minIncomingAssetAmount, _ref4$seedFund, seedFund, takeOrderArgs, callArgs;
2628
2649
 
2629
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
2650
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
2630
2651
  while (1) {
2631
- switch (_context3.prev = _context3.next) {
2652
+ switch (_context4.prev = _context4.next) {
2632
2653
  case 0:
2633
- 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;
2654
+ comptrollerProxy = _ref4.comptrollerProxy, vaultProxy = _ref4.vaultProxy, integrationManager = _ref4.integrationManager, fundOwner = _ref4.fundOwner, synthetixAdapter = _ref4.synthetixAdapter, outgoingAsset = _ref4.outgoingAsset, _ref4$outgoingAssetAm = _ref4.outgoingAssetAmount, outgoingAssetAmount = _ref4$outgoingAssetAm === void 0 ? utils.parseEther('1') : _ref4$outgoingAssetAm, incomingAsset = _ref4.incomingAsset, _ref4$minIncomingAsse = _ref4.minIncomingAssetAmount, minIncomingAssetAmount = _ref4$minIncomingAsse === void 0 ? utils.parseEther('1') : _ref4$minIncomingAsse, _ref4$seedFund = _ref4.seedFund, seedFund = _ref4$seedFund === void 0 ? false : _ref4$seedFund;
2634
2655
 
2635
2656
  if (!seedFund) {
2636
- _context3.next = 4;
2657
+ _context4.next = 4;
2637
2658
  break;
2638
2659
  }
2639
2660
 
2640
- _context3.next = 4;
2661
+ _context4.next = 4;
2641
2662
  return outgoingAsset.transfer(vaultProxy, outgoingAssetAmount);
2642
2663
 
2643
2664
  case 4:
@@ -2647,7 +2668,7 @@ function _synthetixTakeOrder() {
2647
2668
  outgoingAsset: outgoingAsset,
2648
2669
  outgoingAssetAmount: outgoingAssetAmount
2649
2670
  });
2650
- _context3.next = 7;
2671
+ _context4.next = 7;
2651
2672
  return callOnIntegrationArgs({
2652
2673
  adapter: synthetixAdapter,
2653
2674
  encodedCallArgs: takeOrderArgs,
@@ -2655,15 +2676,15 @@ function _synthetixTakeOrder() {
2655
2676
  });
2656
2677
 
2657
2678
  case 7:
2658
- callArgs = _context3.sent;
2659
- return _context3.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs));
2679
+ callArgs = _context4.sent;
2680
+ return _context4.abrupt("return", comptrollerProxy.connect(fundOwner).callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs));
2660
2681
 
2661
2682
  case 9:
2662
2683
  case "end":
2663
- return _context3.stop();
2684
+ return _context4.stop();
2664
2685
  }
2665
2686
  }
2666
- }, _callee3);
2687
+ }, _callee4);
2667
2688
  }));
2668
2689
  return _synthetixTakeOrder.apply(this, arguments);
2669
2690
  }
@@ -3317,15 +3338,15 @@ function createNewFund(_x3) {
3317
3338
 
3318
3339
  function _createNewFund() {
3319
3340
  _createNewFund = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(_ref3) {
3320
- 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;
3341
+ var signer, fundDeployer, denominationAsset, _ref3$sharesActionTim, sharesActionTimelock, _ref3$fundOwner, fundOwner, _ref3$fundName, fundName, _ref3$fundSymbol, fundSymbol, _ref3$feeManagerConfi, feeManagerConfig, _ref3$policyManagerCo, policyManagerConfig, investment, receipt, comptrollerDeployedArgs, comptrollerProxy, newFundDeployedArgs, vaultProxy;
3321
3342
 
3322
3343
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
3323
3344
  while (1) {
3324
3345
  switch (_context3.prev = _context3.next) {
3325
3346
  case 0:
3326
- 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;
3347
+ 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$fundSymbol = _ref3.fundSymbol, fundSymbol = _ref3$fundSymbol === void 0 ? '' : _ref3$fundSymbol, _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;
3327
3348
  _context3.next = 3;
3328
- return fundDeployer.connect(signer).createNewFund(fundOwner, fundName, denominationAsset, sharesActionTimelock, feeManagerConfig, policyManagerConfig);
3349
+ return fundDeployer.connect(signer).createNewFund(fundOwner, fundName, fundSymbol, denominationAsset, sharesActionTimelock, feeManagerConfig, policyManagerConfig);
3329
3350
 
3330
3351
  case 3:
3331
3352
  receipt = _context3.sent;
@@ -3479,16 +3500,49 @@ function _setupGasRelayerPaymaster() {
3479
3500
  return _setupGasRelayerPaymaster.apply(this, arguments);
3480
3501
  }
3481
3502
 
3482
- function vaultCallCurveMinterMint(_ref) {
3483
- var comptrollerProxy = _ref.comptrollerProxy,
3484
- minter = _ref.minter,
3485
- gauge = _ref.gauge;
3486
- return comptrollerProxy.vaultCallOnContract(minter, curveMinterMintSelector, encodeArgs(['address'], [gauge]));
3503
+ function vaultCallCreateNewList(_x) {
3504
+ return _vaultCallCreateNewList.apply(this, arguments);
3487
3505
  }
3488
- function vaultCallCurveMinterMintMany(_ref2) {
3506
+
3507
+ function _vaultCallCreateNewList() {
3508
+ _vaultCallCreateNewList = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
3509
+ var addressListRegistry, comptrollerProxy, items, owner, signer, updateType, listCount;
3510
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
3511
+ while (1) {
3512
+ switch (_context.prev = _context.next) {
3513
+ case 0:
3514
+ addressListRegistry = _ref.addressListRegistry, comptrollerProxy = _ref.comptrollerProxy, items = _ref.items, owner = _ref.owner, signer = _ref.signer, updateType = _ref.updateType;
3515
+ _context.next = 3;
3516
+ return comptrollerProxy.connect(signer).vaultCallOnContract(addressListRegistry.address, addressListRegistryCreateListSelector, encodeArgs(['address', 'uint8', 'address[]'], [owner, updateType, items]));
3517
+
3518
+ case 3:
3519
+ _context.next = 5;
3520
+ return addressListRegistry.getListCount();
3521
+
3522
+ case 5:
3523
+ listCount = _context.sent;
3524
+ return _context.abrupt("return", listCount.sub(1));
3525
+
3526
+ case 7:
3527
+ case "end":
3528
+ return _context.stop();
3529
+ }
3530
+ }
3531
+ }, _callee);
3532
+ }));
3533
+ return _vaultCallCreateNewList.apply(this, arguments);
3534
+ }
3535
+
3536
+ function vaultCallCurveMinterMint(_ref2) {
3489
3537
  var comptrollerProxy = _ref2.comptrollerProxy,
3490
3538
  minter = _ref2.minter,
3491
- gauges = _ref2.gauges;
3539
+ gauge = _ref2.gauge;
3540
+ return comptrollerProxy.vaultCallOnContract(minter, curveMinterMintSelector, encodeArgs(['address'], [gauge]));
3541
+ }
3542
+ function vaultCallCurveMinterMintMany(_ref3) {
3543
+ var comptrollerProxy = _ref3.comptrollerProxy,
3544
+ minter = _ref3.minter,
3545
+ gauges = _ref3.gauges;
3492
3546
  var gaugesFormatted = new Array(8).fill(constants.AddressZero);
3493
3547
 
3494
3548
  for (var i in gauges) {
@@ -3497,16 +3551,16 @@ function vaultCallCurveMinterMintMany(_ref2) {
3497
3551
 
3498
3552
  return comptrollerProxy.vaultCallOnContract(minter, curveMinterMintManySelector, encodeArgs(['address[8]'], [gaugesFormatted]));
3499
3553
  }
3500
- function vaultCallCurveMinterToggleApproveMint(_ref3) {
3501
- var comptrollerProxy = _ref3.comptrollerProxy,
3502
- minter = _ref3.minter,
3503
- account = _ref3.account;
3554
+ function vaultCallCurveMinterToggleApproveMint(_ref4) {
3555
+ var comptrollerProxy = _ref4.comptrollerProxy,
3556
+ minter = _ref4.minter,
3557
+ account = _ref4.account;
3504
3558
  return comptrollerProxy.vaultCallOnContract(minter, curveMinterToggleApproveMintSelector, encodeArgs(['address'], [account]));
3505
3559
  }
3506
- function vaultCallStartAssetBypassTimelock(_ref4) {
3507
- var comptrollerProxy = _ref4.comptrollerProxy,
3508
- contract = _ref4.contract,
3509
- asset = _ref4.asset;
3560
+ function vaultCallStartAssetBypassTimelock(_ref5) {
3561
+ var comptrollerProxy = _ref5.comptrollerProxy,
3562
+ contract = _ref5.contract,
3563
+ asset = _ref5.asset;
3510
3564
  return comptrollerProxy.vaultCallOnContract(contract, sighash(utils.FunctionFragment.fromString('startAssetBypassTimelock(address)')), encodeArgs(['address'], [asset]));
3511
3565
  }
3512
3566
 
@@ -3614,7 +3668,9 @@ var whales = {
3614
3668
  ptUsdc: '0xd18236cd213f39d078177b6f6908f0e44e88e4aa',
3615
3669
  // synths
3616
3670
  seth: '0xc34a7c65aa08cb36744bda8eeec7b8e9891e147c',
3617
- seur: '0xe896e539e557bc751860a7763c8dd589af1698ce',
3671
+ seur: '0xc3f2f91723b16b95bef0619b2504c049075d5b0b',
3672
+ sxag: '0x40d68c490bf7262ec40048099aec23535f734be2',
3673
+ sxau: '0x92eb453b7b5b8d41edb44e2c8b8b53eb70a482c7',
3618
3674
  // misc
3619
3675
  lidoSteth: '0x31f644e2dd5d74f5c8d6d9de89dd517474d51800',
3620
3676
  ldo: '0x3dba737ccc50a32a1764b493285dd51c8af6c278',
@@ -3852,4 +3908,4 @@ function assertPaymasterDidRejectForReason(receipt, reason) {
3852
3908
  expect(utils.toUtf8String('0x' + params.reason.substr(138))).toMatch(reason);
3853
3909
  }
3854
3910
 
3855
- export { CurveLiquidityGaugeV2, CurveMinter, CurveSwaps, ICompoundComptroller, IUniswapV3NonFungibleTokenManager, UniswapV2Factory, UniswapV3FeeAmount, aaveLend, aaveRedeem, addNewAssetsToFund, addTrackedAssetsToVault, assertDidRelay, assertDidRelaySuccessfully, assertDidRelayWithCharge, assertDidRelayWithError, assertEvent, assertNoEvent, assertPaymasterDidReject, assertPaymasterDidRejectForReason, buyShares, buySharesFunction, calcMlnValueAndBurnAmountForSharesBuyback, callOnExtension, callOnExternalPosition, compoundDebtPositionAddCollateral, compoundDebtPositionBorrow, compoundDebtPositionClaimComp, compoundDebtPositionRemoveCollateral, compoundDebtPositionRepayBorrow, compoundLend, compoundRedeem, createCompoundDebtPosition, createComptrollerProxy, createExternalPosition, createFundDeployer, createMigrationRequest, createMockExternalPosition, createNewFund, createReconfigurationRequest, createUniswapV3LiquidityPosition, createVaultProxy, curveAaveClaimRewards, curveAaveLend, curveAaveLendAndStake, curveAaveRedeem, curveAaveStake, curveAaveUnstake, curveAaveUnstakeAndRedeem, curveEursClaimRewards, curveEursLend, curveEursLendAndStake, curveEursRedeem, curveEursStake, curveEursUnstake, curveEursUnstakeAndRedeem, curveSethClaimRewards, curveSethLend, curveSethLendAndStake, curveSethRedeem, curveSethStake, curveSethUnstake, curveSethUnstakeAndRedeem, curveStethClaimRewards, curveStethLend, curveStethLendAndStake, curveStethRedeem, curveStethStake, curveStethUnstake, curveStethUnstakeAndRedeem, curveTakeOrder, defaultTestDeployment, deployProtocolFixture, generateFeeManagerConfigWithMockFees, generateMockFees, generateMockPolicies, generatePolicyManagerConfigWithMockPolicies, getAssetBalances, getAssetUnit, getNamedSigner, getUnnamedSigners, idleClaimRewards, idleLend, idleRedeem, mockExternalPositionAddDebtAssets, mockExternalPositionAddManagedAssets, mockExternalPositionRemoveDebtAssets, mockExternalPositionRemoveManagedAssets, mockGenericRemoveOnlySelector, mockGenericSwap, mockGenericSwapASelector, mockGenericSwapArgs, mockGenericSwapBSelector, mockGenericSwapDirectFromVaultSelector, mockGenericSwapViaApprovalSelector, paraSwapV4GenerateDummyPaths, paraSwapV4TakeOrder, paraSwapV5GenerateDummyPaths, paraSwapV5TakeOrder, poolTogetherV4ClaimRewards, poolTogetherV4Lend, poolTogetherV4Redeem, reactivateExternalPosition, redeemSharesForSpecificAssets, redeemSharesInKind, relayTransaction, removeExternalPosition, removeTrackedAssetsFromVault, setupGasRelayerPaymaster, synthetixAssignExchangeDelegate, synthetixResolveAddress, synthetixTakeOrder, transactionTimestamp, uniswapV2Lend, uniswapV2Redeem, uniswapV2TakeOrder, uniswapV3LiquidityPositionAddLiquidity, uniswapV3LiquidityPositionCollect, uniswapV3LiquidityPositionGetMaxTick, uniswapV3LiquidityPositionGetMinTick, uniswapV3LiquidityPositionMint, uniswapV3LiquidityPositionPurge, uniswapV3LiquidityPositionRemoveLiquidity, uniswapV3TakeOrder, unlockAllWhales, unlockWhale, unlockWhales, updateChainlinkAggregator, vaultCallCurveMinterMint, vaultCallCurveMinterMintMany, vaultCallCurveMinterToggleApproveMint, vaultCallStartAssetBypassTimelock, yearnVaultV2Lend, yearnVaultV2Redeem, zeroExV2TakeOrder };
3911
+ export { CurveLiquidityGaugeV2, CurveMinter, CurveSwaps, ICompoundComptroller, IUniswapV3NonFungibleTokenManager, UniswapV2Factory, UniswapV3FeeAmount, aaveLend, aaveRedeem, addNewAssetsToFund, addTrackedAssetsToVault, assertDidRelay, assertDidRelaySuccessfully, assertDidRelayWithCharge, assertDidRelayWithError, assertEvent, assertNoEvent, assertPaymasterDidReject, assertPaymasterDidRejectForReason, buyShares, buySharesFunction, calcMlnValueAndBurnAmountForSharesBuyback, callOnExtension, callOnExternalPosition, compoundDebtPositionAddCollateral, compoundDebtPositionBorrow, compoundDebtPositionClaimComp, compoundDebtPositionRemoveCollateral, compoundDebtPositionRepayBorrow, compoundLend, compoundRedeem, createCompoundDebtPosition, createComptrollerProxy, createExternalPosition, createFundDeployer, createMigrationRequest, createMockExternalPosition, createNewFund, createReconfigurationRequest, createUniswapV3LiquidityPosition, createVaultProxy, curveAaveClaimRewards, curveAaveLend, curveAaveLendAndStake, curveAaveRedeem, curveAaveStake, curveAaveUnstake, curveAaveUnstakeAndRedeem, curveEursClaimRewards, curveEursLend, curveEursLendAndStake, curveEursRedeem, curveEursStake, curveEursUnstake, curveEursUnstakeAndRedeem, curveSethClaimRewards, curveSethLend, curveSethLendAndStake, curveSethRedeem, curveSethStake, curveSethUnstake, curveSethUnstakeAndRedeem, curveStethClaimRewards, curveStethLend, curveStethLendAndStake, curveStethRedeem, curveStethStake, curveStethUnstake, curveStethUnstakeAndRedeem, curveTakeOrder, deployProtocolFixture, generateFeeManagerConfigWithMockFees, generateMockFees, generateMockPolicies, generatePolicyManagerConfigWithMockPolicies, getAssetBalances, getAssetUnit, getNamedSigner, getUnnamedSigners, idleClaimRewards, idleLend, idleRedeem, mockExternalPositionAddDebtAssets, mockExternalPositionAddManagedAssets, mockExternalPositionRemoveDebtAssets, mockExternalPositionRemoveManagedAssets, mockGenericRemoveOnlySelector, mockGenericSwap, mockGenericSwapASelector, mockGenericSwapArgs, mockGenericSwapBSelector, mockGenericSwapDirectFromVaultSelector, mockGenericSwapViaApprovalSelector, paraSwapV4GenerateDummyPaths, paraSwapV4TakeOrder, paraSwapV5GenerateDummyPaths, paraSwapV5TakeOrder, poolTogetherV4ClaimRewards, poolTogetherV4Lend, poolTogetherV4Redeem, reactivateExternalPosition, redeemSharesForSpecificAssets, redeemSharesInKind, relayTransaction, removeExternalPosition, removeTrackedAssetsFromVault, setupGasRelayerPaymaster, synthetixAssignExchangeDelegate, synthetixRedeem, synthetixResolveAddress, synthetixTakeOrder, transactionTimestamp, uniswapV2Lend, uniswapV2Redeem, uniswapV2TakeOrder, uniswapV3LiquidityPositionAddLiquidity, uniswapV3LiquidityPositionCollect, uniswapV3LiquidityPositionGetMaxTick, uniswapV3LiquidityPositionGetMinTick, uniswapV3LiquidityPositionMint, uniswapV3LiquidityPositionPurge, uniswapV3LiquidityPositionRemoveLiquidity, uniswapV3OrderTokenPair, uniswapV3TakeOrder, unlockAllWhales, unlockWhale, unlockWhales, updateChainlinkAggregator, vaultCallCreateNewList, vaultCallCurveMinterMint, vaultCallCurveMinterMintMany, vaultCallCurveMinterToggleApproveMint, vaultCallStartAssetBypassTimelock, yearnVaultV2Lend, yearnVaultV2Redeem, zeroExV2TakeOrder };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enzymefinance/testutils",
3
- "version": "4.0.0-next.3",
3
+ "version": "4.0.0-next.5",
4
4
  "main": "dist/enzymefinance-testutils.cjs.js",
5
5
  "module": "dist/enzymefinance-testutils.esm.js",
6
6
  "browser": {
@@ -11,7 +11,7 @@
11
11
  "@babel/runtime": "^7.15.4",
12
12
  "@enzymefinance/ethers": "^1.0.10",
13
13
  "@enzymefinance/hardhat": "^1.0.11",
14
- "@enzymefinance/protocol": "^4.0.0-next.3",
14
+ "@enzymefinance/protocol": "^4.0.0-next.5",
15
15
  "ethers": "^5.5.1"
16
16
  }
17
17
  }
package/src/deployment.ts CHANGED
@@ -1,5 +1,3 @@
1
- import type { Contract } from '@enzymefinance/ethers';
2
- import type { SignerWithAddress } from '@enzymefinance/hardhat';
3
1
  import {
4
2
  AaveAdapter,
5
3
  AavePriceFeed,
@@ -71,8 +69,6 @@ import {
71
69
  ZeroExV2Adapter,
72
70
  } from '@enzymefinance/protocol';
73
71
 
74
- import type { DeploymentConfig } from '../../../deploy/utils/config';
75
-
76
72
  export async function getNamedSigner(name: string) {
77
73
  const accounts = await hre.getNamedAccounts();
78
74
  if (!accounts[name]) {
@@ -176,22 +172,101 @@ export async function deployProtocolFixture() {
176
172
  }
177
173
 
178
174
  type Resolve<T extends () => any> = ReturnType<T> extends Promise<infer U> ? U : ReturnType<T>;
179
- type ContractMap = Record<string, Contract>;
180
-
181
- export interface DeploymentFixtureWithoutConfig<T extends ContractMap> {
182
- deployer: SignerWithAddress;
183
- deployment: T;
184
- accounts: SignerWithAddress[];
185
- }
186
-
187
- export interface DeploymentFixtureWithConfig<T extends ContractMap> extends DeploymentFixtureWithoutConfig<T> {
188
- config: DeploymentConfig;
189
- }
190
175
 
191
176
  export type ProtocolDeployment = Resolve<typeof deployProtocolFixture>;
192
177
 
193
- // TODO: Remove this.
194
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
195
- export async function defaultTestDeployment(_: any): Promise<any> {
196
- throw new Error('Removed');
178
+ import type { ChainlinkRateAsset } from '@enzymefinance/protocol';
179
+
180
+ export interface DeploymentConfig {
181
+ feeToken: string;
182
+ weth: string;
183
+ wrappedNativeAsset: string;
184
+ primitives: Record<string, string>;
185
+ gsn: {
186
+ relayHub: string;
187
+ relayWorker: string;
188
+ trustedForwarder: string;
189
+ };
190
+ chainlink: {
191
+ ethusd: string;
192
+ aggregators: Record<string, readonly [string, ChainlinkRateAsset]>;
193
+ };
194
+ synthetix: {
195
+ snx: string;
196
+ susd: string;
197
+ synths: Record<string, string>;
198
+ addressResolver: string;
199
+ delegateApprovals: string;
200
+ originator: string;
201
+ redeemer: string;
202
+ trackingCode: string;
203
+ };
204
+ curve: {
205
+ addressProvider: string;
206
+ minter: string;
207
+ pools: Record<string, { pool: string; lpToken: string; liquidityGaugeToken: string; invariantProxyAsset: string }>;
208
+ };
209
+ aave: {
210
+ lendingPoolAddressProvider: string;
211
+ protocolDataProvider: string;
212
+ atokens: Record<string, [string, string]>;
213
+ };
214
+ compound: {
215
+ ceth: string;
216
+ comptroller: string;
217
+ ctokens: Record<string, string>;
218
+ };
219
+ idle: {
220
+ bestYieldIdleDai: string;
221
+ bestYieldIdleUsdc: string;
222
+ bestYieldIdleUsdt: string;
223
+ bestYieldIdleSusd: string;
224
+ bestYieldIdleTusd: string;
225
+ bestYieldIdleWbtc: string;
226
+ riskAdjustedIdleDai: string;
227
+ riskAdjustedIdleUsdc: string;
228
+ riskAdjustedIdleUsdt: string;
229
+ };
230
+ lido: {
231
+ steth: string;
232
+ };
233
+ paraSwapV4: {
234
+ augustusSwapper: string;
235
+ tokenTransferProxy: string;
236
+ };
237
+ paraSwapV5: {
238
+ augustusSwapper: string;
239
+ tokenTransferProxy: string;
240
+ };
241
+ poolTogetherV4: {
242
+ ptTokens: Record<string, [string, string]>;
243
+ };
244
+ stakehound: {
245
+ steth: string;
246
+ };
247
+ unsupportedAssets: Record<string, string>;
248
+ uniswap: {
249
+ factory: string;
250
+ router: string;
251
+ pools: Record<string, string>;
252
+ };
253
+ uniswapV3: {
254
+ router: string;
255
+ nonFungiblePositionManager: string;
256
+ };
257
+ yearn: {
258
+ vaultV2: {
259
+ registry: string;
260
+ yVaults: Record<string, string>;
261
+ };
262
+ };
263
+ zeroex: {
264
+ exchange: string;
265
+ allowedMakers: string[];
266
+ };
267
+ policies: {
268
+ guaranteedRedemption: {
269
+ redemptionWindowBuffer: number;
270
+ };
271
+ };
197
272
  }
@@ -1,6 +1,6 @@
1
1
  import type { AddressLike } from '@enzymefinance/ethers';
2
2
  import type { SignerWithAddress } from '@enzymefinance/hardhat';
3
- import type { ComptrollerLib, ExternalPositionFactory, ExternalPositionManager } from '@enzymefinance/protocol/src';
3
+ import type { ComptrollerLib, ExternalPositionFactory, ExternalPositionManager } from '@enzymefinance/protocol';
4
4
  import {
5
5
  encodeArgs,
6
6
  ExternalPositionManagerActionId,
@@ -9,7 +9,7 @@ import {
9
9
  MockGenericExternalPositionLib,
10
10
  MockGenericExternalPositionParser,
11
11
  VaultLib,
12
- } from '@enzymefinance/protocol/src';
12
+ } from '@enzymefinance/protocol';
13
13
  import type { BigNumberish } from 'ethers';
14
14
 
15
15
  import { callOnExternalPosition } from './actions';
@@ -1,5 +1,5 @@
1
1
  import type { AddressLike, Call, Contract } from '@enzymefinance/ethers';
2
- import { contract, extractEvent } from '@enzymefinance/ethers';
2
+ import { contract, extractEvent, resolveAddress } from '@enzymefinance/ethers';
3
3
  import type { SignerWithAddress } from '@enzymefinance/hardhat';
4
4
  import type { ComptrollerLib, ExternalPositionManager } from '@enzymefinance/protocol';
5
5
  import {
@@ -279,3 +279,12 @@ export async function uniswapV3LiquidityPositionRemoveLiquidity({
279
279
  .connect(signer)
280
280
  .callOnExtension(externalPositionManager, ExternalPositionManagerActionId.CallOnExternalPosition, callArgs);
281
281
  }
282
+
283
+ export function uniswapV3OrderTokenPair({ tokenA, tokenB }: { tokenA: AddressLike; tokenB: AddressLike }) {
284
+ const tokenAAddress = resolveAddress(tokenA);
285
+ const tokenBAddress = resolveAddress(tokenB);
286
+
287
+ return tokenAAddress < tokenBAddress
288
+ ? { token0: tokenAAddress, token1: tokenBAddress }
289
+ : { token0: tokenBAddress, token1: tokenAAddress };
290
+ }
@@ -1,7 +1,7 @@
1
1
  import type { AddressLike, Contract, Send } from '@enzymefinance/ethers';
2
2
  import { contract, resolveAddress } from '@enzymefinance/ethers';
3
3
  import type { SignerWithAddress } from '@enzymefinance/hardhat';
4
- import type { CompoundAdapter, IntegrationManager, VaultLib } from '@enzymefinance/protocol';
4
+ import type { CompoundAdapter, ComptrollerLib, IntegrationManager, VaultLib } from '@enzymefinance/protocol';
5
5
  import {
6
6
  callOnIntegrationArgs,
7
7
  compoundArgs,
@@ -12,8 +12,6 @@ import {
12
12
  import type { BigNumberish } from 'ethers';
13
13
  import { utils } from 'ethers';
14
14
 
15
- import type { ComptrollerLib } from '../../../../../protocol/src/codegen/ComptrollerLib';
16
-
17
15
  export interface ICompoundComptroller extends Contract<ICompoundComptroller> {
18
16
  claimComp: Send<(_account: AddressLike) => void>;
19
17
  }
@@ -11,7 +11,9 @@ import {
11
11
  callOnIntegrationArgs,
12
12
  encodeArgs,
13
13
  IntegrationManagerActionId,
14
+ redeemSelector,
14
15
  synthetixAssignExchangeDelegateSelector,
16
+ synthetixRedeemArgs,
15
17
  synthetixTakeOrderArgs,
16
18
  takeOrderSelector,
17
19
  } from '@enzymefinance/protocol';
@@ -53,6 +55,34 @@ export async function synthetixResolveAddress({
53
55
  return addressResolver.requireAndGetAddress(utils.formatBytes32String(name), `Missing ${name}`);
54
56
  }
55
57
 
58
+ export async function synthetixRedeem({
59
+ comptrollerProxy,
60
+ integrationManager,
61
+ signer,
62
+ synthetixAdapter,
63
+ synths,
64
+ }: {
65
+ comptrollerProxy: ComptrollerLib;
66
+ integrationManager: IntegrationManager;
67
+ signer: Signer;
68
+ synthetixAdapter: SynthetixAdapter;
69
+ synths: AddressLike[];
70
+ }) {
71
+ const redeemArgs = synthetixRedeemArgs({
72
+ synths,
73
+ });
74
+
75
+ const callArgs = callOnIntegrationArgs({
76
+ adapter: synthetixAdapter,
77
+ encodedCallArgs: redeemArgs,
78
+ selector: redeemSelector,
79
+ });
80
+
81
+ return comptrollerProxy
82
+ .connect(signer)
83
+ .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
84
+ }
85
+
56
86
  export async function synthetixTakeOrder({
57
87
  comptrollerProxy,
58
88
  vaultProxy,
@@ -37,6 +37,7 @@ export interface CreateNewFundParams {
37
37
  sharesActionTimelock?: BigNumberish;
38
38
  fundOwner?: AddressLike;
39
39
  fundName?: string;
40
+ fundSymbol?: string;
40
41
  feeManagerConfig?: BytesLike;
41
42
  policyManagerConfig?: BytesLike;
42
43
  investment?: InitialInvestmentParams;
@@ -116,13 +117,22 @@ export async function createNewFund({
116
117
  sharesActionTimelock = 0,
117
118
  fundOwner = randomAddress(),
118
119
  fundName = 'My Fund',
120
+ fundSymbol = '',
119
121
  feeManagerConfig = '0x',
120
122
  policyManagerConfig = '0x',
121
123
  investment,
122
124
  }: CreateNewFundParams) {
123
125
  const receipt = await fundDeployer
124
126
  .connect(signer)
125
- .createNewFund(fundOwner, fundName, denominationAsset, sharesActionTimelock, feeManagerConfig, policyManagerConfig);
127
+ .createNewFund(
128
+ fundOwner,
129
+ fundName,
130
+ fundSymbol,
131
+ denominationAsset,
132
+ sharesActionTimelock,
133
+ feeManagerConfig,
134
+ policyManagerConfig,
135
+ );
126
136
 
127
137
  const comptrollerDeployedArgs = assertEvent(receipt, 'ComptrollerProxyDeployed', {
128
138
  comptrollerProxy: expect.any(String) as string,
@@ -1,6 +1,8 @@
1
1
  import type { AddressLike } from '@enzymefinance/ethers';
2
- import type { ComptrollerLib } from '@enzymefinance/protocol';
2
+ import type { SignerWithAddress } from '@enzymefinance/hardhat';
3
+ import type { AddressListRegistry, AddressListUpdateType, ComptrollerLib } from '@enzymefinance/protocol';
3
4
  import {
5
+ addressListRegistryCreateListSelector,
4
6
  curveMinterMintManySelector,
5
7
  curveMinterMintSelector,
6
8
  curveMinterToggleApproveMintSelector,
@@ -9,6 +11,34 @@ import {
9
11
  } from '@enzymefinance/protocol';
10
12
  import { constants, utils } from 'ethers';
11
13
 
14
+ export async function vaultCallCreateNewList({
15
+ addressListRegistry,
16
+ comptrollerProxy,
17
+ items,
18
+ owner,
19
+ signer,
20
+ updateType,
21
+ }: {
22
+ addressListRegistry: AddressListRegistry;
23
+ comptrollerProxy: ComptrollerLib;
24
+ items: AddressLike[];
25
+ owner: AddressLike;
26
+ signer: SignerWithAddress;
27
+ updateType: AddressListUpdateType;
28
+ }) {
29
+ await comptrollerProxy
30
+ .connect(signer)
31
+ .vaultCallOnContract(
32
+ addressListRegistry.address,
33
+ addressListRegistryCreateListSelector,
34
+ encodeArgs(['address', 'uint8', 'address[]'], [owner, updateType, items]),
35
+ );
36
+
37
+ const listCount = await addressListRegistry.getListCount();
38
+
39
+ return listCount.sub(1);
40
+ }
41
+
12
42
  export function vaultCallCurveMinterMint({
13
43
  comptrollerProxy,
14
44
  minter,
package/src/whales.ts CHANGED
@@ -35,7 +35,9 @@ const whales = {
35
35
  ptUsdc: '0xd18236cd213f39d078177b6f6908f0e44e88e4aa',
36
36
  // synths
37
37
  seth: '0xc34a7c65aa08cb36744bda8eeec7b8e9891e147c',
38
- seur: '0xe896e539e557bc751860a7763c8dd589af1698ce',
38
+ seur: '0xc3f2f91723b16b95bef0619b2504c049075d5b0b',
39
+ sxag: '0x40d68c490bf7262ec40048099aec23535f734be2',
40
+ sxau: '0x92eb453b7b5b8d41edb44e2c8b8b53eb70a482c7',
39
41
  // misc
40
42
  lidoSteth: '0x31f644e2dd5d74f5c8d6d9de89dd517474d51800',
41
43
  ldo: '0x3dba737ccc50a32a1764b493285dd51c8af6c278',