@gainsnetwork/sdk 1.4.4 → 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.
|
@@ -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
|
+
};
|