@dhedge/v2-sdk 2.1.7 → 2.2.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.
- package/README.md +400 -53
- package/dist/config.d.ts +14 -2
- package/dist/entities/pool.d.ts +25 -86
- package/dist/entities/utils.d.ts +15 -0
- package/dist/services/cowSwap/index.d.ts +10 -0
- package/dist/services/hyperliquid/index.d.ts +22 -0
- package/dist/services/kyberSwap/index.d.ts +1 -1
- package/dist/services/oneInch/index.d.ts +1 -1
- package/dist/services/toros/easySwapper.d.ts +14 -0
- package/dist/services/toros/swapData.d.ts +5 -5
- package/dist/services/uniswap/V3Liquidity.d.ts +2 -2
- package/dist/services/velodrome/liquidity.d.ts +3 -0
- package/dist/test/constants.d.ts +48 -3
- package/dist/test/utils/testingHelper.d.ts +4 -0
- package/dist/types.d.ts +21 -5
- package/dist/utils/contract.d.ts +20 -0
- package/dist/v2-sdk.cjs.development.js +5193 -6711
- package/dist/v2-sdk.cjs.development.js.map +1 -1
- package/dist/v2-sdk.cjs.production.min.js +1 -1
- package/dist/v2-sdk.cjs.production.min.js.map +1 -1
- package/dist/v2-sdk.esm.js +5198 -6711
- package/dist/v2-sdk.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/abi/PoolFactory.json +414 -204
- package/src/abi/PoolLogic.json +160 -134
- package/src/config.ts +19 -9
- package/src/entities/pool.ts +103 -254
- package/src/entities/utils.ts +15 -0
- package/src/services/cowSwap/index.ts +281 -0
- package/src/services/hyperliquid/index.ts +22 -0
- package/src/services/kyberSwap/index.ts +5 -3
- package/src/services/oneInch/index.ts +5 -4
- package/src/services/toros/completeWithdrawal.ts +57 -40
- package/src/services/toros/easySwapper.ts +15 -1
- package/src/services/toros/initWithdrawal.ts +39 -31
- package/src/services/toros/swapData.ts +45 -131
- package/src/services/uniswap/V3Liquidity.ts +3 -24
- package/src/services/velodrome/liquidity.ts +3 -0
- package/src/test/aave.test.ts +99 -70
- package/src/test/aerodrome.test.ts +53 -24
- package/src/test/aerodromeCL.test.ts +64 -30
- package/src/test/arrakis.test.ts +23 -35
- package/src/test/balancer.test.ts +114 -106
- package/src/test/compoundV3.test.ts +45 -29
- package/src/test/constants.ts +57 -12
- package/src/test/cowswap.test.ts +79 -0
- package/src/test/dhedge.test.ts +45 -12
- package/src/test/flatmoney.test.ts +25 -39
- package/src/test/fluid.test.ts +33 -24
- package/src/test/hyperliquid.onchain.test.ts +131 -0
- package/src/test/kyberSwap.test.ts +37 -16
- package/src/test/lyra.test.ts +159 -150
- package/src/test/odos.test.ts +2 -2
- package/src/test/oneInch.test.ts +36 -22
- package/src/test/pancakeCL.test.ts +72 -31
- package/src/test/pendle.test.ts +94 -54
- package/src/test/{pendleMint.test.ts → pendleMint.onchain.test.ts} +22 -8
- package/src/test/pool.test.ts +152 -95
- package/src/test/toros.onchain.test.ts +92 -0
- package/src/test/toros.test.ts +74 -20
- package/src/test/torosLimitOrder.test.ts +87 -42
- package/src/test/uniswap.test.ts +77 -128
- package/src/test/utils/testingHelper.ts +120 -0
- package/src/test/velodrome.test.ts +126 -92
- package/src/test/velodromeCL.test.ts +43 -31
- package/src/test/velodromeV2.test.ts +153 -95
- package/src/types.ts +22 -6
- package/src/utils/contract.ts +20 -0
- package/dist/services/futures/constants.d.ts +0 -1
- package/dist/services/futures/index.d.ts +0 -2
- package/dist/services/futures/margin.d.ts +0 -2
- package/dist/services/futures/trade.d.ts +0 -3
- package/dist/services/ramses/vesting.d.ts +0 -4
- package/dist/services/uniswap/V3Trade.d.ts +0 -3
- package/dist/test/utils/futures.d.ts +0 -2
- package/src/abi/IRamsesNonfungiblePositionManager.json +0 -486
- package/src/abi/ISynthetiXFuturesMarketV2.json +0 -531
- package/src/abi/ISynthetix.json +0 -139
- package/src/abi/IUniswapV3Quoter.json +0 -195
- package/src/abi/IUniswapV3Router.json +0 -221
- package/src/abi/IXRam.json +0 -99
- package/src/services/futures/constants.ts +0 -1
- package/src/services/futures/index.ts +0 -2
- package/src/services/futures/margin.ts +0 -10
- package/src/services/futures/trade.ts +0 -32
- package/src/services/ramses/vesting.ts +0 -24
- package/src/services/uniswap/V3Trade.ts +0 -46
- package/src/test/futures.test.ts +0 -51
- package/src/test/hyperliquid.test.ts +0 -107
- package/src/test/ramses.test.ts +0 -190
- package/src/test/ramsesCL.test.ts +0 -155
- package/src/test/synthetix.test.ts +0 -36
- package/src/test/utils/futures.ts +0 -14
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
|
|
3
|
-
import { Dhedge, Pool } from "..";
|
|
4
|
-
|
|
5
|
-
import { Network } from "../types";
|
|
6
|
-
import { TEST_POOL } from "./constants";
|
|
7
|
-
|
|
8
|
-
import { TestingRunParams, testingHelper } from "./utils/testingHelper";
|
|
9
|
-
|
|
10
|
-
// import { balanceDelta } from "./utils/token";
|
|
11
|
-
|
|
12
|
-
const testHyperliquid = ({ wallet, network }: TestingRunParams) => {
|
|
13
|
-
let dhedge: Dhedge;
|
|
14
|
-
let pool: Pool;
|
|
15
|
-
jest.setTimeout(100000);
|
|
16
|
-
|
|
17
|
-
describe(`pool on ${network}`, () => {
|
|
18
|
-
beforeAll(async () => {
|
|
19
|
-
dhedge = new Dhedge(wallet, network);
|
|
20
|
-
pool = await dhedge.loadPool(TEST_POOL[network]);
|
|
21
|
-
// // top up gas
|
|
22
|
-
// await provider.send("hardhat_setBalance", [
|
|
23
|
-
// wallet.address,
|
|
24
|
-
// "0x10000000000000000"
|
|
25
|
-
// ]);
|
|
26
|
-
// await provider.send("evm
|
|
27
|
-
// _mine", []);
|
|
28
|
-
// // top up USDC
|
|
29
|
-
// await setUSDCAmount({
|
|
30
|
-
// amount: new BigNumber(2).times(1e6).toFixed(0),
|
|
31
|
-
// userAddress: pool.address,
|
|
32
|
-
// network,
|
|
33
|
-
// provider
|
|
34
|
-
// });
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
// it("approves unlimited USDC on Hyperliquid Core Wallet", async () => {
|
|
38
|
-
// await pool.approve(
|
|
39
|
-
// Dapp.HYPERLIQUID,
|
|
40
|
-
// USDC,
|
|
41
|
-
// MAX_AMOUNT,
|
|
42
|
-
// await getTxOptions(network)
|
|
43
|
-
// );
|
|
44
|
-
// const usdcAllowanceDelta = await allowanceDelta(
|
|
45
|
-
// pool.address,
|
|
46
|
-
// USDC,
|
|
47
|
-
// routerAddress[network][Dapp.HYPERLIQUID]!,
|
|
48
|
-
// pool.signer
|
|
49
|
-
// );
|
|
50
|
-
// await expect(usdcAllowanceDelta.gt(0));
|
|
51
|
-
// });
|
|
52
|
-
|
|
53
|
-
// it("deposits USDC into Hyperliquid Core Wallet", async () => {
|
|
54
|
-
// await pool.depositHyperliquid(
|
|
55
|
-
// "30000000", // 5 USDC with 6 decimals,
|
|
56
|
-
// 4294967295
|
|
57
|
-
// );
|
|
58
|
-
// expect(
|
|
59
|
-
// (await balanceDelta(pool.address, USDC, pool.signer)).eq("-20000000")
|
|
60
|
-
// ).toBe(true);
|
|
61
|
-
// });
|
|
62
|
-
|
|
63
|
-
// it("move 5 USDC from Perp to Spot Wallet", async () => {
|
|
64
|
-
// const tx = await pool.perpToSpotHyperliquid(
|
|
65
|
-
// 0,
|
|
66
|
-
// "5000000" // 5 USDC with 6 decimals
|
|
67
|
-
// );
|
|
68
|
-
// expect(tx).toBeDefined();
|
|
69
|
-
// });
|
|
70
|
-
|
|
71
|
-
// it("withdraws USDC from Hyperliquid Spot Wallet", async () => {
|
|
72
|
-
// const tx = await pool.withdrawHyperliquid(
|
|
73
|
-
// "784577548" // 5 USDC with 6 decimals
|
|
74
|
-
// );
|
|
75
|
-
// expect(tx).toBeDefined();
|
|
76
|
-
// });
|
|
77
|
-
|
|
78
|
-
// it("sets up a BTC_USDC buy order", async () => {
|
|
79
|
-
// const tx = await pool.openMarketOrderHyperliquid(
|
|
80
|
-
// 10182, // HYPE SPOT
|
|
81
|
-
// true, // is long
|
|
82
|
-
// 25, // 25 USD value of BTC,
|
|
83
|
-
// 1, // 0.5% slippage,
|
|
84
|
-
// null,
|
|
85
|
-
// true
|
|
86
|
-
// );
|
|
87
|
-
// expect(tx).toBeDefined();
|
|
88
|
-
// });
|
|
89
|
-
|
|
90
|
-
it("closes a position on Hyperliquid", async () => {
|
|
91
|
-
const tx = await pool.closePositionHyperliquid(
|
|
92
|
-
1, // ETH Perp,
|
|
93
|
-
50, // percentage to close
|
|
94
|
-
1, // 0.5% slippage,
|
|
95
|
-
null,
|
|
96
|
-
true
|
|
97
|
-
);
|
|
98
|
-
expect(tx).toBeDefined();
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
testingHelper({
|
|
104
|
-
network: Network.HYPERLIQUID,
|
|
105
|
-
testingRun: testHyperliquid,
|
|
106
|
-
onFork: false
|
|
107
|
-
});
|
package/src/test/ramses.test.ts
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import { Dhedge, Pool } from "..";
|
|
4
|
-
import { routerAddress } from "../config";
|
|
5
|
-
import { Dapp, Network } from "../types";
|
|
6
|
-
import { CONTRACT_ADDRESS, MAX_AMOUNT, TEST_POOL } from "./constants";
|
|
7
|
-
import {
|
|
8
|
-
TestingRunParams,
|
|
9
|
-
beforeAfterReset,
|
|
10
|
-
testingHelper
|
|
11
|
-
} from "./utils/testingHelper";
|
|
12
|
-
import { allowanceDelta, balanceDelta } from "./utils/token";
|
|
13
|
-
import { getWalletData } from "./wallet";
|
|
14
|
-
|
|
15
|
-
const testRamses = ({ network, provider }: TestingRunParams) => {
|
|
16
|
-
const USDC_swETH_Lp = "0xf1a5444a7ed5f24962a118512b076a015b0e6c0b";
|
|
17
|
-
const USDC_swETH_Gauge = "0x9765cdaec6395b04737edc22c5b3e7d85677328a";
|
|
18
|
-
const RAM = "0xaaa6c1e32c55a7bfa8066a6fae9b42650f262418";
|
|
19
|
-
const xoRAM = "0xaaa1ee8dc1864ae49185c368e8c64dd780a50fb7";
|
|
20
|
-
|
|
21
|
-
const USDC = CONTRACT_ADDRESS[network].USDC;
|
|
22
|
-
const SWETH = CONTRACT_ADDRESS[network].SWETH;
|
|
23
|
-
|
|
24
|
-
let dhedge: Dhedge;
|
|
25
|
-
let pool: Pool;
|
|
26
|
-
jest.setTimeout(100000);
|
|
27
|
-
|
|
28
|
-
describe(`[${network}] ramses tests`, () => {
|
|
29
|
-
beforeAll(async () => {
|
|
30
|
-
const { wallet } = getWalletData(network);
|
|
31
|
-
// top up ETH (gas)
|
|
32
|
-
await provider.send("hardhat_setBalance", [
|
|
33
|
-
wallet.address,
|
|
34
|
-
"0x100000000000000"
|
|
35
|
-
]);
|
|
36
|
-
dhedge = new Dhedge(wallet, network);
|
|
37
|
-
pool = await dhedge.loadPool(TEST_POOL[network]);
|
|
38
|
-
await pool.trade(Dapp.ONEINCH, USDC, SWETH, (5 * 1e6).toString());
|
|
39
|
-
});
|
|
40
|
-
beforeAfterReset({ beforeAll, afterAll, provider });
|
|
41
|
-
|
|
42
|
-
it("approves unlimited USDC and swETH on for Ramses", async () => {
|
|
43
|
-
await pool.approve(Dapp.RAMSES, USDC, MAX_AMOUNT);
|
|
44
|
-
await pool.approve(Dapp.RAMSES, SWETH, MAX_AMOUNT);
|
|
45
|
-
const UsdcAllowanceDelta = await allowanceDelta(
|
|
46
|
-
pool.address,
|
|
47
|
-
USDC,
|
|
48
|
-
routerAddress[network].ramses!,
|
|
49
|
-
pool.signer
|
|
50
|
-
);
|
|
51
|
-
await expect(UsdcAllowanceDelta.gt(0));
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it("adds USDC and swETH to a Ramses volatile pool", async () => {
|
|
55
|
-
const usdcBalance = await pool.utils.getBalance(USDC, pool.address);
|
|
56
|
-
const swethBalance = await pool.utils.getBalance(SWETH, pool.address);
|
|
57
|
-
await pool.addLiquidityV2(
|
|
58
|
-
Dapp.RAMSES,
|
|
59
|
-
USDC,
|
|
60
|
-
SWETH,
|
|
61
|
-
usdcBalance,
|
|
62
|
-
swethBalance,
|
|
63
|
-
false
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const lpTokenDelta = await balanceDelta(
|
|
67
|
-
pool.address,
|
|
68
|
-
USDC_swETH_Lp,
|
|
69
|
-
pool.signer
|
|
70
|
-
);
|
|
71
|
-
expect(lpTokenDelta.gt(0));
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it("should stake USDC-swETH LP in a gauge", async () => {
|
|
75
|
-
const balance = await dhedge.utils.getBalance(
|
|
76
|
-
USDC_swETH_Lp,
|
|
77
|
-
pool.address
|
|
78
|
-
);
|
|
79
|
-
await pool.approveSpender(USDC_swETH_Gauge, USDC_swETH_Lp, MAX_AMOUNT);
|
|
80
|
-
await pool.stakeInGauge(Dapp.RAMSES, USDC_swETH_Gauge, balance);
|
|
81
|
-
const gaugeBalance = await balanceDelta(
|
|
82
|
-
pool.address,
|
|
83
|
-
USDC_swETH_Gauge,
|
|
84
|
-
pool.signer
|
|
85
|
-
);
|
|
86
|
-
expect(gaugeBalance.gt(0));
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it("should claim rewards from Gauge", async () => {
|
|
90
|
-
await provider.send("evm_increaseTime", [24 * 60 * 60]); // 1 day
|
|
91
|
-
await provider.send("evm_mine", []);
|
|
92
|
-
const claimTx = await pool.claimFees(Dapp.RAMSES, USDC_swETH_Gauge);
|
|
93
|
-
expect(claimTx).not.toBe(null);
|
|
94
|
-
const ramBalanceDelta = await balanceDelta(
|
|
95
|
-
pool.address,
|
|
96
|
-
RAM,
|
|
97
|
-
pool.signer
|
|
98
|
-
);
|
|
99
|
-
const xoRamBalanceDelta = await balanceDelta(
|
|
100
|
-
pool.address,
|
|
101
|
-
xoRAM,
|
|
102
|
-
pool.signer
|
|
103
|
-
);
|
|
104
|
-
expect(ramBalanceDelta.gt(0));
|
|
105
|
-
expect(xoRamBalanceDelta.gt(0));
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it("createVest for xoRAM", async () => {
|
|
109
|
-
const xoRAMBalanceBefore = await dhedge.utils.getBalance(
|
|
110
|
-
xoRAM,
|
|
111
|
-
pool.address
|
|
112
|
-
);
|
|
113
|
-
expect(xoRAMBalanceBefore.gt(0));
|
|
114
|
-
const vestTx = await pool.vestTokens(xoRAM, xoRAMBalanceBefore);
|
|
115
|
-
expect(vestTx).not.toBe(null);
|
|
116
|
-
const xoRAMBalanceAfter = await dhedge.utils.getBalance(
|
|
117
|
-
xoRAM,
|
|
118
|
-
pool.address
|
|
119
|
-
);
|
|
120
|
-
expect(xoRAMBalanceAfter.eq(0));
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
it("exitVest for xoRAM", async () => {
|
|
124
|
-
await provider.send("evm_increaseTime", [3600 * 24 * 90]); // 90 days
|
|
125
|
-
await provider.send("evm_mine", []);
|
|
126
|
-
|
|
127
|
-
const ramBalanceBefore = await dhedge.utils.getBalance(RAM, pool.address);
|
|
128
|
-
|
|
129
|
-
const exitvestTx = await pool.exitVestedToken(xoRAM, 0);
|
|
130
|
-
const xoRAMBalanceAfter = await dhedge.utils.getBalance(
|
|
131
|
-
USDC_swETH_Gauge,
|
|
132
|
-
pool.address
|
|
133
|
-
);
|
|
134
|
-
expect(exitvestTx).not.toBe(null);
|
|
135
|
-
const ramBalanceAfter = await dhedge.utils.getBalance(RAM, pool.address);
|
|
136
|
-
expect(xoRAMBalanceAfter.eq(0));
|
|
137
|
-
expect(ramBalanceAfter.gt(ramBalanceBefore));
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
it("should unStake USDC-swETH LP from a gauge", async () => {
|
|
141
|
-
const gaugeBalance = await dhedge.utils.getBalance(
|
|
142
|
-
USDC_swETH_Gauge,
|
|
143
|
-
pool.address
|
|
144
|
-
);
|
|
145
|
-
await pool.unstakeFromGauge(USDC_swETH_Gauge, gaugeBalance);
|
|
146
|
-
const lpTokenDelta = await balanceDelta(
|
|
147
|
-
pool.address,
|
|
148
|
-
USDC_swETH_Lp,
|
|
149
|
-
pool.signer
|
|
150
|
-
);
|
|
151
|
-
expect(lpTokenDelta.gt(0));
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
it("approves unlimited USDC/swETH LP for Ramses", async () => {
|
|
155
|
-
await pool.approve(Dapp.RAMSES, USDC_swETH_Lp, MAX_AMOUNT);
|
|
156
|
-
const lpAllowanceDelta = await allowanceDelta(
|
|
157
|
-
pool.address,
|
|
158
|
-
USDC_swETH_Lp,
|
|
159
|
-
routerAddress[network].ramses!,
|
|
160
|
-
pool.signer
|
|
161
|
-
);
|
|
162
|
-
expect(lpAllowanceDelta.gt(0));
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
it("should remove all liquidity from an existing pool ", async () => {
|
|
166
|
-
const balance = await dhedge.utils.getBalance(
|
|
167
|
-
USDC_swETH_Lp,
|
|
168
|
-
pool.address
|
|
169
|
-
);
|
|
170
|
-
await pool.removeLiquidityV2(Dapp.RAMSES, USDC, SWETH, balance, false);
|
|
171
|
-
const usdcBalanceDelta = await balanceDelta(
|
|
172
|
-
pool.address,
|
|
173
|
-
USDC,
|
|
174
|
-
pool.signer
|
|
175
|
-
);
|
|
176
|
-
const swETHBalanceDelta = await balanceDelta(
|
|
177
|
-
pool.address,
|
|
178
|
-
SWETH,
|
|
179
|
-
pool.signer
|
|
180
|
-
);
|
|
181
|
-
expect(usdcBalanceDelta.gt(0));
|
|
182
|
-
expect(swETHBalanceDelta.gt(0));
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
testingHelper({
|
|
188
|
-
network: Network.ARBITRUM,
|
|
189
|
-
testingRun: testRamses
|
|
190
|
-
});
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { Dhedge, Pool, ethers } from "..";
|
|
2
|
-
|
|
3
|
-
import { nonfungiblePositionManagerAddress } from "../config";
|
|
4
|
-
import { AssetEnabled, Dapp, Network } from "../types";
|
|
5
|
-
import { CONTRACT_ADDRESS, MAX_AMOUNT, TEST_POOL } from "./constants";
|
|
6
|
-
import {
|
|
7
|
-
TestingRunParams,
|
|
8
|
-
beforeAfterReset,
|
|
9
|
-
setChainlinkTimeout,
|
|
10
|
-
testingHelper
|
|
11
|
-
} from "./utils/testingHelper";
|
|
12
|
-
import { allowanceDelta, balanceDelta } from "./utils/token";
|
|
13
|
-
import INonfungiblePositionManager from "../abi/INonfungiblePositionManager.json";
|
|
14
|
-
|
|
15
|
-
const testRamsesCL = ({ wallet, network, provider }: TestingRunParams) => {
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
17
|
-
const RAMSES_POSITION_MANGER = nonfungiblePositionManagerAddress[network][
|
|
18
|
-
Dapp.RAMSESCL
|
|
19
|
-
]!;
|
|
20
|
-
|
|
21
|
-
const USDC = CONTRACT_ADDRESS[network].USDC;
|
|
22
|
-
const WETH = CONTRACT_ADDRESS[network].WETH;
|
|
23
|
-
//if other chains then define per network
|
|
24
|
-
const RAM = "0xaaa6c1e32c55a7bfa8066a6fae9b42650f262418";
|
|
25
|
-
const ARB = "0x912ce59144191c1204e64559fe8253a0e49e6548";
|
|
26
|
-
|
|
27
|
-
let dhedge: Dhedge;
|
|
28
|
-
let pool: Pool;
|
|
29
|
-
let ramsesPositionManager: ethers.Contract;
|
|
30
|
-
let tokenId: string;
|
|
31
|
-
jest.setTimeout(100000);
|
|
32
|
-
|
|
33
|
-
describe(`[${network}] Ramses CL tests`, () => {
|
|
34
|
-
beforeAll(async () => {
|
|
35
|
-
// top up ETH (gas)
|
|
36
|
-
await provider.send("hardhat_setBalance", [
|
|
37
|
-
wallet.address,
|
|
38
|
-
"0x100000000000000"
|
|
39
|
-
]);
|
|
40
|
-
dhedge = new Dhedge(wallet, network);
|
|
41
|
-
pool = await dhedge.loadPool(TEST_POOL[network]);
|
|
42
|
-
|
|
43
|
-
// setChainlinkTimeout
|
|
44
|
-
await setChainlinkTimeout({ pool, provider }, 86400 * 365);
|
|
45
|
-
|
|
46
|
-
const newAssets: AssetEnabled[] = [
|
|
47
|
-
{ asset: USDC, isDeposit: true },
|
|
48
|
-
{ asset: WETH, isDeposit: true },
|
|
49
|
-
{
|
|
50
|
-
asset: RAMSES_POSITION_MANGER,
|
|
51
|
-
isDeposit: false
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
asset: ARB,
|
|
55
|
-
isDeposit: false
|
|
56
|
-
}
|
|
57
|
-
];
|
|
58
|
-
await pool.changeAssets(newAssets);
|
|
59
|
-
await pool.approve(Dapp.ONEINCH, USDC, MAX_AMOUNT);
|
|
60
|
-
await pool.trade(Dapp.ONEINCH, USDC, WETH, (2.5 * 1e6).toString());
|
|
61
|
-
|
|
62
|
-
ramsesPositionManager = new ethers.Contract(
|
|
63
|
-
RAMSES_POSITION_MANGER,
|
|
64
|
-
INonfungiblePositionManager.abi,
|
|
65
|
-
pool.signer
|
|
66
|
-
);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
beforeAfterReset({ beforeAll, afterAll, provider });
|
|
70
|
-
|
|
71
|
-
describe("Liquidity", () => {
|
|
72
|
-
it("approves unlimited USDC and WETH on for Velodrome CL", async () => {
|
|
73
|
-
await pool.approveSpender(RAMSES_POSITION_MANGER, USDC, MAX_AMOUNT);
|
|
74
|
-
await pool.approveSpender(RAMSES_POSITION_MANGER, WETH, MAX_AMOUNT);
|
|
75
|
-
const UsdcAllowanceDelta = await allowanceDelta(
|
|
76
|
-
pool.address,
|
|
77
|
-
USDC,
|
|
78
|
-
RAMSES_POSITION_MANGER,
|
|
79
|
-
pool.signer
|
|
80
|
-
);
|
|
81
|
-
await expect(UsdcAllowanceDelta.gt(0));
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it("adds USDC and WETH to a Velodrome CL (mint position)", async () => {
|
|
85
|
-
const usdcBalance = await pool.utils.getBalance(USDC, pool.address);
|
|
86
|
-
const wethBalance = await pool.utils.getBalance(WETH, pool.address);
|
|
87
|
-
await pool.addLiquidityUniswapV3(
|
|
88
|
-
Dapp.RAMSESCL,
|
|
89
|
-
WETH,
|
|
90
|
-
USDC,
|
|
91
|
-
usdcBalance.div(2),
|
|
92
|
-
wethBalance.div(2),
|
|
93
|
-
null,
|
|
94
|
-
null,
|
|
95
|
-
-204460,
|
|
96
|
-
-193470,
|
|
97
|
-
500
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
tokenId = (
|
|
101
|
-
await ramsesPositionManager.tokenOfOwnerByIndex(pool.address, 0)
|
|
102
|
-
).toString();
|
|
103
|
-
expect(tokenId).not.toBe(null);
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
it("increases liquidity in a CL position", async () => {
|
|
107
|
-
const usdcBalance = await pool.utils.getBalance(USDC, pool.address);
|
|
108
|
-
const wethBalance = await pool.utils.getBalance(WETH, pool.address);
|
|
109
|
-
const positionBefore = await ramsesPositionManager.positions(tokenId);
|
|
110
|
-
await pool.increaseLiquidity(
|
|
111
|
-
Dapp.RAMSESCL,
|
|
112
|
-
tokenId,
|
|
113
|
-
usdcBalance.div(2),
|
|
114
|
-
wethBalance.div(2)
|
|
115
|
-
);
|
|
116
|
-
const positionAfter = await ramsesPositionManager.positions(tokenId);
|
|
117
|
-
expect(positionAfter.liquidity.gt(positionBefore.liquidity));
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it("decreases liquidity from a CL position", async () => {
|
|
121
|
-
const positionBefore = await ramsesPositionManager.positions(tokenId);
|
|
122
|
-
await pool.decreaseLiquidity(Dapp.RAMSESCL, tokenId, 50);
|
|
123
|
-
const positionAfter = await ramsesPositionManager.positions(tokenId);
|
|
124
|
-
expect(positionAfter.liquidity.lt(positionBefore.liquidity));
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it("collects fess of a CL position", async () => {
|
|
128
|
-
await provider.send("evm_increaseTime", [24 * 3600 * 3]); // 1 day
|
|
129
|
-
await provider.send("evm_mine", []);
|
|
130
|
-
await pool.claimFees(Dapp.RAMSESCL, tokenId);
|
|
131
|
-
expect((await balanceDelta(pool.address, USDC, pool.signer)).gt(0));
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
it("get rewards of a CL position", async () => {
|
|
135
|
-
await provider.send("evm_increaseTime", [24 * 3600 * 3]); // 1 day
|
|
136
|
-
await provider.send("evm_mine", []);
|
|
137
|
-
await pool.getRewards(Dapp.RAMSESCL, tokenId, [RAM]);
|
|
138
|
-
expect((await balanceDelta(pool.address, RAM, pool.signer)).gt(0));
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it("decreases 100% liquidity and burns a CL position", async () => {
|
|
142
|
-
await pool.decreaseLiquidity(Dapp.RAMSESCL, tokenId, 100);
|
|
143
|
-
const positionAfter = await ramsesPositionManager.balanceOf(
|
|
144
|
-
pool.address
|
|
145
|
-
);
|
|
146
|
-
expect(positionAfter.eq(0));
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
testingHelper({
|
|
153
|
-
network: Network.ARBITRUM,
|
|
154
|
-
testingRun: testRamsesCL
|
|
155
|
-
});
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Dhedge } from "..";
|
|
3
|
-
import { Dapp, Network } from "../types";
|
|
4
|
-
import { TEST_POOL } from "./constants";
|
|
5
|
-
//import { getTxOptions } from "./txOptions";
|
|
6
|
-
|
|
7
|
-
import { wallet } from "./wallet";
|
|
8
|
-
|
|
9
|
-
const TEST_POOL_OP = TEST_POOL.optimism;
|
|
10
|
-
|
|
11
|
-
let dhedge: Dhedge;
|
|
12
|
-
let options: any;
|
|
13
|
-
jest.setTimeout(100000);
|
|
14
|
-
|
|
15
|
-
describe("pool", () => {
|
|
16
|
-
beforeAll(async () => {
|
|
17
|
-
dhedge = new Dhedge(wallet, Network.OPTIMISM);
|
|
18
|
-
//options = await getTxOptions();
|
|
19
|
-
options = { gasLimit: "3000000" };
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("should swap sETH into sUSD on Synthetix", async () => {
|
|
23
|
-
const pool = await dhedge.loadPool(TEST_POOL_OP);
|
|
24
|
-
const result = await pool.trade(
|
|
25
|
-
Dapp.SYNTHETIX,
|
|
26
|
-
"sETH",
|
|
27
|
-
"sUSD",
|
|
28
|
-
"1000000000000000",
|
|
29
|
-
undefined,
|
|
30
|
-
options
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
console.log(result);
|
|
34
|
-
expect(result).not.toBe(null);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Pool, ethers } from "../..";
|
|
3
|
-
import ISynthetixFuturesMarketV2 from "../../abi/ISynthetixFuturesMarketV2.json";
|
|
4
|
-
export async function getDelayedOrders(
|
|
5
|
-
market: string,
|
|
6
|
-
pool: Pool
|
|
7
|
-
): Promise<any> {
|
|
8
|
-
const futuresMarket = new ethers.Contract(
|
|
9
|
-
market,
|
|
10
|
-
ISynthetixFuturesMarketV2.abi,
|
|
11
|
-
pool.signer
|
|
12
|
-
);
|
|
13
|
-
return await futuresMarket.delayedOrders(pool.address);
|
|
14
|
-
}
|