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

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