@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
- 419, 420, 421, 422, 423, 424,
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
- multiCollatDiamondContract.getAllTrades(offset, offset + batchSize),
41
- multiCollatDiamondContract.getAllTradeInfos(offset, offset + batchSize),
42
- multiCollatDiamondContract.getAllTradesLiquidationParams(offset, offset + batchSize),
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
+ };
@@ -1,3 +1,4 @@
1
+ /// <reference types="mocha" />
1
2
  import type { GNSMultiCollatDiamond } from "../../../contracts/types/generated";
2
3
  import { BorrowingFeeV2 } from ".";
3
4
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gainsnetwork/sdk",
3
- "version": "1.4.4-rc1",
3
+ "version": "1.4.5",
4
4
  "description": "Gains Network SDK",
5
5
  "main": "./lib/index.js",
6
6
  "files": [