@gainsnetwork/sdk 1.4.2-rc1 → 1.4.2-rc3
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 +1 -1
- package/lib/trade/liquidation.d.ts +12 -0
- package/lib/trade/liquidation.js +55 -0
- package/lib/trade/pnl.d.ts +10 -0
- package/lib/trade/pnl.js +33 -0
- package/package.json +1 -1
- package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +0 -1911
- package/lib/contracts/types/generated/GFarmTradingStorageV5.js +0 -2
- package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +0 -1067
- package/lib/contracts/types/generated/GNSBorrowingFees.js +0 -2
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.d.ts +0 -979
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.js +0 -2
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +0 -1058
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +0 -2
- package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +0 -533
- package/lib/contracts/types/generated/GNSNftRewardsV6.js +0 -2
- package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +0 -613
- package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +0 -2
- package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +0 -911
- package/lib/contracts/types/generated/GNSPairInfosV6_1.js +0 -2
- package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +0 -660
- package/lib/contracts/types/generated/GNSPairsStorageV6.js +0 -2
- package/lib/contracts/types/generated/GNSTrading.d.ts +0 -758
- package/lib/contracts/types/generated/GNSTrading.js +0 -2
- package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +0 -875
- package/lib/contracts/types/generated/GNSTradingCallbacks.js +0 -2
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.d.ts +0 -806
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.js +0 -2
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +0 -821
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +0 -2
- package/lib/contracts/types/generated/GNSTradingStorage.d.ts +0 -1387
- package/lib/contracts/types/generated/GNSTradingStorage.js +0 -2
- package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +0 -1838
- package/lib/contracts/types/generated/GTokenV6_3_2.js +0 -2
- package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +0 -83
- package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +0 -2691
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.d.ts +0 -88
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.js +0 -1654
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +0 -113
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +0 -1742
- package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +0 -124
- package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +0 -1784
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +0 -100
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +0 -1116
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +0 -100
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +0 -1003
- package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +0 -98
- package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +0 -1485
- package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +0 -117
- package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +0 -1265
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.d.ts +0 -82
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.js +0 -1273
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +0 -82
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +0 -1326
- package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +0 -113
- package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +0 -1428
- package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +0 -96
- package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +0 -2241
- package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +0 -95
- package/lib/contracts/types/generated/factories/GNSTrading__factory.js +0 -1071
- package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +0 -110
- package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +0 -2682
- package/lib/markets/oi/fetcher.d.ts +0 -58
- package/lib/markets/oi/fetcher.js +0 -181
- package/lib/markets/oi/validation.d.ts +0 -80
- package/lib/markets/oi/validation.js +0 -172
- package/lib/pricing/depthBands/converter.d.ts +0 -65
- package/lib/pricing/depthBands/converter.js +0 -155
- package/lib/pricing/depthBands/decoder.d.ts +0 -32
- package/lib/pricing/depthBands/decoder.js +0 -109
- package/lib/pricing/depthBands/encoder.d.ts +0 -19
- package/lib/pricing/depthBands/encoder.js +0 -105
- package/lib/pricing/depthBands/index.d.ts +0 -8
- package/lib/pricing/depthBands/index.js +0 -26
- package/lib/pricing/depthBands/types.d.ts +0 -49
- package/lib/pricing/depthBands/types.js +0 -10
- package/lib/pricing/depthBands/validator.d.ts +0 -22
- package/lib/pricing/depthBands/validator.js +0 -113
- package/lib/pricing/depthBands.d.ts +0 -39
- package/lib/pricing/depthBands.js +0 -94
- package/lib/pricing/index.d.ts +0 -4
- package/lib/pricing/index.js +0 -20
- package/lib/trade/effectiveLeverage/builder.d.ts +0 -23
- package/lib/trade/effectiveLeverage/builder.js +0 -30
- package/lib/trade/fees/holdingFees/index.d.ts +0 -46
- package/lib/trade/fees/holdingFees/index.js +0 -105
- package/lib/trade/fees/holdingFees/types.d.ts +0 -23
- package/lib/trade/fees/holdingFees/types.js +0 -5
- package/lib/trade/fees/trading/holdingFees.d.ts +0 -28
- package/lib/trade/fees/trading/holdingFees.js +0 -66
- package/lib/trade/fees/trading/holdingFeesStructured.d.ts +0 -28
- package/lib/trade/fees/trading/holdingFeesStructured.js +0 -66
- package/lib/trade/priceImpact/cumulVol/types.d.ts +0 -11
- package/lib/trade/priceImpact/cumulVol/types.js +0 -2
package/lib/constants.js
CHANGED
|
@@ -478,7 +478,7 @@ exports.delistedPairIxs = new Set([
|
|
|
478
478
|
160, 163, 170, 179, 182, 183, 188, 189, 190, 208, 209, 225, 229, 230, 231,
|
|
479
479
|
238, 239, 241, 250, 253, 254, 258, 270, 275, 276, 278, 279, 282, 285, 290,
|
|
480
480
|
294, 296, 305, 311, 330, 349, 352, 353, 354, 355, 357, 365, 366, 395, 396,
|
|
481
|
-
|
|
481
|
+
415, 416, 417,
|
|
482
482
|
]);
|
|
483
483
|
exports.delistedGroupsIxs = new Set([]);
|
|
484
484
|
exports.DEFAULT_PROTECTION_CLOSE_FACTOR = 1;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GetBorrowingFeeContext, BorrowingFee } from "./fees";
|
|
2
|
+
import { Fee, LiquidationParams, Trade, UserPriceImpact } from "./types";
|
|
3
|
+
import { ContractsVersion } from "../contracts/types";
|
|
4
|
+
export type GetLiquidationPriceContext = GetBorrowingFeeContext & {
|
|
5
|
+
liquidationParams: LiquidationParams | undefined;
|
|
6
|
+
pairSpreadP: number | undefined;
|
|
7
|
+
collateralPriceUsd: number | undefined;
|
|
8
|
+
contractsVersion: ContractsVersion | undefined;
|
|
9
|
+
userPriceImpact?: UserPriceImpact | undefined;
|
|
10
|
+
};
|
|
11
|
+
export declare const getLiquidationPrice: (trade: Trade, fee: Fee, initialAccFees: BorrowingFee.InitialAccFees, context: GetLiquidationPriceContext) => number;
|
|
12
|
+
export declare const getLiqPnlThresholdP: (liquidationParams: LiquidationParams | undefined, leverage: number | undefined) => number;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLiqPnlThresholdP = exports.getLiquidationPrice = void 0;
|
|
4
|
+
const fees_1 = require("./fees");
|
|
5
|
+
const spread_1 = require("./spread");
|
|
6
|
+
const types_1 = require("../contracts/types");
|
|
7
|
+
const getLiquidationPrice = (trade, fee, initialAccFees, context) => {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const closingFee = (0, fees_1.getClosingFee)(trade.collateralAmount, trade.leverage, trade.pairIndex, fee, context.collateralPriceUsd);
|
|
10
|
+
const borrowingFee = (0, fees_1.getBorrowingFee)(trade.collateralAmount * trade.leverage, trade.pairIndex, trade.long, initialAccFees, context);
|
|
11
|
+
const liqThresholdP = (0, exports.getLiqPnlThresholdP)(context.liquidationParams, trade.leverage);
|
|
12
|
+
let liqPriceDistance = (trade.openPrice *
|
|
13
|
+
(trade.collateralAmount * liqThresholdP - (borrowingFee + closingFee))) /
|
|
14
|
+
trade.collateralAmount /
|
|
15
|
+
trade.leverage;
|
|
16
|
+
if ((context === null || context === void 0 ? void 0 : context.contractsVersion) !== undefined &&
|
|
17
|
+
context.contractsVersion >= types_1.ContractsVersion.V9_2 &&
|
|
18
|
+
((((_a = context === null || context === void 0 ? void 0 : context.liquidationParams) === null || _a === void 0 ? void 0 : _a.maxLiqSpreadP) !== undefined &&
|
|
19
|
+
context.liquidationParams.maxLiqSpreadP > 0) ||
|
|
20
|
+
(((_b = context === null || context === void 0 ? void 0 : context.userPriceImpact) === null || _b === void 0 ? void 0 : _b.fixedSpreadP) !== undefined &&
|
|
21
|
+
context.userPriceImpact.fixedSpreadP > 0))) {
|
|
22
|
+
const closingSpreadP = (0, spread_1.getSpreadP)(context.pairSpreadP, true, context.liquidationParams, context.userPriceImpact);
|
|
23
|
+
liqPriceDistance -= trade.openPrice * closingSpreadP;
|
|
24
|
+
}
|
|
25
|
+
return trade.long
|
|
26
|
+
? Math.max(trade.openPrice - liqPriceDistance, 0)
|
|
27
|
+
: Math.max(trade.openPrice + liqPriceDistance, 0);
|
|
28
|
+
};
|
|
29
|
+
exports.getLiquidationPrice = getLiquidationPrice;
|
|
30
|
+
const getLiqPnlThresholdP = (liquidationParams, leverage) => {
|
|
31
|
+
if (liquidationParams === undefined ||
|
|
32
|
+
leverage === undefined ||
|
|
33
|
+
liquidationParams.maxLiqSpreadP === 0 ||
|
|
34
|
+
liquidationParams.startLiqThresholdP === 0 ||
|
|
35
|
+
liquidationParams.endLiqThresholdP === 0 ||
|
|
36
|
+
liquidationParams.startLeverage === 0 ||
|
|
37
|
+
liquidationParams.endLeverage === 0) {
|
|
38
|
+
return 0.9;
|
|
39
|
+
}
|
|
40
|
+
if (leverage < liquidationParams.startLeverage) {
|
|
41
|
+
return liquidationParams.startLiqThresholdP;
|
|
42
|
+
}
|
|
43
|
+
if (leverage > liquidationParams.endLeverage) {
|
|
44
|
+
return liquidationParams.endLiqThresholdP;
|
|
45
|
+
}
|
|
46
|
+
if (liquidationParams.startLiqThresholdP === liquidationParams.endLiqThresholdP) {
|
|
47
|
+
return liquidationParams.endLiqThresholdP;
|
|
48
|
+
}
|
|
49
|
+
return (liquidationParams.startLiqThresholdP -
|
|
50
|
+
((leverage - liquidationParams.startLeverage) *
|
|
51
|
+
(liquidationParams.startLiqThresholdP -
|
|
52
|
+
liquidationParams.endLiqThresholdP)) /
|
|
53
|
+
(liquidationParams.endLeverage - liquidationParams.startLeverage));
|
|
54
|
+
};
|
|
55
|
+
exports.getLiqPnlThresholdP = getLiqPnlThresholdP;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GetBorrowingFeeContext } from "./fees";
|
|
2
|
+
import { Fee, LiquidationParams, Trade, TradeInfo, TradeInitialAccFees } from "./types";
|
|
3
|
+
import { ContractsVersion } from "../contracts/types";
|
|
4
|
+
export type GetPnlContext = GetBorrowingFeeContext & {
|
|
5
|
+
fee: Fee | undefined;
|
|
6
|
+
collateralPriceUsd: number | undefined;
|
|
7
|
+
contractsVersion: ContractsVersion | undefined;
|
|
8
|
+
feeMultiplier: number | undefined;
|
|
9
|
+
};
|
|
10
|
+
export declare const getPnl: (price: number | undefined, trade: Trade, tradeInfo: TradeInfo, initialAccFees: TradeInitialAccFees, liquidationParams: LiquidationParams, useFees: boolean, context: GetPnlContext) => number[] | undefined;
|
package/lib/trade/pnl.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPnl = void 0;
|
|
4
|
+
const fees_1 = require("./fees");
|
|
5
|
+
const liquidation_1 = require("./liquidation");
|
|
6
|
+
const getPnl = (price, trade, tradeInfo, initialAccFees, liquidationParams, useFees, context) => {
|
|
7
|
+
if (!price) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const posCollat = trade.collateralAmount;
|
|
11
|
+
const { openPrice, leverage } = trade;
|
|
12
|
+
const { fee } = context;
|
|
13
|
+
let pnlCollat = trade.long
|
|
14
|
+
? ((price - openPrice) / openPrice) * leverage * posCollat
|
|
15
|
+
: ((openPrice - price) / openPrice) * leverage * posCollat;
|
|
16
|
+
if (useFees) {
|
|
17
|
+
pnlCollat -= (0, fees_1.getBorrowingFee)(posCollat * trade.leverage, trade.pairIndex, trade.long, initialAccFees, context);
|
|
18
|
+
}
|
|
19
|
+
let pnlPercentage = (pnlCollat / posCollat) * 100;
|
|
20
|
+
// Can be liquidated
|
|
21
|
+
if (pnlPercentage <=
|
|
22
|
+
(0, liquidation_1.getLiqPnlThresholdP)(liquidationParams, leverage) * -100) {
|
|
23
|
+
pnlPercentage = -100;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
pnlCollat -= (0, fees_1.getClosingFee)(posCollat, trade.leverage, trade.pairIndex, fee, context.collateralPriceUsd, context.feeMultiplier);
|
|
27
|
+
pnlPercentage = (pnlCollat / posCollat) * 100;
|
|
28
|
+
}
|
|
29
|
+
pnlPercentage = pnlPercentage < -100 ? -100 : pnlPercentage;
|
|
30
|
+
pnlCollat = (posCollat * pnlPercentage) / 100;
|
|
31
|
+
return [pnlCollat, pnlPercentage];
|
|
32
|
+
};
|
|
33
|
+
exports.getPnl = getPnl;
|