@gainsnetwork/sdk 1.4.4-rc1 → 1.4.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/lib/constants.js
CHANGED
|
@@ -485,7 +485,7 @@ exports.delistedPairIxs = new Set([
|
|
|
485
485
|
160, 163, 170, 179, 182, 183, 188, 189, 190, 208, 209, 225, 229, 230, 231,
|
|
486
486
|
238, 239, 241, 250, 253, 254, 258, 270, 275, 276, 278, 279, 282, 285, 290,
|
|
487
487
|
294, 296, 305, 311, 330, 349, 352, 353, 354, 355, 357, 365, 366, 395, 396,
|
|
488
|
-
|
|
488
|
+
424,
|
|
489
489
|
]);
|
|
490
490
|
exports.delistedGroupsIxs = new Set([]);
|
|
491
491
|
exports.DEFAULT_PROTECTION_CLOSE_FACTOR = 1;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TradeContainer, TradeContainerRaw } from "../../trade/types";
|
|
2
2
|
import { Contracts, BlockTag } from "../../contracts/types";
|
|
3
3
|
export type FetchOpenPairTradesOverrides = {
|
|
4
|
+
traders?: string[];
|
|
4
5
|
batchSize?: number;
|
|
5
6
|
useMulticall?: boolean;
|
|
6
7
|
includeLimits?: boolean;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fetchOpenPairTradesRaw = exports.fetchOpenPairTrades = void 0;
|
|
4
4
|
const ethcall_1 = require("ethcall");
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
5
6
|
const trade_1 = require("../../trade");
|
|
6
7
|
const fetchOpenPairTrades = async (contracts, overrides = {}) => {
|
|
7
8
|
const rawTrades = await (0, exports.fetchOpenPairTradesRaw)(contracts, overrides);
|
|
@@ -15,12 +16,11 @@ const fetchOpenPairTrades = async (contracts, overrides = {}) => {
|
|
|
15
16
|
return rawTrades.map(rawTrade => _prepareTradeContainer(rawTrade.trade, rawTrade.tradeInfo, rawTrade.liquidationParams, rawTrade.initialAccFees, rawTrade.tradeFeesData, rawTrade.uiRealizedPnlData, collateralConfigs[parseInt(rawTrade.trade.collateralIndex.toString()) - 1]));
|
|
16
17
|
};
|
|
17
18
|
exports.fetchOpenPairTrades = fetchOpenPairTrades;
|
|
18
|
-
// @todo rename
|
|
19
19
|
const fetchOpenPairTradesRaw = async (contracts, overrides = {}) => {
|
|
20
20
|
if (!contracts) {
|
|
21
21
|
return [];
|
|
22
22
|
}
|
|
23
|
-
const { batchSize = 50, includeLimits = true, useMulticall = false, includeUIRealizedPnlData = true, } = overrides;
|
|
23
|
+
const { batchSize = 50, includeLimits = true, useMulticall = false, includeUIRealizedPnlData = true, traders = [], } = overrides;
|
|
24
24
|
const { gnsMultiCollatDiamond: multiCollatDiamondContract } = contracts;
|
|
25
25
|
try {
|
|
26
26
|
const multicallCtx = {
|
|
@@ -29,6 +29,8 @@ const fetchOpenPairTradesRaw = async (contracts, overrides = {}) => {
|
|
|
29
29
|
...multiCollatDiamondContract.interface.fragments,
|
|
30
30
|
]),
|
|
31
31
|
};
|
|
32
|
+
const validatedAddresses = _validateAddresses(traders || []);
|
|
33
|
+
const forTraders = validatedAddresses.length > 0;
|
|
32
34
|
if (useMulticall) {
|
|
33
35
|
await multicallCtx.provider.init(multiCollatDiamondContract.provider);
|
|
34
36
|
}
|
|
@@ -36,11 +38,17 @@ const fetchOpenPairTradesRaw = async (contracts, overrides = {}) => {
|
|
|
36
38
|
let running = true;
|
|
37
39
|
let offset = 0;
|
|
38
40
|
while (running) {
|
|
39
|
-
const [trades, tradeInfos, tradeLiquidationParams] = await Promise.all(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
const [trades, tradeInfos, tradeLiquidationParams] = await Promise.all(forTraders
|
|
42
|
+
? [
|
|
43
|
+
multiCollatDiamondContract.getAllTradesForTraders(validatedAddresses, offset, offset + batchSize),
|
|
44
|
+
multiCollatDiamondContract.getAllTradeInfosForTraders(validatedAddresses, offset, offset + batchSize),
|
|
45
|
+
multiCollatDiamondContract.getAllTradesLiquidationParamsForTraders(validatedAddresses, offset, offset + batchSize),
|
|
46
|
+
]
|
|
47
|
+
: [
|
|
48
|
+
multiCollatDiamondContract.getAllTrades(offset, offset + batchSize),
|
|
49
|
+
multiCollatDiamondContract.getAllTradeInfos(offset, offset + batchSize),
|
|
50
|
+
multiCollatDiamondContract.getAllTradesLiquidationParams(offset, offset + batchSize),
|
|
51
|
+
]);
|
|
44
52
|
const fundingFeesCallParams = [
|
|
45
53
|
[],
|
|
46
54
|
[], // indices
|
|
@@ -153,3 +161,12 @@ const _prepareTradeContainer = (trade, tradeInfo, tradeLiquidationParams, tradeI
|
|
|
153
161
|
: undefined,
|
|
154
162
|
};
|
|
155
163
|
};
|
|
164
|
+
/**
|
|
165
|
+
* Filters out duplicate addresses. Throws error if an invalid address is provided.
|
|
166
|
+
* @param addresses
|
|
167
|
+
*/
|
|
168
|
+
const _validateAddresses = (addresses) => {
|
|
169
|
+
return [
|
|
170
|
+
...new Set(addresses.map(address => ethers_1.ethers.utils.getAddress(address))),
|
|
171
|
+
];
|
|
172
|
+
};
|