@gainsnetwork/sdk 1.0.4 → 1.0.5-rc2

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.
@@ -412,6 +412,7 @@ export declare const pairs: {
412
412
  "ERA/USD": string;
413
413
  "BGSC/USD": string;
414
414
  "TAG/USD": string;
415
+ "WLFI/USD": string;
415
416
  };
416
417
  export declare const syntheticPairs: Set<string>;
417
418
  export declare const parentToSyntheticPairMap: Map<string, string>;
package/lib/constants.js CHANGED
@@ -420,6 +420,7 @@ exports.pairs = {
420
420
  "ERA/USD": CRYPTO,
421
421
  "BGSC/USD": CRYPTO,
422
422
  "TAG/USD": CRYPTO,
423
+ "WLFI/USD": CRYPTO,
423
424
  };
424
425
  exports.syntheticPairs = new Set([
425
426
  "BTCDEGEN/USD",
@@ -518,4 +518,5 @@ const PAIR_INDEX_TO_DESCRIPTION = {
518
518
  [types_1.PairIndex.ERAUSD]: "Caldera to US Dollar",
519
519
  [types_1.PairIndex.BGSCUSD]: "BugsCoin to US Dollar",
520
520
  [types_1.PairIndex.TAGUSD]: "TAGGER to US Dollar",
521
+ [types_1.PairIndex.WLFIUSD]: "World Liberty Financial to US Dollar",
521
522
  };
@@ -1,4 +1,3 @@
1
- /// <reference types="mocha" />
2
1
  import type { GNSMultiCollatDiamond } from "../../../contracts/types/generated";
3
2
  import { BorrowingFeeV2 } from ".";
4
3
  /**
@@ -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;
@@ -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;
@@ -736,5 +736,6 @@ export declare enum PairIndex {
736
736
  SPKUSD = 409,
737
737
  ERAUSD = 410,
738
738
  BGSCUSD = 411,
739
- TAGUSD = 412
739
+ TAGUSD = 412,
740
+ WLFIUSD = 413
740
741
  }
@@ -442,4 +442,5 @@ var PairIndex;
442
442
  PairIndex[PairIndex["ERAUSD"] = 410] = "ERAUSD";
443
443
  PairIndex[PairIndex["BGSCUSD"] = 411] = "BGSCUSD";
444
444
  PairIndex[PairIndex["TAGUSD"] = 412] = "TAGUSD";
445
+ PairIndex[PairIndex["WLFIUSD"] = 413] = "WLFIUSD";
445
446
  })(PairIndex = exports.PairIndex || (exports.PairIndex = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gainsnetwork/sdk",
3
- "version": "1.0.4",
3
+ "version": "1.0.5-rc2",
4
4
  "description": "Gains Network SDK",
5
5
  "main": "./lib/index.js",
6
6
  "files": [