@gainsnetwork/sdk 1.3.0-rc3 → 1.3.0-rc6
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/backend/globalTrades/index.js +10 -10
- package/lib/backend/tradingVariables/converter.js +58 -57
- package/lib/backend/tradingVariables/index.js +6 -7
- package/lib/contracts/addresses.js +4 -1
- package/lib/contracts/index.d.ts +1 -1
- package/lib/contracts/index.js +3 -3
- package/lib/contracts/utils/borrowingFees.js +9 -20
- package/lib/contracts/utils/openTrades.js +11 -20
- package/lib/contracts/utils/pairs.js +21 -30
- package/lib/markets/forex.js +1 -1
- package/lib/markets/leverage/builder.js +2 -2
- package/lib/markets/price/index.d.ts +1 -0
- package/lib/markets/price/index.js +1 -0
- package/lib/markets/price/types.d.ts +27 -0
- package/lib/pricing/depthBands.d.ts +1 -1
- package/lib/pricing/depthBands.js +7 -5
- package/lib/trade/fees/borrowing/builder.js +2 -3
- package/lib/trade/fees/borrowing/converter.js +5 -1
- package/lib/trade/fees/borrowing/index.js +5 -5
- package/lib/trade/fees/borrowingV2/builder.js +3 -4
- package/lib/trade/fees/borrowingV2/converter.js +1 -1
- package/lib/trade/fees/borrowingV2/fetcher.js +26 -32
- package/lib/trade/fees/borrowingV2/index.js +3 -3
- package/lib/trade/fees/converter.js +22 -22
- package/lib/trade/fees/fundingFees/builder.js +6 -7
- package/lib/trade/fees/fundingFees/converter.js +1 -1
- package/lib/trade/fees/fundingFees/fetcher.js +16 -25
- package/lib/trade/fees/fundingFees/index.js +2 -3
- package/lib/trade/fees/tiers/index.js +1 -2
- package/lib/trade/fees/trading/index.js +5 -3
- package/lib/trade/liquidation/builder.js +1 -2
- package/lib/trade/liquidation/index.js +4 -6
- package/lib/trade/oiWindows.js +1 -2
- package/lib/trade/pnl/builder.js +1 -2
- package/lib/trade/pnl/converter.js +1 -1
- package/lib/trade/pnl/index.js +4 -7
- package/lib/trade/priceImpact/close/builder.js +1 -2
- package/lib/trade/priceImpact/close/index.js +4 -1
- package/lib/trade/priceImpact/cumulVol/builder.js +20 -10
- package/lib/trade/priceImpact/cumulVol/index.d.ts +3 -3
- package/lib/trade/priceImpact/cumulVol/index.js +47 -20
- package/lib/trade/priceImpact/open/builder.js +1 -2
- package/lib/trade/priceImpact/open/index.js +7 -1
- package/lib/trade/priceImpact/skew/builder.js +2 -3
- package/lib/trade/priceImpact/skew/converter.js +1 -1
- package/lib/trade/priceImpact/skew/fetcher.js +24 -33
- package/package.json +2 -2
|
@@ -25,11 +25,11 @@ const transformGlobalTrades = (rawTrades, pairs, currentAddress, collaterals) =>
|
|
|
25
25
|
_allLimitOrders.set(t.trade.user, new Map());
|
|
26
26
|
}
|
|
27
27
|
const traderMap_all = _allLimitOrders.get(t.trade.user);
|
|
28
|
-
if (
|
|
29
|
-
traderMap_all
|
|
28
|
+
if (traderMap_all?.get(t.trade.pairIndex) === undefined) {
|
|
29
|
+
traderMap_all?.set(t.trade.pairIndex, new Map());
|
|
30
30
|
}
|
|
31
|
-
const traderPairMap_all = traderMap_all
|
|
32
|
-
traderPairMap_all
|
|
31
|
+
const traderPairMap_all = traderMap_all?.get(t.trade.pairIndex);
|
|
32
|
+
traderPairMap_all?.set(t.trade.index, t);
|
|
33
33
|
if (t.trade.user.toUpperCase() !== currentAddress.toUpperCase()) {
|
|
34
34
|
continue;
|
|
35
35
|
}
|
|
@@ -37,7 +37,7 @@ const transformGlobalTrades = (rawTrades, pairs, currentAddress, collaterals) =>
|
|
|
37
37
|
_limitOrders.set(t.trade.pairIndex, new Map());
|
|
38
38
|
}
|
|
39
39
|
const traderPairMap = _limitOrders.get(t.trade.pairIndex);
|
|
40
|
-
traderPairMap
|
|
40
|
+
traderPairMap?.set(t.trade.index, t);
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
43
43
|
const t = r[s];
|
|
@@ -45,11 +45,11 @@ const transformGlobalTrades = (rawTrades, pairs, currentAddress, collaterals) =>
|
|
|
45
45
|
_allTrades.set(t.trade.user, new Map());
|
|
46
46
|
}
|
|
47
47
|
const traderMap_all = _allTrades.get(t.trade.user);
|
|
48
|
-
if (
|
|
49
|
-
traderMap_all
|
|
48
|
+
if (traderMap_all?.get(t.trade.pairIndex) === undefined) {
|
|
49
|
+
traderMap_all?.set(t.trade.pairIndex, new Map());
|
|
50
50
|
}
|
|
51
|
-
const traderPairMap_all = traderMap_all
|
|
52
|
-
traderPairMap_all
|
|
51
|
+
const traderPairMap_all = traderMap_all?.get(t.trade.pairIndex);
|
|
52
|
+
traderPairMap_all?.set(t.trade.index, t);
|
|
53
53
|
if (t.trade.user.toUpperCase() !== currentAddress.toUpperCase()) {
|
|
54
54
|
continue;
|
|
55
55
|
}
|
|
@@ -57,7 +57,7 @@ const transformGlobalTrades = (rawTrades, pairs, currentAddress, collaterals) =>
|
|
|
57
57
|
_trades.set(t.trade.pairIndex, new Map());
|
|
58
58
|
}
|
|
59
59
|
const traderPairMap = _trades.get(t.trade.pairIndex);
|
|
60
|
-
traderPairMap
|
|
60
|
+
traderPairMap?.set(t.trade.index, t);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
returnObject.trades = _trades;
|
|
@@ -6,38 +6,40 @@ Object.defineProperty(exports, "convertLiquidationParams", { enumerable: true, g
|
|
|
6
6
|
const converter_1 = require("../../trade/priceImpact/skew/converter");
|
|
7
7
|
const converter_2 = require("../../trade/priceImpact/cumulVol/converter");
|
|
8
8
|
const depthBands_1 = require("../../pricing/depthBands");
|
|
9
|
-
const convertFees = (fees) => fees
|
|
9
|
+
const convertFees = (fees) => fees?.map(fee => convertFee(fee));
|
|
10
10
|
exports.convertFees = convertFees;
|
|
11
|
-
const convertCollateral = (collateral) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
11
|
+
const convertCollateral = (collateral) => ({
|
|
12
|
+
pairBorrowingFees: collateral.borrowingFees?.v1 !== undefined
|
|
13
|
+
? (0, exports.convertPairBorrowingFees)(collateral.borrowingFees.v1)
|
|
14
|
+
: [],
|
|
15
|
+
groupBorrowingFees: collateral.borrowingFees?.v1 !== undefined
|
|
16
|
+
? (0, exports.convertGroupBorrowingFees)(collateral.borrowingFees.v1)
|
|
17
|
+
: [],
|
|
18
|
+
collateral: collateral.collateral,
|
|
19
|
+
collateralConfig: (0, exports.convertCollateralConfig)(collateral),
|
|
20
|
+
collateralIndex: collateral.collateralIndex,
|
|
21
|
+
gToken: collateral.gToken,
|
|
22
|
+
isActive: true,
|
|
23
|
+
prices: collateral.prices,
|
|
24
|
+
symbol: collateral.symbol,
|
|
25
|
+
pairBorrowingFeesV2: {
|
|
26
|
+
params: (0, __1.convertBorrowingFeeParamsArrayV2)(collateral.borrowingFees?.v2
|
|
27
|
+
?.pairParams),
|
|
28
|
+
data: (0, __1.convertPairBorrowingFeeDataArrayV2)(collateral.borrowingFees?.v2
|
|
29
|
+
?.pairData),
|
|
30
|
+
},
|
|
31
|
+
pairFundingFees: {
|
|
32
|
+
globalParams: (0, __1.convertPairGlobalParamsArray)(collateral.fundingFees
|
|
33
|
+
?.pairGlobalParams),
|
|
34
|
+
params: (0, __1.convertFundingFeeParamsArray)(collateral.fundingFees
|
|
35
|
+
?.pairParams),
|
|
36
|
+
data: (0, __1.convertPairFundingFeeDataArray)(collateral.fundingFees
|
|
37
|
+
?.pairData),
|
|
38
|
+
},
|
|
39
|
+
pairOis: (0, __1.convertPairOiArray)(collateral.pairOis, parseInt(collateral.collateralConfig.precision)),
|
|
40
|
+
pairSkewDepths: (0, exports.convertPairSkewDepths)(collateral.pairSkewDepths),
|
|
41
|
+
});
|
|
42
|
+
const convertCollaterals = (collaterals) => collaterals?.map(collateral => convertCollateral(collateral));
|
|
41
43
|
exports.convertCollaterals = convertCollaterals;
|
|
42
44
|
const convertFee = (fee) => ({
|
|
43
45
|
totalPositionSizeFeeP: parseFloat(fee.totalPositionSizeFeeP) / 1e12,
|
|
@@ -45,18 +47,19 @@ const convertFee = (fee) => ({
|
|
|
45
47
|
oraclePositionSizeFeeP: parseFloat(fee.oraclePositionSizeFeeP) / 1e12,
|
|
46
48
|
minPositionSizeUsd: parseFloat(fee.minPositionSizeUsd) / 1e3,
|
|
47
49
|
});
|
|
48
|
-
const convertOpenInterests = (interests) => interests
|
|
50
|
+
const convertOpenInterests = (interests) => interests?.map(interest => convertOpenInterest(interest));
|
|
49
51
|
exports.convertOpenInterests = convertOpenInterests;
|
|
50
52
|
const convertOpenInterest = (interest) => ({
|
|
51
53
|
long: parseFloat(interest.beforeV10.long) / 1e10,
|
|
52
54
|
short: parseFloat(interest.beforeV10.short) / 1e10,
|
|
53
55
|
max: parseFloat(interest.beforeV10.max) / 1e10,
|
|
54
56
|
});
|
|
55
|
-
const convertPairDepthBands = (pairDepthBands) =>
|
|
57
|
+
const convertPairDepthBands = (pairDepthBands) => pairDepthBands?.map(bands => (0, converter_2.convertPairDepthBandsFromSlots)(BigInt(bands.aboveSlot1), BigInt(bands.aboveSlot2), BigInt(bands.belowSlot1), BigInt(bands.belowSlot2))) || [];
|
|
56
58
|
exports.convertPairDepthBands = convertPairDepthBands;
|
|
57
59
|
const convertDepthBandsMapping = (mapping) => {
|
|
58
60
|
// First decode the raw slots to get bands in basis points
|
|
59
61
|
const bandsBps = (0, depthBands_1.decodeDepthBandsMapping)(BigInt(mapping.slot1), BigInt(mapping.slot2));
|
|
62
|
+
console.log("bandsBps", bandsBps);
|
|
60
63
|
// Convert from basis points to 0-1 range
|
|
61
64
|
return {
|
|
62
65
|
bands: bandsBps.map(bps => bps / 10000),
|
|
@@ -69,7 +72,7 @@ const convertPairSkewDepths = (pairSkewDepths) => {
|
|
|
69
72
|
return (0, converter_1.convertPairSkewDepths)(pairSkewDepths);
|
|
70
73
|
};
|
|
71
74
|
exports.convertPairSkewDepths = convertPairSkewDepths;
|
|
72
|
-
const convertPairBorrowingFees = (pairParams) => pairParams
|
|
75
|
+
const convertPairBorrowingFees = (pairParams) => pairParams?.pairs.map(pairParam => convertPairBorrowingFee(pairParam));
|
|
73
76
|
exports.convertPairBorrowingFees = convertPairBorrowingFees;
|
|
74
77
|
const convertPairGroupBorrowingFee = (pairParam) => ({
|
|
75
78
|
groupIndex: parseInt(pairParam.groupIndex),
|
|
@@ -93,9 +96,9 @@ const convertPairBorrowingFee = (pairParams) => ({
|
|
|
93
96
|
short: parseFloat(pairParams.oi.beforeV10.short) / 1e10 || 0,
|
|
94
97
|
},
|
|
95
98
|
feeExponent: parseInt(pairParams.feeExponent) || 0,
|
|
96
|
-
feePerBlockCap: (0, exports.convertFeePerBlockCap)(pairParams
|
|
99
|
+
feePerBlockCap: (0, exports.convertFeePerBlockCap)(pairParams?.feePerBlockCap),
|
|
97
100
|
});
|
|
98
|
-
const convertGroupBorrowingFees = (pairParams) => pairParams
|
|
101
|
+
const convertGroupBorrowingFees = (pairParams) => pairParams?.groups.map(pairParam => convertGroupBorrowingFee(pairParam));
|
|
99
102
|
exports.convertGroupBorrowingFees = convertGroupBorrowingFees;
|
|
100
103
|
const convertGroupBorrowingFee = (pairParams) => ({
|
|
101
104
|
oi: {
|
|
@@ -109,14 +112,16 @@ const convertGroupBorrowingFee = (pairParams) => ({
|
|
|
109
112
|
accLastUpdatedBlock: parseInt(pairParams.accLastUpdatedBlock),
|
|
110
113
|
feeExponent: parseInt(pairParams.feeExponent) || 0,
|
|
111
114
|
});
|
|
112
|
-
const convertTradingGroups = (groups) => groups
|
|
115
|
+
const convertTradingGroups = (groups) => groups?.map(group => convertTradingGroup(group));
|
|
113
116
|
exports.convertTradingGroups = convertTradingGroups;
|
|
114
117
|
const convertTradingGroup = (group) => ({
|
|
115
118
|
maxLeverage: parseFloat(group.maxLeverage) / 1e3,
|
|
116
119
|
minLeverage: parseFloat(group.minLeverage) / 1e3,
|
|
117
120
|
name: group.name,
|
|
118
121
|
});
|
|
119
|
-
const convertTradingPairs = (pairs) => pairs
|
|
122
|
+
const convertTradingPairs = (pairs) => pairs
|
|
123
|
+
?.filter(pair => pair.from !== "")
|
|
124
|
+
.map((pair, index) => convertTradingPair(pair, index));
|
|
120
125
|
exports.convertTradingPairs = convertTradingPairs;
|
|
121
126
|
const convertTradingPair = (pair, index) => ({
|
|
122
127
|
name: (0, exports.convertPairName)(pair),
|
|
@@ -128,7 +133,7 @@ const convertTradingPair = (pair, index) => ({
|
|
|
128
133
|
groupIndex: parseInt(pair.groupIndex),
|
|
129
134
|
spreadP: parseFloat(pair.spreadP) / 1e10,
|
|
130
135
|
});
|
|
131
|
-
const convertTradesAndLimitOrders = (allItems, collaterals) => allItems
|
|
136
|
+
const convertTradesAndLimitOrders = (allItems, collaterals) => allItems?.map(item => {
|
|
132
137
|
return (0, exports.convertTradeContainer)(item, collaterals);
|
|
133
138
|
});
|
|
134
139
|
exports.convertTradesAndLimitOrders = convertTradesAndLimitOrders;
|
|
@@ -174,11 +179,10 @@ const convertPairFactor = (pairFactor) => ({
|
|
|
174
179
|
});
|
|
175
180
|
exports.convertPairFactor = convertPairFactor;
|
|
176
181
|
const convertTrade = (trade, collaterals) => {
|
|
177
|
-
var _a;
|
|
178
182
|
const { long, user } = trade;
|
|
179
183
|
const collateralIndex = parseInt(trade.collateralIndex);
|
|
180
184
|
const collateral = collaterals[collateralIndex - 1];
|
|
181
|
-
const decimals =
|
|
185
|
+
const decimals = collateral?.collateralConfig?.decimals || 18;
|
|
182
186
|
return {
|
|
183
187
|
user,
|
|
184
188
|
index: parseInt(trade.index),
|
|
@@ -188,7 +192,7 @@ const convertTrade = (trade, collaterals) => {
|
|
|
188
192
|
isOpen: trade.isOpen,
|
|
189
193
|
collateralIndex,
|
|
190
194
|
tradeType: parseInt(trade.tradeType),
|
|
191
|
-
collateralAmount: parseFloat(trade.collateralAmount) /
|
|
195
|
+
collateralAmount: parseFloat(trade.collateralAmount) / 10 ** decimals,
|
|
192
196
|
openPrice: parseFloat(trade.openPrice) / 1e10,
|
|
193
197
|
sl: parseFloat(trade.sl) / 1e10,
|
|
194
198
|
tp: parseFloat(trade.tp) / 1e10,
|
|
@@ -272,7 +276,7 @@ const convertPairOi = (collateral) => ({
|
|
|
272
276
|
});
|
|
273
277
|
exports.convertPairOi = convertPairOi;
|
|
274
278
|
const convertOiWindows = (oiWindows) => {
|
|
275
|
-
return oiWindows
|
|
279
|
+
return oiWindows?.map(pairWindows => {
|
|
276
280
|
const converted = {};
|
|
277
281
|
for (const [key, oiWindow] of Object.entries(pairWindows)) {
|
|
278
282
|
converted[key] = (0, exports.convertPairOi)(oiWindow);
|
|
@@ -295,17 +299,14 @@ const convertCollateralConfig = (collateral) => ({
|
|
|
295
299
|
decimals: collateral.collateralConfig.decimals,
|
|
296
300
|
});
|
|
297
301
|
exports.convertCollateralConfig = convertCollateralConfig;
|
|
298
|
-
const convertFeeTiers = (feeTiersBackend) => {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
currentDay: (feeTiersBackend === null || feeTiersBackend === void 0 ? void 0 : feeTiersBackend.currentDay) || 0,
|
|
307
|
-
});
|
|
308
|
-
};
|
|
302
|
+
const convertFeeTiers = (feeTiersBackend) => ({
|
|
303
|
+
tiers: feeTiersBackend?.tiers.map(tier => ({
|
|
304
|
+
feeMultiplier: Number(tier.feeMultiplier) / 1e3,
|
|
305
|
+
pointsThreshold: parseFloat(tier.pointsThreshold),
|
|
306
|
+
})),
|
|
307
|
+
multipliers: feeTiersBackend?.multipliers?.map(mult => parseFloat(mult) / 1e3) || [],
|
|
308
|
+
currentDay: feeTiersBackend?.currentDay || 0,
|
|
309
|
+
});
|
|
309
310
|
exports.convertFeeTiers = convertFeeTiers;
|
|
310
311
|
const convertTraderFeeTiers = (traderFeeTiers) => ({
|
|
311
312
|
traderEnrollment: {
|
|
@@ -330,11 +331,11 @@ const convertGlobalTradeFeeParams = (fee) => ({
|
|
|
330
331
|
gTokenFeeP: parseFloat(fee.gTokenFeeP) / 1e5,
|
|
331
332
|
});
|
|
332
333
|
exports.convertGlobalTradeFeeParams = convertGlobalTradeFeeParams;
|
|
333
|
-
const convertMaxLeverages = (maxLeverages) => maxLeverages
|
|
334
|
+
const convertMaxLeverages = (maxLeverages) => maxLeverages?.map(maxLeverage => parseFloat(maxLeverage) / 1e3);
|
|
334
335
|
exports.convertMaxLeverages = convertMaxLeverages;
|
|
335
336
|
const convertFeePerBlockCap = (feeCap) => ({
|
|
336
|
-
minP:
|
|
337
|
-
maxP:
|
|
337
|
+
minP: feeCap?.minP ? parseFloat(feeCap.minP.toString()) / 1e3 / 100 : 0,
|
|
338
|
+
maxP: feeCap?.maxP ? parseFloat(feeCap.maxP.toString()) / 1e3 / 100 : 1,
|
|
338
339
|
});
|
|
339
340
|
exports.convertFeePerBlockCap = convertFeePerBlockCap;
|
|
340
341
|
const convertPairName = (pair) => {
|
|
@@ -18,7 +18,6 @@ exports.transformGlobalTradingVariables = void 0;
|
|
|
18
18
|
const converter_1 = require("./converter");
|
|
19
19
|
const trade_1 = require("../../trade");
|
|
20
20
|
const transformGlobalTradingVariables = (rawData) => {
|
|
21
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
22
21
|
const globalTradingVariables = {
|
|
23
22
|
collaterals: (0, converter_1.convertCollaterals)(rawData.collaterals),
|
|
24
23
|
pairs: (0, converter_1.convertTradingPairs)(rawData.pairs),
|
|
@@ -31,13 +30,13 @@ const transformGlobalTradingVariables = (rawData) => {
|
|
|
31
30
|
stocksClosed: !rawData.isStocksOpen,
|
|
32
31
|
indicesClosed: !rawData.isIndicesOpen,
|
|
33
32
|
commoditiesClosed: !rawData.isCommoditiesOpen,
|
|
34
|
-
pairDepthBands:
|
|
33
|
+
pairDepthBands: rawData.pairInfos?.pairDepthBands !== undefined
|
|
35
34
|
? (0, converter_1.convertPairDepthBands)(rawData.pairInfos.pairDepthBands)
|
|
36
35
|
: [],
|
|
37
36
|
depthBandsMapping: rawData.depthBandsMapping !== undefined
|
|
38
37
|
? (0, converter_1.convertDepthBandsMapping)(rawData.depthBandsMapping)
|
|
39
38
|
: { bands: [] },
|
|
40
|
-
pairMaxLeverages:
|
|
39
|
+
pairMaxLeverages: rawData.pairInfos?.maxLeverages !== undefined
|
|
41
40
|
? (0, converter_1.convertMaxLeverages)(rawData.pairInfos.maxLeverages)
|
|
42
41
|
: [],
|
|
43
42
|
maxNegativePnlOnOpenP: (rawData.maxNegativePnlOnOpenP && rawData.maxNegativePnlOnOpenP / 1e10) ||
|
|
@@ -50,11 +49,11 @@ const transformGlobalTradingVariables = (rawData) => {
|
|
|
50
49
|
: [],
|
|
51
50
|
feeTiers: (0, converter_1.convertFeeTiers)(rawData.feeTiers),
|
|
52
51
|
liquidationParams: {
|
|
53
|
-
groups:
|
|
54
|
-
pairs:
|
|
52
|
+
groups: rawData.liquidationParams?.groups?.map(liqParams => (0, trade_1.convertLiquidationParams)(liqParams)) || [],
|
|
53
|
+
pairs: rawData.liquidationParams?.pairs?.map(liqParams => (0, trade_1.convertLiquidationParams)(liqParams)) || [],
|
|
55
54
|
},
|
|
56
55
|
counterTradeSettings: (0, trade_1.convertCounterTradeSettingsArray)(rawData.counterTradeSettings),
|
|
57
|
-
pairFactors:
|
|
56
|
+
pairFactors: rawData.pairInfos?.pairFactors?.map(factor => (0, converter_1.convertPairFactor)(factor)) || [],
|
|
58
57
|
globalTradeFeeParams: rawData.globalTradeFeeParams
|
|
59
58
|
? (0, converter_1.convertGlobalTradeFeeParams)(rawData.globalTradeFeeParams)
|
|
60
59
|
: undefined,
|
|
@@ -63,7 +62,7 @@ const transformGlobalTradingVariables = (rawData) => {
|
|
|
63
62
|
const currentBlock = (rawData.currentBlock > -1 && rawData.currentBlock) || undefined;
|
|
64
63
|
const l1BlockNumber = (rawData.currentL1Block > -1 && rawData.currentL1Block) || undefined;
|
|
65
64
|
const pairIndexes = {};
|
|
66
|
-
for (let i = 0; i <
|
|
65
|
+
for (let i = 0; i < rawData.pairs?.length; i++) {
|
|
67
66
|
pairIndexes[rawData.pairs[i].from + "/" + rawData.pairs[i].to] = i;
|
|
68
67
|
}
|
|
69
68
|
if (globalTradingVariables.collaterals !== undefined) {
|
|
@@ -15,7 +15,10 @@ const getContractAddressesForChain = (chainId, collateral = types_1.CollateralTy
|
|
|
15
15
|
if (!_addresses[chainIdMapping][collateral]) {
|
|
16
16
|
throw new Error(`Unknown collateral (${collateral}) for chain id (${chainId}). No known contracts have been deployed for this collateral.`);
|
|
17
17
|
}
|
|
18
|
-
return
|
|
18
|
+
return {
|
|
19
|
+
..._addresses[chainIdMapping]["global"],
|
|
20
|
+
..._addresses[chainIdMapping][collateral],
|
|
21
|
+
};
|
|
19
22
|
};
|
|
20
23
|
exports.getContractAddressesForChain = getContractAddressesForChain;
|
|
21
24
|
const getCollateralByAddressForChain = (chainId, address) => {
|
package/lib/contracts/index.d.ts
CHANGED
|
@@ -11,4 +11,4 @@ export declare const COLLATERAL_TO_CHAIN_COLLATERAL_INDEX: Record<ChainId, Parti
|
|
|
11
11
|
export declare const COLLATERAL_TO_COLLATERAL_INDEX: Record<CollateralTypes, number>;
|
|
12
12
|
export * from "./utils";
|
|
13
13
|
export * from "./addresses";
|
|
14
|
-
export { CollateralTypes } from "./types";
|
|
14
|
+
export { CollateralTypes, ChainId } from "./types";
|
package/lib/contracts/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.CollateralTypes = exports.COLLATERAL_TO_COLLATERAL_INDEX = exports.COLLATERAL_TO_CHAIN_COLLATERAL_INDEX = exports.getCollateralIndexAndContractsForChainByRequester = exports.getContractsForChainByRequester = exports.getContractsForChain = void 0;
|
|
17
|
+
exports.ChainId = exports.CollateralTypes = exports.COLLATERAL_TO_COLLATERAL_INDEX = exports.COLLATERAL_TO_CHAIN_COLLATERAL_INDEX = exports.getCollateralIndexAndContractsForChainByRequester = exports.getContractsForChainByRequester = exports.getContractsForChain = void 0;
|
|
18
18
|
const addresses_1 = require("./addresses");
|
|
19
19
|
const factories_1 = require("./types/generated/factories");
|
|
20
20
|
const types_1 = require("./types");
|
|
@@ -34,11 +34,10 @@ const getContractsForChainByRequester = (chainId, requester, signerOrProvider) =
|
|
|
34
34
|
};
|
|
35
35
|
exports.getContractsForChainByRequester = getContractsForChainByRequester;
|
|
36
36
|
const getCollateralIndexAndContractsForChainByRequester = (chainId, requester, signerOrProvider) => {
|
|
37
|
-
var _a;
|
|
38
37
|
const collateral = (0, addresses_1.getCollateralByAddressForChain)(chainId, requester);
|
|
39
38
|
return {
|
|
40
39
|
contracts: (0, exports.getContractsForChain)(chainId, signerOrProvider, collateral),
|
|
41
|
-
collateralIndex:
|
|
40
|
+
collateralIndex: exports.COLLATERAL_TO_CHAIN_COLLATERAL_INDEX[chainId]?.[collateral] ||
|
|
42
41
|
0,
|
|
43
42
|
};
|
|
44
43
|
};
|
|
@@ -83,3 +82,4 @@ __exportStar(require("./utils"), exports);
|
|
|
83
82
|
__exportStar(require("./addresses"), exports);
|
|
84
83
|
var types_2 = require("./types");
|
|
85
84
|
Object.defineProperty(exports, "CollateralTypes", { enumerable: true, get: function () { return types_2.CollateralTypes; } });
|
|
85
|
+
Object.defineProperty(exports, "ChainId", { enumerable: true, get: function () { return types_2.ChainId; } });
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.fetchAllPairAndGroupBorrowingFees = exports.fetchGroupBorrowingFees = exports.fetchAllPairBorrowingFees = exports.getBorrowingGroupName = void 0;
|
|
13
4
|
const trade_1 = require("../../trade");
|
|
@@ -31,24 +22,22 @@ const getBorrowingGroupName = (groupIndex) => {
|
|
|
31
22
|
return groupNamesByIndex[groupIndex - 1] || "Unknown";
|
|
32
23
|
};
|
|
33
24
|
exports.getBorrowingGroupName = getBorrowingGroupName;
|
|
34
|
-
const fetchAllPairBorrowingFees = (contract, collateralIndex) =>
|
|
35
|
-
const [pairs, pairOi, pairGroups] =
|
|
36
|
-
const feeCaps =
|
|
25
|
+
const fetchAllPairBorrowingFees = async (contract, collateralIndex) => {
|
|
26
|
+
const [pairs, pairOi, pairGroups] = await contract.getAllBorrowingPairs(collateralIndex);
|
|
27
|
+
const feeCaps = await contract.getBorrowingPairFeePerBlockCaps(collateralIndex, [...Array(pairs.length).keys()]);
|
|
37
28
|
return (0, trade_1.convertPairBorrowingFees)([pairs, pairOi, pairGroups, feeCaps]);
|
|
38
|
-
}
|
|
29
|
+
};
|
|
39
30
|
exports.fetchAllPairBorrowingFees = fetchAllPairBorrowingFees;
|
|
40
|
-
const fetchGroupBorrowingFees = (contract, collateralIndex, groupIxs) =>
|
|
41
|
-
return (0, trade_1.convertGroupBorrowingFees)(yield contract.getBorrowingGroups(collateralIndex, groupIxs));
|
|
42
|
-
});
|
|
31
|
+
const fetchGroupBorrowingFees = async (contract, collateralIndex, groupIxs) => (0, trade_1.convertGroupBorrowingFees)(await contract.getBorrowingGroups(collateralIndex, groupIxs));
|
|
43
32
|
exports.fetchGroupBorrowingFees = fetchGroupBorrowingFees;
|
|
44
|
-
const fetchAllPairAndGroupBorrowingFees = (contract, collateralIndex) =>
|
|
45
|
-
const pairs =
|
|
33
|
+
const fetchAllPairAndGroupBorrowingFees = async (contract, collateralIndex) => {
|
|
34
|
+
const pairs = await (0, exports.fetchAllPairBorrowingFees)(contract, collateralIndex);
|
|
46
35
|
const groupIxs = [
|
|
47
36
|
...new Set(pairs
|
|
48
37
|
.map(value => value.groups.map(value => value.groupIndex))
|
|
49
38
|
.reduce((acc, value) => acc.concat(value), [])),
|
|
50
39
|
].sort((a, b) => a - b);
|
|
51
|
-
const groups =
|
|
40
|
+
const groups = await (0, exports.fetchGroupBorrowingFees)(contract, collateralIndex, groupIxs);
|
|
52
41
|
return { pairs, groups };
|
|
53
|
-
}
|
|
42
|
+
};
|
|
54
43
|
exports.fetchAllPairAndGroupBorrowingFees = fetchAllPairAndGroupBorrowingFees;
|
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.fetchOpenPairTradesRaw = exports.fetchOpenPairTrades = void 0;
|
|
13
4
|
const ethcall_1 = require("ethcall");
|
|
14
5
|
const trade_1 = require("../../trade");
|
|
15
|
-
const fetchOpenPairTrades = (contracts, overrides = {}) =>
|
|
16
|
-
const rawTrades =
|
|
17
|
-
const collaterals =
|
|
6
|
+
const fetchOpenPairTrades = async (contracts, overrides = {}) => {
|
|
7
|
+
const rawTrades = await (0, exports.fetchOpenPairTradesRaw)(contracts, overrides);
|
|
8
|
+
const collaterals = await contracts.gnsMultiCollatDiamond.getCollaterals();
|
|
18
9
|
const collateralConfigs = collaterals.map(c => ({
|
|
19
10
|
collateral: c.collateral,
|
|
20
11
|
isActive: c.isActive,
|
|
@@ -22,10 +13,10 @@ const fetchOpenPairTrades = (contracts, overrides = {}) => __awaiter(void 0, voi
|
|
|
22
13
|
precisionDelta: parseFloat(c.precisionDelta.toString()),
|
|
23
14
|
}));
|
|
24
15
|
return rawTrades.map(rawTrade => _prepareTradeContainer(rawTrade.trade, rawTrade.tradeInfo, rawTrade.liquidationParams, rawTrade.initialAccFees, rawTrade.tradeFeesData, rawTrade.uiRealizedPnlData, collateralConfigs[parseInt(rawTrade.trade.collateralIndex.toString()) - 1]));
|
|
25
|
-
}
|
|
16
|
+
};
|
|
26
17
|
exports.fetchOpenPairTrades = fetchOpenPairTrades;
|
|
27
18
|
// @todo rename
|
|
28
|
-
const fetchOpenPairTradesRaw = (contracts, overrides = {}) =>
|
|
19
|
+
const fetchOpenPairTradesRaw = async (contracts, overrides = {}) => {
|
|
29
20
|
if (!contracts) {
|
|
30
21
|
return [];
|
|
31
22
|
}
|
|
@@ -39,13 +30,13 @@ const fetchOpenPairTradesRaw = (contracts, overrides = {}) => __awaiter(void 0,
|
|
|
39
30
|
]),
|
|
40
31
|
};
|
|
41
32
|
if (useMulticall) {
|
|
42
|
-
|
|
33
|
+
await multicallCtx.provider.init(multiCollatDiamondContract.provider);
|
|
43
34
|
}
|
|
44
35
|
let allOpenPairTrades = [];
|
|
45
36
|
let running = true;
|
|
46
37
|
let offset = 0;
|
|
47
38
|
while (running) {
|
|
48
|
-
const [trades, tradeInfos, tradeLiquidationParams] =
|
|
39
|
+
const [trades, tradeInfos, tradeLiquidationParams] = await Promise.all([
|
|
49
40
|
multiCollatDiamondContract.getAllTrades(offset, offset + batchSize),
|
|
50
41
|
multiCollatDiamondContract.getAllTradeInfos(offset, offset + batchSize),
|
|
51
42
|
multiCollatDiamondContract.getAllTradesLiquidationParams(offset, offset + batchSize),
|
|
@@ -85,7 +76,7 @@ const fetchOpenPairTradesRaw = (contracts, overrides = {}) => __awaiter(void 0,
|
|
|
85
76
|
uiRealizedPnlData: undefined,
|
|
86
77
|
};
|
|
87
78
|
});
|
|
88
|
-
const [tradeFeesData, uiRealizedPnlData] =
|
|
79
|
+
const [tradeFeesData, uiRealizedPnlData] = await Promise.all([
|
|
89
80
|
multiCollatDiamondContract.getTradeFeesDataArray(...fundingFeesCallParams),
|
|
90
81
|
includeUIRealizedPnlData
|
|
91
82
|
? multiCollatDiamondContract.getTradeUiRealizedPnlDataArray(...fundingFeesCallParams)
|
|
@@ -100,13 +91,13 @@ const fetchOpenPairTradesRaw = (contracts, overrides = {}) => __awaiter(void 0,
|
|
|
100
91
|
.map(({ collateralIndex, user, index }) => (useMulticall
|
|
101
92
|
? multicallCtx.diamond
|
|
102
93
|
: multiCollatDiamondContract).getBorrowingInitialAccFees(collateralIndex, user, index));
|
|
103
|
-
const initialAccFees =
|
|
94
|
+
const initialAccFees = await (useMulticall
|
|
104
95
|
? multicallCtx.provider.all(initialAccFeesPromises)
|
|
105
96
|
: Promise.all(initialAccFeesPromises));
|
|
106
97
|
initialAccFees.forEach((accFees, ix) => {
|
|
107
98
|
openTrades[ix].initialAccFees = accFees;
|
|
108
99
|
openTrades[ix].tradeFeesData = tradeFeesData[ix];
|
|
109
|
-
openTrades[ix].uiRealizedPnlData = uiRealizedPnlData
|
|
100
|
+
openTrades[ix].uiRealizedPnlData = uiRealizedPnlData?.[ix];
|
|
110
101
|
});
|
|
111
102
|
allOpenPairTrades = allOpenPairTrades.concat(openTrades);
|
|
112
103
|
offset += batchSize + 1;
|
|
@@ -119,7 +110,7 @@ const fetchOpenPairTradesRaw = (contracts, overrides = {}) => __awaiter(void 0,
|
|
|
119
110
|
console.error(`Unexpected error while fetching open pair trades!`);
|
|
120
111
|
throw error;
|
|
121
112
|
}
|
|
122
|
-
}
|
|
113
|
+
};
|
|
123
114
|
exports.fetchOpenPairTradesRaw = fetchOpenPairTradesRaw;
|
|
124
115
|
const _prepareTradeContainer = (trade, tradeInfo, tradeLiquidationParams, tradeInitialAccFees, tradeFeesData, uiRealizedPnlData, collateralConfig) => {
|
|
125
116
|
const precision = collateralConfig.precision;
|