@enzymefinance/testutils 4.0.0-next.6 → 4.0.0-next.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/declarations/src/deployment.d.ts +19 -16
  3. package/dist/declarations/src/scaffolding/assets.d.ts +1 -1
  4. package/dist/declarations/src/scaffolding/core.d.ts +2 -3
  5. package/dist/declarations/src/scaffolding/extensions/external-positions/actions.d.ts +2 -1
  6. package/dist/declarations/src/scaffolding/extensions/external-positions/mocks.d.ts +4 -1
  7. package/dist/declarations/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.d.ts +12 -11
  8. package/dist/declarations/src/scaffolding/extensions/fees.d.ts +3 -3
  9. package/dist/declarations/src/scaffolding/extensions/integrations/aave.d.ts +2 -2
  10. package/dist/declarations/src/scaffolding/extensions/integrations/compound.d.ts +30 -2
  11. package/dist/declarations/src/scaffolding/extensions/integrations/curve.d.ts +13 -71
  12. package/dist/declarations/src/scaffolding/extensions/integrations/idle.d.ts +3 -3
  13. package/dist/declarations/src/scaffolding/extensions/integrations/olympusV2.d.ts +2 -2
  14. package/dist/declarations/src/scaffolding/extensions/integrations/synthetix.d.ts +5 -10
  15. package/dist/declarations/src/scaffolding/extensions/integrations/yearn.d.ts +2 -2
  16. package/dist/declarations/src/scaffolding/extensions/integrations/zeroExV2.d.ts +1 -1
  17. package/dist/declarations/src/scaffolding/extensions/policies.d.ts +8 -8
  18. package/dist/declarations/src/whales.d.ts +6 -3
  19. package/dist/enzymefinance-testutils.browser.cjs.js +403 -344
  20. package/dist/enzymefinance-testutils.browser.esm.js +402 -338
  21. package/dist/enzymefinance-testutils.cjs.dev.js +403 -344
  22. package/dist/enzymefinance-testutils.cjs.prod.js +403 -344
  23. package/dist/enzymefinance-testutils.esm.js +402 -338
  24. package/package.json +6 -6
  25. package/src/deployment.ts +19 -15
  26. package/src/scaffolding/core.ts +1 -9
  27. package/src/scaffolding/extensions/external-positions/actions.ts +6 -1
  28. package/src/scaffolding/extensions/external-positions/mocks.ts +7 -10
  29. package/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.ts +18 -24
  30. package/src/scaffolding/extensions/integrations/compound.ts +163 -2
  31. package/src/scaffolding/extensions/integrations/curve.ts +21 -238
  32. package/src/scaffolding/extensions/integrations/synthetix.ts +6 -25
  33. package/src/types.d.ts +1 -0
  34. package/src/whales.ts +8 -3
@@ -6,7 +6,6 @@ import type {
6
6
  CurveExchangeAdapter,
7
7
  CurveLiquidityAaveAdapter,
8
8
  CurveLiquidityAdapter,
9
- CurveLiquidityEursAdapter,
10
9
  CurveLiquiditySethAdapter,
11
10
  CurveLiquidityStethAdapter,
12
11
  CurveRedeemType,
@@ -23,12 +22,6 @@ import {
23
22
  curveAaveUnstakeAndRedeemArgs,
24
23
  curveAaveUnstakeArgs,
25
24
  curveClaimRewardsArgs,
26
- curveEursLendAndStakeArgs,
27
- curveEursLendArgs,
28
- curveEursRedeemArgs,
29
- curveEursStakeArgs,
30
- curveEursUnstakeAndRedeemArgs,
31
- curveEursUnstakeArgs,
32
25
  curveLendAndStakeArgs,
33
26
  curveLendArgs,
34
27
  curveRedeemArgs,
@@ -146,17 +139,17 @@ export function curveClaimRewards({
146
139
  integrationManager,
147
140
  fundOwner,
148
141
  curveLiquidityAdapter,
149
- gaugeToken,
142
+ stakingToken,
150
143
  }: {
151
144
  comptrollerProxy: ComptrollerLib;
152
145
  integrationManager: IntegrationManager;
153
146
  fundOwner: SignerWithAddress;
154
147
  curveLiquidityAdapter: CurveLiquidityAdapter;
155
- gaugeToken: AddressLike;
148
+ stakingToken: AddressLike;
156
149
  }) {
157
150
  const callArgs = callOnIntegrationArgs({
158
151
  adapter: curveLiquidityAdapter,
159
- encodedCallArgs: curveClaimRewardsArgs({ gaugeToken }),
152
+ encodedCallArgs: curveClaimRewardsArgs({ stakingToken }),
160
153
  selector: claimRewardsSelector,
161
154
  });
162
155
 
@@ -207,8 +200,8 @@ export async function curveLendAndStake({
207
200
  curveLiquidityAdapter,
208
201
  pool,
209
202
  orderedOutgoingAssetAmounts,
210
- incomingGaugeToken,
211
- minIncomingGaugeTokenAmount = BigNumber.from(1),
203
+ incomingStakingToken,
204
+ minIncomingStakingTokenAmount = BigNumber.from(1),
212
205
  useUnderlyings,
213
206
  }: {
214
207
  comptrollerProxy: ComptrollerLib;
@@ -217,15 +210,15 @@ export async function curveLendAndStake({
217
210
  curveLiquidityAdapter: CurveLiquidityAdapter;
218
211
  pool: AddressLike;
219
212
  orderedOutgoingAssetAmounts: BigNumberish[];
220
- incomingGaugeToken: AddressLike;
221
- minIncomingGaugeTokenAmount?: BigNumberish;
213
+ incomingStakingToken: AddressLike;
214
+ minIncomingStakingTokenAmount?: BigNumberish;
222
215
  useUnderlyings: boolean;
223
216
  }) {
224
217
  const callArgs = callOnIntegrationArgs({
225
218
  adapter: curveLiquidityAdapter,
226
219
  encodedCallArgs: curveLendAndStakeArgs({
227
- incomingGaugeToken,
228
- minIncomingGaugeTokenAmount,
220
+ incomingStakingToken,
221
+ minIncomingStakingTokenAmount,
229
222
  orderedOutgoingAssetAmounts,
230
223
  pool,
231
224
  useUnderlyings,
@@ -282,7 +275,7 @@ export async function curveStake({
282
275
  signer,
283
276
  curveLiquidityAdapter,
284
277
  pool,
285
- incomingGaugeToken,
278
+ incomingStakingToken,
286
279
  amount,
287
280
  }: {
288
281
  comptrollerProxy: ComptrollerLib;
@@ -290,14 +283,14 @@ export async function curveStake({
290
283
  signer: SignerWithAddress;
291
284
  curveLiquidityAdapter: CurveLiquidityAdapter;
292
285
  pool: AddressLike;
293
- incomingGaugeToken: AddressLike;
286
+ incomingStakingToken: AddressLike;
294
287
  amount: BigNumberish;
295
288
  }) {
296
289
  const callArgs = callOnIntegrationArgs({
297
290
  adapter: curveLiquidityAdapter,
298
291
  encodedCallArgs: curveStakeArgs({
299
292
  amount,
300
- incomingGaugeToken,
293
+ incomingStakingToken,
301
294
  pool,
302
295
  }),
303
296
  selector: stakeSelector,
@@ -314,7 +307,7 @@ export async function curveUnstake({
314
307
  signer,
315
308
  curveLiquidityAdapter,
316
309
  pool,
317
- outgoingGaugeToken,
310
+ outgoingStakingToken,
318
311
  amount,
319
312
  }: {
320
313
  comptrollerProxy: ComptrollerLib;
@@ -322,14 +315,14 @@ export async function curveUnstake({
322
315
  signer: SignerWithAddress;
323
316
  curveLiquidityAdapter: CurveLiquidityAdapter;
324
317
  pool: AddressLike;
325
- outgoingGaugeToken: AddressLike;
318
+ outgoingStakingToken: AddressLike;
326
319
  amount: BigNumberish;
327
320
  }) {
328
321
  const callArgs = callOnIntegrationArgs({
329
322
  adapter: curveLiquidityAdapter,
330
323
  encodedCallArgs: curveUnstakeArgs({
331
324
  amount,
332
- outgoingGaugeToken,
325
+ outgoingStakingToken,
333
326
  pool,
334
327
  }),
335
328
  selector: unstakeSelector,
@@ -346,8 +339,8 @@ export async function curveUnstakeAndRedeem({
346
339
  signer,
347
340
  curveLiquidityAdapter,
348
341
  pool,
349
- outgoingGaugeToken,
350
- outgoingGaugeTokenAmount,
342
+ outgoingStakingToken,
343
+ outgoingStakingTokenAmount,
351
344
  useUnderlyings,
352
345
  redeemType,
353
346
  incomingAssetData,
@@ -357,8 +350,8 @@ export async function curveUnstakeAndRedeem({
357
350
  signer: SignerWithAddress;
358
351
  curveLiquidityAdapter: CurveLiquidityAdapter;
359
352
  pool: AddressLike;
360
- outgoingGaugeToken: StandardToken;
361
- outgoingGaugeTokenAmount: BigNumberish;
353
+ outgoingStakingToken: StandardToken;
354
+ outgoingStakingTokenAmount: BigNumberish;
362
355
  useUnderlyings: boolean;
363
356
  redeemType: CurveRedeemType;
364
357
  incomingAssetData: BytesLike;
@@ -367,8 +360,8 @@ export async function curveUnstakeAndRedeem({
367
360
  adapter: curveLiquidityAdapter,
368
361
  encodedCallArgs: curveUnstakeAndRedeemArgs({
369
362
  incomingAssetData,
370
- outgoingGaugeToken,
371
- outgoingGaugeTokenAmount,
363
+ outgoingStakingToken,
364
+ outgoingStakingTokenAmount,
372
365
  pool,
373
366
  redeemType,
374
367
  useUnderlyings,
@@ -615,216 +608,6 @@ export function curveAaveUnstake({
615
608
  .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
616
609
  }
617
610
 
618
- // eurs pool
619
-
620
- export function curveEursClaimRewards({
621
- comptrollerProxy,
622
- integrationManager,
623
- fundOwner,
624
- curveLiquidityEursAdapter,
625
- }: {
626
- comptrollerProxy: ComptrollerLib;
627
- integrationManager: IntegrationManager;
628
- fundOwner: SignerWithAddress;
629
- curveLiquidityEursAdapter: CurveLiquidityEursAdapter;
630
- }) {
631
- const callArgs = callOnIntegrationArgs({
632
- adapter: curveLiquidityEursAdapter,
633
- encodedCallArgs: constants.HashZero,
634
- selector: claimRewardsSelector,
635
- });
636
-
637
- return comptrollerProxy
638
- .connect(fundOwner)
639
- .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
640
- }
641
-
642
- export function curveEursLend({
643
- comptrollerProxy,
644
- integrationManager,
645
- fundOwner,
646
- curveLiquidityEursAdapter,
647
- outgoingEursAmount,
648
- outgoingSeurAmount,
649
- minIncomingLPTokenAmount,
650
- }: {
651
- comptrollerProxy: ComptrollerLib;
652
- integrationManager: IntegrationManager;
653
- fundOwner: SignerWithAddress;
654
- curveLiquidityEursAdapter: CurveLiquidityEursAdapter;
655
- outgoingEursAmount: BigNumberish;
656
- outgoingSeurAmount: BigNumberish;
657
- minIncomingLPTokenAmount: BigNumberish;
658
- }) {
659
- const callArgs = callOnIntegrationArgs({
660
- adapter: curveLiquidityEursAdapter,
661
- encodedCallArgs: curveEursLendArgs({
662
- minIncomingLPTokenAmount,
663
- outgoingEursAmount,
664
- outgoingSeurAmount,
665
- }),
666
- selector: lendSelector,
667
- });
668
-
669
- return comptrollerProxy
670
- .connect(fundOwner)
671
- .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
672
- }
673
-
674
- export function curveEursLendAndStake({
675
- comptrollerProxy,
676
- integrationManager,
677
- fundOwner,
678
- curveLiquidityEursAdapter,
679
- outgoingEursAmount,
680
- outgoingSeurAmount,
681
- minIncomingLiquidityGaugeTokenAmount,
682
- }: {
683
- comptrollerProxy: ComptrollerLib;
684
- integrationManager: IntegrationManager;
685
- fundOwner: SignerWithAddress;
686
- curveLiquidityEursAdapter: CurveLiquidityEursAdapter;
687
- outgoingEursAmount: BigNumberish;
688
- outgoingSeurAmount: BigNumberish;
689
- minIncomingLiquidityGaugeTokenAmount: BigNumberish;
690
- }) {
691
- const callArgs = callOnIntegrationArgs({
692
- adapter: curveLiquidityEursAdapter,
693
- encodedCallArgs: curveEursLendAndStakeArgs({
694
- minIncomingLiquidityGaugeTokenAmount,
695
- outgoingEursAmount,
696
- outgoingSeurAmount,
697
- }),
698
- selector: lendAndStakeSelector,
699
- });
700
-
701
- return comptrollerProxy
702
- .connect(fundOwner)
703
- .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
704
- }
705
-
706
- export function curveEursRedeem({
707
- comptrollerProxy,
708
- integrationManager,
709
- fundOwner,
710
- curveLiquidityEursAdapter,
711
- outgoingLPTokenAmount,
712
- minIncomingEursAmount,
713
- minIncomingSeurAmount,
714
- receiveSingleAsset,
715
- }: {
716
- comptrollerProxy: ComptrollerLib;
717
- integrationManager: IntegrationManager;
718
- fundOwner: SignerWithAddress;
719
- curveLiquidityEursAdapter: CurveLiquidityEursAdapter;
720
- outgoingLPTokenAmount: BigNumberish;
721
- minIncomingEursAmount: BigNumberish;
722
- minIncomingSeurAmount: BigNumberish;
723
- receiveSingleAsset: boolean;
724
- }) {
725
- const callArgs = callOnIntegrationArgs({
726
- adapter: curveLiquidityEursAdapter,
727
- encodedCallArgs: curveEursRedeemArgs({
728
- minIncomingEursAmount,
729
- minIncomingSeurAmount,
730
- outgoingLPTokenAmount,
731
- receiveSingleAsset,
732
- }),
733
- selector: redeemSelector,
734
- });
735
-
736
- return comptrollerProxy
737
- .connect(fundOwner)
738
- .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
739
- }
740
-
741
- export function curveEursStake({
742
- comptrollerProxy,
743
- integrationManager,
744
- fundOwner,
745
- curveLiquidityEursAdapter,
746
- outgoingLPTokenAmount,
747
- }: {
748
- comptrollerProxy: ComptrollerLib;
749
- integrationManager: IntegrationManager;
750
- fundOwner: SignerWithAddress;
751
- curveLiquidityEursAdapter: CurveLiquidityEursAdapter;
752
- outgoingLPTokenAmount: BigNumberish;
753
- }) {
754
- const callArgs = callOnIntegrationArgs({
755
- adapter: curveLiquidityEursAdapter,
756
- encodedCallArgs: curveEursStakeArgs({
757
- outgoingLPTokenAmount,
758
- }),
759
- selector: stakeSelector,
760
- });
761
-
762
- return comptrollerProxy
763
- .connect(fundOwner)
764
- .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
765
- }
766
-
767
- export function curveEursUnstakeAndRedeem({
768
- comptrollerProxy,
769
- integrationManager,
770
- fundOwner,
771
- curveLiquidityEursAdapter,
772
- outgoingLiquidityGaugeTokenAmount,
773
- minIncomingEursAmount,
774
- minIncomingSeurAmount,
775
- receiveSingleAsset,
776
- }: {
777
- comptrollerProxy: ComptrollerLib;
778
- integrationManager: IntegrationManager;
779
- fundOwner: SignerWithAddress;
780
- curveLiquidityEursAdapter: CurveLiquidityEursAdapter;
781
- outgoingLiquidityGaugeTokenAmount: BigNumberish;
782
- minIncomingEursAmount: BigNumberish;
783
- minIncomingSeurAmount: BigNumberish;
784
- receiveSingleAsset: boolean;
785
- }) {
786
- const callArgs = callOnIntegrationArgs({
787
- adapter: curveLiquidityEursAdapter,
788
- encodedCallArgs: curveEursUnstakeAndRedeemArgs({
789
- minIncomingEursAmount,
790
- minIncomingSeurAmount,
791
- outgoingLiquidityGaugeTokenAmount,
792
- receiveSingleAsset,
793
- }),
794
- selector: unstakeAndRedeemSelector,
795
- });
796
-
797
- return comptrollerProxy
798
- .connect(fundOwner)
799
- .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
800
- }
801
-
802
- export function curveEursUnstake({
803
- comptrollerProxy,
804
- integrationManager,
805
- fundOwner,
806
- curveLiquidityEursAdapter,
807
- outgoingLiquidityGaugeTokenAmount,
808
- }: {
809
- comptrollerProxy: ComptrollerLib;
810
- integrationManager: IntegrationManager;
811
- fundOwner: SignerWithAddress;
812
- curveLiquidityEursAdapter: CurveLiquidityEursAdapter;
813
- outgoingLiquidityGaugeTokenAmount: BigNumberish;
814
- }) {
815
- const callArgs = callOnIntegrationArgs({
816
- adapter: curveLiquidityEursAdapter,
817
- encodedCallArgs: curveEursUnstakeArgs({
818
- outgoingLiquidityGaugeTokenAmount,
819
- }),
820
- selector: unstakeSelector,
821
- });
822
-
823
- return comptrollerProxy
824
- .connect(fundOwner)
825
- .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
826
- }
827
-
828
611
  // sETH pool
829
612
 
830
613
  export function curveSethClaimRewards({
@@ -2,7 +2,6 @@ import type { AddressLike } from '@enzymefinance/ethers';
2
2
  import type {
3
3
  ComptrollerLib,
4
4
  IntegrationManager,
5
- ISynthetixAddressResolver,
6
5
  StandardToken,
7
6
  SynthetixAdapter,
8
7
  VaultLib,
@@ -22,39 +21,24 @@ import { utils } from 'ethers';
22
21
 
23
22
  export async function synthetixAssignExchangeDelegate({
24
23
  comptrollerProxy,
25
- addressResolver,
24
+ synthetixDelegateApprovals,
26
25
  fundOwner,
27
26
  delegate,
28
27
  }: {
29
28
  comptrollerProxy: ComptrollerLib;
30
- addressResolver: ISynthetixAddressResolver;
29
+ synthetixDelegateApprovals: AddressLike;
31
30
  fundOwner: Signer;
32
31
  delegate: AddressLike;
33
32
  }) {
34
- const delegateApprovals = await synthetixResolveAddress({
35
- addressResolver,
36
- name: 'DelegateApprovals',
37
- });
38
-
39
33
  await comptrollerProxy
40
34
  .connect(fundOwner)
41
35
  .vaultCallOnContract(
42
- delegateApprovals,
36
+ synthetixDelegateApprovals,
43
37
  synthetixAssignExchangeDelegateSelector,
44
38
  encodeArgs(['address'], [delegate]),
45
39
  );
46
40
  }
47
41
 
48
- export async function synthetixResolveAddress({
49
- addressResolver,
50
- name,
51
- }: {
52
- addressResolver: ISynthetixAddressResolver;
53
- name: string;
54
- }) {
55
- return addressResolver.requireAndGetAddress(utils.formatBytes32String(name), `Missing ${name}`);
56
- }
57
-
58
42
  export async function synthetixRedeem({
59
43
  comptrollerProxy,
60
44
  integrationManager,
@@ -91,8 +75,7 @@ export async function synthetixTakeOrder({
91
75
  synthetixAdapter,
92
76
  outgoingAsset,
93
77
  outgoingAssetAmount = utils.parseEther('1'),
94
- incomingAsset,
95
- minIncomingAssetAmount = utils.parseEther('1'),
78
+ minIncomingSusdAmount = utils.parseEther('1'),
96
79
  seedFund = false,
97
80
  }: {
98
81
  comptrollerProxy: ComptrollerLib;
@@ -102,8 +85,7 @@ export async function synthetixTakeOrder({
102
85
  synthetixAdapter: SynthetixAdapter;
103
86
  outgoingAsset: StandardToken;
104
87
  outgoingAssetAmount?: BigNumberish;
105
- incomingAsset: StandardToken;
106
- minIncomingAssetAmount?: BigNumberish;
88
+ minIncomingSusdAmount?: BigNumberish;
107
89
  seedFund?: boolean;
108
90
  }) {
109
91
  if (seedFund) {
@@ -112,8 +94,7 @@ export async function synthetixTakeOrder({
112
94
  }
113
95
 
114
96
  const takeOrderArgs = synthetixTakeOrderArgs({
115
- incomingAsset,
116
- minIncomingAssetAmount,
97
+ minIncomingSusdAmount,
117
98
  outgoingAsset,
118
99
  outgoingAssetAmount,
119
100
  });
package/src/types.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  import '@enzymefinance/hardhat/types';
2
+ import 'hardhat-deploy/dist/src/type-extensions';
package/src/whales.ts CHANGED
@@ -35,17 +35,22 @@ const whales = {
35
35
  ceth: '0x8aceab8167c80cb8b3de7fa6228b889bb1130ee8',
36
36
  cuni: '0x39d8014b4f40d2cbc441137011d32023f4f1fd87',
37
37
  cusdc: '0xe1ed4da4284924ddaf69983b4d813fb1be58c380',
38
+ // fTokens
39
+ fdai7: '0x88884e35d7006ae84efef09ee6bc6a43dd8e2bb8',
40
+ feth7: '0xcd2ba6a4d50745b0b4096186f925115387852c15',
41
+ fdai8: '0x93f3f612a525a59523e91cc5552f718df9fc0746',
42
+ ftribe8: '0xdb5ac83c137321da29a59a7592232bc4ed461730',
38
43
  // ptTokens
39
44
  ptUsdc: '0xd18236cd213f39d078177b6f6908f0e44e88e4aa',
40
- // synths
45
+ // synths (unsupported)
41
46
  seth: '0xc34a7c65aa08cb36744bda8eeec7b8e9891e147c',
42
- seur: '0xc3f2f91723b16b95bef0619b2504c049075d5b0b',
43
47
  sxag: '0x40d68c490bf7262ec40048099aec23535f734be2',
44
48
  sxau: '0x92eb453b7b5b8d41edb44e2c8b8b53eb70a482c7',
45
49
  // misc
46
50
  lidoSteth: '0x31f644e2dd5d74f5c8d6d9de89dd517474d51800',
47
- eurs: '0x98ed26de6451db36246672df78ae7c50f2c76f6d',
48
51
  ust: '0xf584f8728b874a6a5c7a8d4d387c9aae9172d621',
52
+ // Curve steth pool related
53
+ stecrv: '0x56c915758ad3f76fd287fff7563ee313142fb663',
49
54
  } as const;
50
55
  /* eslint-enable sort-keys-fix/sort-keys-fix */
51
56