@enzymefinance/testutils 4.0.0-next.5 → 4.0.0

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 (44) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/declarations/src/deployment.d.ts +34 -27
  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/aave-debt.d.ts +51 -0
  6. package/dist/declarations/src/scaffolding/extensions/external-positions/actions.d.ts +2 -1
  7. package/dist/declarations/src/scaffolding/extensions/external-positions/index.d.ts +1 -0
  8. package/dist/declarations/src/scaffolding/extensions/external-positions/mocks.d.ts +4 -1
  9. package/dist/declarations/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.d.ts +12 -11
  10. package/dist/declarations/src/scaffolding/extensions/fees.d.ts +3 -3
  11. package/dist/declarations/src/scaffolding/extensions/integrations/aave.d.ts +2 -2
  12. package/dist/declarations/src/scaffolding/extensions/integrations/compound.d.ts +30 -2
  13. package/dist/declarations/src/scaffolding/extensions/integrations/curve.d.ts +63 -229
  14. package/dist/declarations/src/scaffolding/extensions/integrations/idle.d.ts +3 -3
  15. package/dist/declarations/src/scaffolding/extensions/integrations/index.d.ts +1 -1
  16. package/dist/declarations/src/scaffolding/extensions/integrations/olympusV2.d.ts +17 -0
  17. package/dist/declarations/src/scaffolding/extensions/integrations/synthetix.d.ts +5 -10
  18. package/dist/declarations/src/scaffolding/extensions/integrations/yearn.d.ts +2 -2
  19. package/dist/declarations/src/scaffolding/extensions/integrations/zeroExV2.d.ts +1 -1
  20. package/dist/declarations/src/scaffolding/extensions/policies.d.ts +8 -8
  21. package/dist/declarations/src/whales.d.ts +12 -5
  22. package/dist/enzymefinance-testutils.browser.cjs.js +826 -721
  23. package/dist/enzymefinance-testutils.browser.esm.js +809 -692
  24. package/dist/enzymefinance-testutils.cjs.dev.js +826 -721
  25. package/dist/enzymefinance-testutils.cjs.prod.js +826 -721
  26. package/dist/enzymefinance-testutils.esm.js +809 -692
  27. package/package.json +6 -6
  28. package/src/deployment.ts +39 -31
  29. package/src/scaffolding/assets.ts +1 -1
  30. package/src/scaffolding/core.ts +3 -9
  31. package/src/scaffolding/extensions/external-positions/aave-debt.ts +179 -0
  32. package/src/scaffolding/extensions/external-positions/actions.ts +6 -1
  33. package/src/scaffolding/extensions/external-positions/index.ts +1 -0
  34. package/src/scaffolding/extensions/external-positions/mocks.ts +7 -10
  35. package/src/scaffolding/extensions/external-positions/uniswap-v3-liquidity.ts +18 -24
  36. package/src/scaffolding/extensions/integrations/compound.ts +163 -2
  37. package/src/scaffolding/extensions/integrations/curve.ts +152 -783
  38. package/src/scaffolding/extensions/integrations/index.ts +1 -1
  39. package/src/scaffolding/extensions/integrations/olympusV2.ts +71 -0
  40. package/src/scaffolding/extensions/integrations/synthetix.ts +6 -25
  41. package/src/types.d.ts +1 -0
  42. package/src/whales.ts +14 -5
  43. package/dist/declarations/src/scaffolding/extensions/integrations/paraSwapV4.d.ts +0 -23
  44. package/src/scaffolding/extensions/integrations/paraSwapV4.ts +0 -70
@@ -3,7 +3,7 @@ export * from './compound';
3
3
  export * from './curve';
4
4
  export * from './idle';
5
5
  export * from './mock';
6
- export * from './paraSwapV4';
6
+ export * from './olympusV2';
7
7
  export * from './paraSwapV5';
8
8
  export * from './poolTogetherV4';
9
9
  export * from './synthetix';
@@ -0,0 +1,71 @@
1
+ import type { SignerWithAddress } from '@enzymefinance/hardhat';
2
+ import type { ComptrollerLib, IntegrationManager, OlympusV2Adapter } from '@enzymefinance/protocol';
3
+ import {
4
+ callOnIntegrationArgs,
5
+ IntegrationManagerActionId,
6
+ olympusV2StakeArgs,
7
+ olympusV2UnstakeArgs,
8
+ stakeSelector,
9
+ unstakeSelector,
10
+ } from '@enzymefinance/protocol';
11
+ import type { BigNumberish } from 'ethers';
12
+
13
+ export async function olympusV2Stake({
14
+ comptrollerProxy,
15
+ integrationManager,
16
+ signer,
17
+ olympusV2Adapter,
18
+ amount,
19
+ }: {
20
+ comptrollerProxy: ComptrollerLib;
21
+ integrationManager: IntegrationManager;
22
+ signer: SignerWithAddress;
23
+ olympusV2Adapter: OlympusV2Adapter;
24
+ amount: BigNumberish;
25
+ }) {
26
+ const stakeArgs = olympusV2StakeArgs({
27
+ amount,
28
+ });
29
+
30
+ const callArgs = callOnIntegrationArgs({
31
+ adapter: olympusV2Adapter,
32
+ encodedCallArgs: stakeArgs,
33
+ selector: stakeSelector,
34
+ });
35
+
36
+ const stakeTx = comptrollerProxy
37
+ .connect(signer)
38
+ .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
39
+
40
+ return stakeTx;
41
+ }
42
+
43
+ export async function olympusV2Unstake({
44
+ comptrollerProxy,
45
+ integrationManager,
46
+ signer,
47
+ olympusV2Adapter,
48
+ amount,
49
+ }: {
50
+ comptrollerProxy: ComptrollerLib;
51
+ integrationManager: IntegrationManager;
52
+ signer: SignerWithAddress;
53
+ olympusV2Adapter: OlympusV2Adapter;
54
+ amount: BigNumberish;
55
+ }) {
56
+ const unstakeArgs = olympusV2UnstakeArgs({
57
+ amount,
58
+ });
59
+
60
+ const callArgs = callOnIntegrationArgs({
61
+ adapter: olympusV2Adapter,
62
+ encodedCallArgs: unstakeArgs,
63
+ selector: unstakeSelector,
64
+ });
65
+
66
+ const unstakeTx = comptrollerProxy
67
+ .connect(signer)
68
+ .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
69
+
70
+ return unstakeTx;
71
+ }
@@ -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
@@ -12,12 +12,15 @@ const whales = {
12
12
  crv: '0x4ce799e6eD8D64536b67dD428565d52A531B3640',
13
13
  dai: '0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503',
14
14
  knc: '0x09d51654bd9efbfcb56da3491989cc1444095fff',
15
+ ldo: '0x3dba737ccc50a32a1764b493285dd51c8af6c278',
15
16
  link: '0xbe6977e08d4479c0a6777539ae0e8fa27be4e9d6',
16
17
  mana: '0xefb94ac00f1cee8a89d5c3f49faa799da6f03024',
17
18
  mln: '0xd8f8a53945bcfbbc19da162aa405e662ef71c40d',
19
+ ohm: '0x71a53aff36a699110d66d6bdfff2320caf8d2d59',
18
20
  rep: '0xc6a043b07d33b6f30d8cb501026c391cfd25abe1',
19
21
  ren: '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8',
20
22
  susd: '0xa5f7a39e55d7878bc5bd754ee5d6bd7a7662355b',
23
+ sohm: '0xf280f037cdbda99727ddf5dfede91e68fa78605c',
21
24
  uni: '0x47173b170c64d16393a52e6c480b3ad8c302ba1e',
22
25
  usdc: '0xae2d4617c862309a3d75a0ffb358c7a5009c673f',
23
26
  usdt: '0x5041ed759dd4afc3a72b8192c143f72f4724081a',
@@ -25,23 +28,29 @@ const whales = {
25
28
  zrx: '0x206376e8940e42538781cd94ef024df3c1e0fd43',
26
29
  // aTokens
27
30
  ausdc: '0x3DdfA8eC3052539b6C9549F12cEA2C295cfF5296',
31
+ ausdt: '0x7d6149ad9a573a6e2ca6ebf7d4897c1b766841b4',
28
32
  // cTokens
29
33
  ccomp: '0xd74f186194ab9219fafac5c2fe4b3270169666db',
30
34
  cdai: '0xab4ce310054a11328685ece1043211b68ba5d082',
31
35
  ceth: '0x8aceab8167c80cb8b3de7fa6228b889bb1130ee8',
32
36
  cuni: '0x39d8014b4f40d2cbc441137011d32023f4f1fd87',
33
- cusdc: '0xb3bd459e0598dde1fe84b1d0a1430be175b5d5be',
37
+ cusdc: '0xe1ed4da4284924ddaf69983b4d813fb1be58c380',
38
+ // fTokens
39
+ fdai7: '0x88884e35d7006ae84efef09ee6bc6a43dd8e2bb8',
40
+ feth7: '0xcd2ba6a4d50745b0b4096186f925115387852c15',
41
+ fdai8: '0x93f3f612a525a59523e91cc5552f718df9fc0746',
42
+ ftribe8: '0xdb5ac83c137321da29a59a7592232bc4ed461730',
34
43
  // ptTokens
35
44
  ptUsdc: '0xd18236cd213f39d078177b6f6908f0e44e88e4aa',
36
- // synths
45
+ // synths (unsupported)
37
46
  seth: '0xc34a7c65aa08cb36744bda8eeec7b8e9891e147c',
38
- seur: '0xc3f2f91723b16b95bef0619b2504c049075d5b0b',
39
47
  sxag: '0x40d68c490bf7262ec40048099aec23535f734be2',
40
48
  sxau: '0x92eb453b7b5b8d41edb44e2c8b8b53eb70a482c7',
41
49
  // misc
42
50
  lidoSteth: '0x31f644e2dd5d74f5c8d6d9de89dd517474d51800',
43
- ldo: '0x3dba737ccc50a32a1764b493285dd51c8af6c278',
44
- eurs: '0x98ed26de6451db36246672df78ae7c50f2c76f6d',
51
+ ust: '0xf584f8728b874a6a5c7a8d4d387c9aae9172d621',
52
+ // Curve steth pool related
53
+ stecrv: '0x56c915758ad3f76fd287fff7563ee313142fb663',
45
54
  } as const;
46
55
  /* eslint-enable sort-keys-fix/sort-keys-fix */
47
56
 
@@ -1,23 +0,0 @@
1
- import type { AddressLike } from '@enzymefinance/ethers';
2
- import type { SignerWithAddress } from '@enzymefinance/hardhat';
3
- import type { ComptrollerLib, IntegrationManager, ParaSwapV4Adapter, ParaSwapV4Path, StandardToken } from '@enzymefinance/protocol';
4
- import type { BigNumberish } from 'ethers';
5
- import { utils } from 'ethers';
6
- export declare function paraSwapV4GenerateDummyPaths({ toTokens }: {
7
- toTokens: AddressLike[];
8
- }): {
9
- routes: never[];
10
- to: AddressLike;
11
- totalNetworkFee: number;
12
- }[];
13
- export declare function paraSwapV4TakeOrder({ comptrollerProxy, integrationManager, fundOwner, paraSwapV4Adapter, outgoingAsset, outgoingAssetAmount, minIncomingAssetAmount, expectedIncomingAssetAmount, paths, }: {
14
- comptrollerProxy: ComptrollerLib;
15
- integrationManager: IntegrationManager;
16
- fundOwner: SignerWithAddress;
17
- paraSwapV4Adapter: ParaSwapV4Adapter;
18
- outgoingAsset: StandardToken;
19
- outgoingAssetAmount?: BigNumberish;
20
- minIncomingAssetAmount?: BigNumberish;
21
- expectedIncomingAssetAmount?: BigNumberish;
22
- paths: ParaSwapV4Path[];
23
- }): Promise<import("@enzymefinance/ethers").ContractReceipt<import("@enzymefinance/ethers").SendFunction<[_extension: AddressLike, _actionId: BigNumberish, _callArgs: utils.BytesLike], void, ComptrollerLib>>>;
@@ -1,70 +0,0 @@
1
- import type { AddressLike } from '@enzymefinance/ethers';
2
- import type { SignerWithAddress } from '@enzymefinance/hardhat';
3
- import type {
4
- ComptrollerLib,
5
- IntegrationManager,
6
- ParaSwapV4Adapter,
7
- ParaSwapV4Path,
8
- StandardToken,
9
- } from '@enzymefinance/protocol';
10
- import {
11
- callOnIntegrationArgs,
12
- IntegrationManagerActionId,
13
- paraSwapV4TakeOrderArgs,
14
- takeOrderSelector,
15
- } from '@enzymefinance/protocol';
16
- import type { BigNumberish } from 'ethers';
17
- import { utils } from 'ethers';
18
-
19
- // ParaSwapV4Path
20
- export function paraSwapV4GenerateDummyPaths({ toTokens }: { toTokens: AddressLike[] }) {
21
- return toTokens.map((toToken) => {
22
- return {
23
- // Not supported in our protocol
24
- routes: [],
25
-
26
- to: toToken,
27
- totalNetworkFee: 0, // Can ignore this param in the dummy
28
- };
29
- });
30
- }
31
-
32
- export async function paraSwapV4TakeOrder({
33
- comptrollerProxy,
34
- integrationManager,
35
- fundOwner,
36
- paraSwapV4Adapter,
37
- outgoingAsset,
38
- outgoingAssetAmount = utils.parseEther('1'),
39
- minIncomingAssetAmount = 1,
40
- expectedIncomingAssetAmount = minIncomingAssetAmount,
41
- paths,
42
- }: {
43
- comptrollerProxy: ComptrollerLib;
44
- integrationManager: IntegrationManager;
45
- fundOwner: SignerWithAddress;
46
- paraSwapV4Adapter: ParaSwapV4Adapter;
47
- outgoingAsset: StandardToken;
48
- outgoingAssetAmount?: BigNumberish;
49
- minIncomingAssetAmount?: BigNumberish;
50
- expectedIncomingAssetAmount?: BigNumberish;
51
- paths: ParaSwapV4Path[];
52
- }) {
53
- const takeOrderArgs = paraSwapV4TakeOrderArgs({
54
- expectedIncomingAssetAmount,
55
- minIncomingAssetAmount,
56
- outgoingAsset,
57
- outgoingAssetAmount,
58
- paths,
59
- });
60
-
61
- const callArgs = callOnIntegrationArgs({
62
- adapter: paraSwapV4Adapter,
63
- encodedCallArgs: takeOrderArgs,
64
- selector: takeOrderSelector,
65
- });
66
-
67
- return comptrollerProxy
68
- .connect(fundOwner)
69
- .callOnExtension(integrationManager, IntegrationManagerActionId.CallOnIntegration, callArgs);
70
- }