@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
- 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",
3
+ "version": "1.4.5",
4
4
  "description": "Gains Network SDK",
5
5
  "main": "./lib/index.js",
6
6
  "files": [