@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.
- package/lib/markets/index.d.ts +1 -0
- package/lib/markets/index.js +1 -0
- package/lib/markets/leverage/builder.d.ts +12 -0
- package/lib/markets/leverage/builder.js +25 -0
- package/lib/markets/leverage/getMarketLeverageRestrictions.d.ts +7 -0
- package/lib/markets/leverage/getMarketLeverageRestrictions.js +38 -0
- package/lib/markets/leverage/index.d.ts +3 -0
- package/lib/markets/leverage/index.js +19 -0
- package/lib/markets/leverage/types.d.ts +15 -0
- package/lib/markets/leverage/types.js +2 -0
- package/lib/trade/counterTrade/index.d.ts +2 -0
- package/lib/trade/counterTrade/index.js +18 -0
- package/lib/trade/counterTrade/types.d.ts +7 -0
- package/lib/trade/counterTrade/types.js +2 -0
- package/lib/trade/counterTrade/validateCounterTrade.d.ts +10 -0
- package/lib/trade/counterTrade/validateCounterTrade.js +29 -0
- package/lib/trade/index.d.ts +1 -0
- package/lib/trade/index.js +1 -0
- package/lib/trade/priceImpact/close/index.js +0 -5
- package/package.json +1 -1
package/lib/markets/index.d.ts
CHANGED
package/lib/markets/index.js
CHANGED
|
@@ -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,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,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,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;
|
package/lib/trade/index.d.ts
CHANGED
package/lib/trade/index.js
CHANGED
|
@@ -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
|
);
|