@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.
- package/CHANGELOG.md +8 -0
- package/dist/declarations/src/deployment.d.ts +103 -17
- package/dist/declarations/src/scaffolding/extensions/external-positions/mocks.d.ts +6 -6
- package/dist/declarations/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.d.ts +7 -0
- package/dist/declarations/src/scaffolding/extensions/integrations/compound.d.ts +1 -2
- package/dist/declarations/src/scaffolding/extensions/integrations/synthetix.d.ts +7 -0
- package/dist/declarations/src/scaffolding/setup.d.ts +3 -2
- package/dist/declarations/src/scaffolding/vaultCalls.d.ts +10 -1
- package/dist/declarations/src/whales.d.ts +4 -2
- package/dist/enzymefinance-testutils.browser.cjs.js +128 -70
- package/dist/enzymefinance-testutils.browser.esm.js +117 -61
- package/dist/enzymefinance-testutils.cjs.dev.js +128 -70
- package/dist/enzymefinance-testutils.cjs.prod.js +128 -70
- package/dist/enzymefinance-testutils.esm.js +117 -61
- package/package.json +2 -2
- package/src/deployment.ts +94 -19
- package/src/scaffolding/extensions/external-positions/mocks.ts +2 -2
- package/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.ts +10 -1
- package/src/scaffolding/extensions/integrations/compound.ts +1 -3
- package/src/scaffolding/extensions/integrations/synthetix.ts +30 -0
- package/src/scaffolding/setup.ts +11 -1
- package/src/scaffolding/vaultCalls.ts +31 -1
- package/src/whales.ts +3 -1
@@ -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
|
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
|
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
|
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
|
2627
|
-
var comptrollerProxy, vaultProxy, integrationManager, fundOwner, synthetixAdapter, outgoingAsset,
|
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
|
2650
|
+
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
2630
2651
|
while (1) {
|
2631
|
-
switch (
|
2652
|
+
switch (_context4.prev = _context4.next) {
|
2632
2653
|
case 0:
|
2633
|
-
comptrollerProxy =
|
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
|
-
|
2657
|
+
_context4.next = 4;
|
2637
2658
|
break;
|
2638
2659
|
}
|
2639
2660
|
|
2640
|
-
|
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
|
-
|
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 =
|
2659
|
-
return
|
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
|
2684
|
+
return _context4.stop();
|
2664
2685
|
}
|
2665
2686
|
}
|
2666
|
-
},
|
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
|
3483
|
-
|
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
|
-
|
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
|
-
|
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(
|
3501
|
-
var comptrollerProxy =
|
3502
|
-
minter =
|
3503
|
-
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(
|
3507
|
-
var comptrollerProxy =
|
3508
|
-
contract =
|
3509
|
-
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: '
|
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,
|
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
|
+
"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.
|
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
|
-
|
194
|
-
|
195
|
-
export
|
196
|
-
|
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
|
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
|
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,
|
package/src/scaffolding/setup.ts
CHANGED
@@ -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(
|
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 {
|
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: '
|
38
|
+
seur: '0xc3f2f91723b16b95bef0619b2504c049075d5b0b',
|
39
|
+
sxag: '0x40d68c490bf7262ec40048099aec23535f734be2',
|
40
|
+
sxau: '0x92eb453b7b5b8d41edb44e2c8b8b53eb70a482c7',
|
39
41
|
// misc
|
40
42
|
lidoSteth: '0x31f644e2dd5d74f5c8d6d9de89dd517474d51800',
|
41
43
|
ldo: '0x3dba737ccc50a32a1764b493285dd51c8af6c278',
|