@gainsnetwork/sdk 0.0.0-v10.rc17 → 0.0.0-v10.rc19

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.
@@ -7,3 +7,4 @@ export * from "./oi";
7
7
  export * from "./collateral";
8
8
  export * from "./price";
9
9
  export * from "./holdingFees";
10
+ export * from "./leverage";
@@ -23,3 +23,4 @@ __exportStar(require("./oi"), exports);
23
23
  __exportStar(require("./collateral"), exports);
24
24
  __exportStar(require("./price"), exports);
25
25
  __exportStar(require("./holdingFees"), exports);
26
+ __exportStar(require("./leverage"), exports);
@@ -0,0 +1,12 @@
1
+ import { GlobalTradingVariablesType } from "../../backend/tradingVariables/types";
2
+ import { GetMarketLeverageRestrictionsContext } from "./types";
3
+ /**
4
+ * Builds the context needed for getMarketLeverageRestrictions from global trading variables
5
+ * @param globalTradingVariables Global trading variables containing pairs, groups, etc.
6
+ * @param pairIndex The index of the trading pair
7
+ * @param pairMaxLeverages Map of pair-specific max leverage overrides
8
+ * @returns Context for leverage restrictions calculation
9
+ */
10
+ export declare const buildMarketLeverageRestrictionsContext: (globalTradingVariables: GlobalTradingVariablesType, pairIndex: number, pairMaxLeverages?: {
11
+ [key: number]: number;
12
+ } | undefined) => GetMarketLeverageRestrictionsContext;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildMarketLeverageRestrictionsContext = void 0;
4
+ /**
5
+ * Builds the context needed for getMarketLeverageRestrictions from global trading variables
6
+ * @param globalTradingVariables Global trading variables containing pairs, groups, etc.
7
+ * @param pairIndex The index of the trading pair
8
+ * @param pairMaxLeverages Map of pair-specific max leverage overrides
9
+ * @returns Context for leverage restrictions calculation
10
+ */
11
+ const buildMarketLeverageRestrictionsContext = (globalTradingVariables, pairIndex, pairMaxLeverages) => {
12
+ const { pairs, groups, counterTradeSettings } = globalTradingVariables;
13
+ if (!pairs || !groups || !pairs[pairIndex]) {
14
+ throw new Error("Invalid global trading variables or pair index");
15
+ }
16
+ const pair = pairs[pairIndex];
17
+ const group = groups[pair.groupIndex];
18
+ return {
19
+ groupMinLeverage: group.minLeverage,
20
+ groupMaxLeverage: group.maxLeverage,
21
+ pairMaxLeverage: pairMaxLeverages === null || pairMaxLeverages === void 0 ? void 0 : pairMaxLeverages[pairIndex],
22
+ counterTradeSettings: counterTradeSettings === null || counterTradeSettings === void 0 ? void 0 : counterTradeSettings[pairIndex],
23
+ };
24
+ };
25
+ exports.buildMarketLeverageRestrictionsContext = buildMarketLeverageRestrictionsContext;
@@ -0,0 +1,7 @@
1
+ import { GetMarketLeverageRestrictionsContext, MarketLeverageRestrictions } from "./types";
2
+ /**
3
+ * Gets the leverage restrictions for a trading pair, including both regular and counter trade limits
4
+ * @param context Context containing group limits, pair overrides, and counter trade settings
5
+ * @returns Object with regular and counter trade leverage restrictions
6
+ */
7
+ export declare const getMarketLeverageRestrictions: (context: GetMarketLeverageRestrictionsContext) => MarketLeverageRestrictions;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMarketLeverageRestrictions = void 0;
4
+ /**
5
+ * Gets the leverage restrictions for a trading pair, including both regular and counter trade limits
6
+ * @param context Context containing group limits, pair overrides, and counter trade settings
7
+ * @returns Object with regular and counter trade leverage restrictions
8
+ */
9
+ const getMarketLeverageRestrictions = (context) => {
10
+ const { groupMinLeverage, groupMaxLeverage, pairMaxLeverage, counterTradeSettings, } = context;
11
+ // Calculate regular trade leverage limits
12
+ let regularMin = groupMinLeverage;
13
+ let regularMax = pairMaxLeverage === undefined || pairMaxLeverage === 0
14
+ ? groupMaxLeverage
15
+ : pairMaxLeverage;
16
+ // If max is less than min, set both to 0 (pair is effectively disabled)
17
+ if (regularMax < regularMin) {
18
+ regularMin = 0;
19
+ regularMax = 0;
20
+ }
21
+ // Calculate counter trade leverage limits if settings exist
22
+ let counterTradeLimits = null;
23
+ if (counterTradeSettings) {
24
+ // Counter trades use the group's min leverage but have their own max leverage
25
+ counterTradeLimits = {
26
+ min: groupMinLeverage,
27
+ max: counterTradeSettings.maxLeverage,
28
+ };
29
+ }
30
+ return {
31
+ regular: {
32
+ min: regularMin,
33
+ max: regularMax,
34
+ },
35
+ counterTrade: counterTradeLimits,
36
+ };
37
+ };
38
+ exports.getMarketLeverageRestrictions = getMarketLeverageRestrictions;
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./getMarketLeverageRestrictions";
3
+ export * from "./builder";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./getMarketLeverageRestrictions"), exports);
19
+ __exportStar(require("./builder"), exports);
@@ -0,0 +1,15 @@
1
+ import { CounterTradeSettings } from "../../trade/types";
2
+ export type LeverageRestrictions = {
3
+ min: number;
4
+ max: number;
5
+ };
6
+ export type MarketLeverageRestrictions = {
7
+ regular: LeverageRestrictions;
8
+ counterTrade: LeverageRestrictions | null;
9
+ };
10
+ export type GetMarketLeverageRestrictionsContext = {
11
+ groupMinLeverage: number;
12
+ groupMaxLeverage: number;
13
+ pairMaxLeverage?: number;
14
+ counterTradeSettings?: CounterTradeSettings;
15
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export * from "./validateCounterTrade";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./validateCounterTrade"), exports);
@@ -0,0 +1,7 @@
1
+ export type ValidateCounterTradeContext = {
2
+ pairOiSkewCollateral: number;
3
+ };
4
+ export type ValidateCounterTradeResult = {
5
+ isValidated: boolean;
6
+ exceedingPositionSizeCollateral: number;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { Trade } from "../types";
2
+ import { ValidateCounterTradeContext, ValidateCounterTradeResult } from "./types";
3
+ /**
4
+ * Validates a counter trade based on pair OI skew, matching the contract's validateCounterTrade logic
5
+ * @param trade Trade object
6
+ * @param positionSizeCollateral Position size in collateral tokens
7
+ * @param context Context containing the pair OI skew
8
+ * @returns Validation result with exceeding collateral amount if applicable
9
+ */
10
+ export declare function validateCounterTrade(trade: Trade, positionSizeCollateral: number, context: ValidateCounterTradeContext): ValidateCounterTradeResult;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateCounterTrade = void 0;
4
+ /**
5
+ * Validates a counter trade based on pair OI skew, matching the contract's validateCounterTrade logic
6
+ * @param trade Trade object
7
+ * @param positionSizeCollateral Position size in collateral tokens
8
+ * @param context Context containing the pair OI skew
9
+ * @returns Validation result with exceeding collateral amount if applicable
10
+ */
11
+ function validateCounterTrade(trade, positionSizeCollateral, context) {
12
+ const { pairOiSkewCollateral } = context;
13
+ // Calculate signed position size based on trade direction
14
+ const positionSizeCollateralSigned = positionSizeCollateral * (trade.long ? 1 : -1);
15
+ // Check if position improves skew (opposite signs)
16
+ if (pairOiSkewCollateral === 0 ||
17
+ (pairOiSkewCollateral > 0 && positionSizeCollateralSigned > 0) ||
18
+ (pairOiSkewCollateral < 0 && positionSizeCollateralSigned < 0)) {
19
+ return { isValidated: false, exceedingPositionSizeCollateral: 0 };
20
+ }
21
+ // Calculate maximum position size that brings skew to 0
22
+ const maxPositionSizeCollateral = Math.abs(pairOiSkewCollateral);
23
+ // Calculate exceeding amount
24
+ const exceedingPositionSizeCollateral = positionSizeCollateral > maxPositionSizeCollateral
25
+ ? positionSizeCollateral - maxPositionSizeCollateral
26
+ : 0;
27
+ return { isValidated: true, exceedingPositionSizeCollateral };
28
+ }
29
+ exports.validateCounterTrade = validateCounterTrade;
@@ -7,3 +7,4 @@ export * from "./oiWindows";
7
7
  export * from "./priceImpact";
8
8
  export * from "./utils";
9
9
  export * from "./effectiveLeverage";
10
+ export * from "./counterTrade";
@@ -23,3 +23,4 @@ __exportStar(require("./oiWindows"), exports);
23
23
  __exportStar(require("./priceImpact"), exports);
24
24
  __exportStar(require("./utils"), exports);
25
25
  __exportStar(require("./effectiveLeverage"), exports);
26
+ __exportStar(require("./counterTrade"), exports);
@@ -53,11 +53,6 @@ const getTradeClosingPriceImpact = (input, context) => {
53
53
  const positionSizeToken = input.trade.positionSizeToken
54
54
  ? calculateClosingPositionSizeToken(input.positionSizeCollateral, input.trade.positionSizeToken, input.trade.collateralAmount, input.trade.leverage)
55
55
  : 0;
56
- console.log("positionSizeToken", positionSizeToken);
57
- console.log("input.positionSizeCollateral", input.positionSizeCollateral);
58
- console.log("input.trade.positionSizeToken", input.trade.positionSizeToken);
59
- console.log("input.trade.collateralAmount", input.trade.collateralAmount);
60
- console.log("input.trade.leverage", input.trade.leverage);
61
56
  // Calculate fixed spread (reversed for closing)
62
57
  const fixedSpreadP = (0, cumulVol_1.getFixedSpreadP)(input.pairSpreadP, input.trade.long, false // closing
63
58
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gainsnetwork/sdk",
3
- "version": "0.0.0-v10.rc17",
3
+ "version": "0.0.0-v10.rc19",
4
4
  "description": "Gains Network SDK",
5
5
  "main": "./lib/index.js",
6
6
  "files": [