@gainsnetwork/sdk 0.2.67-rc7 → 0.2.67-rc8

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.
Files changed (147) hide show
  1. package/lib/backend/globalTrades/index.d.ts +11 -0
  2. package/lib/backend/globalTrades/index.js +69 -0
  3. package/lib/backend/index.d.ts +3 -0
  4. package/lib/backend/index.js +28 -0
  5. package/lib/backend/tradingVariables/backend.types.d.ts +312 -0
  6. package/lib/backend/tradingVariables/backend.types.js +2 -0
  7. package/lib/backend/tradingVariables/converter.d.ts +31 -0
  8. package/lib/backend/tradingVariables/converter.js +330 -0
  9. package/lib/backend/tradingVariables/index.d.ts +5 -0
  10. package/lib/backend/tradingVariables/index.js +95 -0
  11. package/lib/backend/tradingVariables/types.d.ts +109 -0
  12. package/lib/backend/tradingVariables/types.js +14 -0
  13. package/lib/constants.js +1 -1
  14. package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +1911 -0
  15. package/lib/contracts/types/generated/GFarmTradingStorageV5.js +2 -0
  16. package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +1067 -0
  17. package/lib/contracts/types/generated/GNSBorrowingFees.js +2 -0
  18. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +2140 -286
  19. package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +533 -0
  20. package/lib/contracts/types/generated/GNSNftRewardsV6.js +2 -0
  21. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +613 -0
  22. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +2 -0
  23. package/lib/contracts/types/generated/GNSTrading.d.ts +758 -0
  24. package/lib/contracts/types/generated/GNSTrading.js +2 -0
  25. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +875 -0
  26. package/lib/contracts/types/generated/GNSTradingCallbacks.js +2 -0
  27. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +1387 -0
  28. package/lib/contracts/types/generated/GNSTradingStorage.js +2 -0
  29. package/lib/contracts/types/generated/GToken.d.ts +78 -107
  30. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +1838 -0
  31. package/lib/contracts/types/generated/GTokenV6_3_2.js +2 -0
  32. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -0
  33. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -0
  34. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +124 -0
  35. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +1784 -0
  36. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +90 -53
  37. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +4502 -427
  38. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -0
  39. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -0
  40. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -0
  41. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -0
  42. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +113 -0
  43. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +1428 -0
  44. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +96 -0
  45. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +2241 -0
  46. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +95 -0
  47. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +1071 -0
  48. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +110 -0
  49. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +2682 -0
  50. package/lib/contracts/types/generated/factories/GToken__factory.js +65 -142
  51. package/lib/contracts/utils/openLimitOrders.d.ts +8 -0
  52. package/lib/contracts/utils/openLimitOrders.js +88 -0
  53. package/lib/markets/collateral/converter.d.ts +5 -0
  54. package/lib/markets/collateral/converter.js +11 -0
  55. package/lib/markets/collateral/index.d.ts +1 -0
  56. package/lib/markets/collateral/index.js +17 -0
  57. package/lib/markets/collateral/types.d.ts +7 -0
  58. package/lib/markets/collateral/types.js +2 -0
  59. package/lib/markets/oi/converter.d.ts +63 -0
  60. package/lib/markets/oi/converter.js +103 -0
  61. package/lib/markets/oi/fetcher.d.ts +58 -0
  62. package/lib/markets/oi/fetcher.js +181 -0
  63. package/lib/markets/oi/index.d.ts +10 -0
  64. package/lib/markets/oi/index.js +37 -0
  65. package/lib/markets/oi/types.d.ts +82 -0
  66. package/lib/markets/oi/types.js +6 -0
  67. package/lib/markets/oi/validation.d.ts +80 -0
  68. package/lib/markets/oi/validation.js +172 -0
  69. package/lib/trade/fees/borrowing/builder.d.ts +14 -0
  70. package/lib/trade/fees/borrowing/builder.js +33 -0
  71. package/lib/trade/fees/borrowingV2/builder.d.ts +6 -0
  72. package/lib/trade/fees/borrowingV2/builder.js +24 -0
  73. package/lib/trade/fees/borrowingV2/converter.d.ts +75 -0
  74. package/lib/trade/fees/borrowingV2/converter.js +132 -0
  75. package/lib/trade/fees/borrowingV2/fetcher.d.ts +75 -0
  76. package/lib/trade/fees/borrowingV2/fetcher.js +185 -0
  77. package/lib/trade/fees/borrowingV2/index.d.ts +48 -0
  78. package/lib/trade/fees/borrowingV2/index.js +112 -0
  79. package/lib/trade/fees/borrowingV2/types.d.ts +95 -0
  80. package/lib/trade/fees/borrowingV2/types.js +5 -0
  81. package/lib/trade/fees/converter.d.ts +48 -0
  82. package/lib/trade/fees/converter.js +110 -0
  83. package/lib/trade/fees/fundingFees/builder.d.ts +9 -0
  84. package/lib/trade/fees/fundingFees/builder.js +35 -0
  85. package/lib/trade/fees/fundingFees/converter.d.ts +102 -0
  86. package/lib/trade/fees/fundingFees/converter.js +196 -0
  87. package/lib/trade/fees/fundingFees/fetcher.d.ts +66 -0
  88. package/lib/trade/fees/fundingFees/fetcher.js +150 -0
  89. package/lib/trade/fees/fundingFees/index.d.ts +146 -0
  90. package/lib/trade/fees/fundingFees/index.js +346 -0
  91. package/lib/trade/fees/fundingFees/pairContext.d.ts +33 -0
  92. package/lib/trade/fees/fundingFees/pairContext.js +17 -0
  93. package/lib/trade/fees/fundingFees/types.d.ts +77 -0
  94. package/lib/trade/fees/fundingFees/types.js +5 -0
  95. package/lib/trade/fees/tiers/converter.d.ts +54 -0
  96. package/lib/trade/fees/tiers/converter.js +81 -0
  97. package/lib/trade/fees/trading/builder.d.ts +18 -0
  98. package/lib/trade/fees/trading/builder.js +20 -0
  99. package/lib/trade/fees/trading/converter.d.ts +30 -0
  100. package/lib/trade/fees/trading/converter.js +43 -0
  101. package/lib/trade/fees/trading/index.d.ts +62 -0
  102. package/lib/trade/fees/trading/index.js +155 -0
  103. package/lib/trade/fees/trading/types.d.ts +48 -0
  104. package/lib/trade/fees/trading/types.js +5 -0
  105. package/lib/trade/liquidation/builder.d.ts +25 -0
  106. package/lib/trade/liquidation/builder.js +59 -0
  107. package/lib/trade/liquidation/converter.d.ts +23 -0
  108. package/lib/trade/liquidation/converter.js +46 -0
  109. package/lib/trade/liquidation/index.d.ts +26 -0
  110. package/lib/trade/liquidation/index.js +142 -0
  111. package/lib/trade/liquidation/types.d.ts +59 -0
  112. package/lib/trade/liquidation/types.js +2 -0
  113. package/lib/trade/openLimitOrder.d.ts +2 -0
  114. package/lib/trade/openLimitOrder.js +23 -0
  115. package/lib/trade/pnl/builder.d.ts +16 -0
  116. package/lib/trade/pnl/builder.js +44 -0
  117. package/lib/trade/pnl/converter.d.ts +47 -0
  118. package/lib/trade/pnl/converter.js +72 -0
  119. package/lib/trade/pnl/index.d.ts +77 -0
  120. package/lib/trade/pnl/index.js +270 -0
  121. package/lib/trade/pnl/types.d.ts +114 -0
  122. package/lib/trade/pnl/types.js +5 -0
  123. package/lib/trade/priceImpact/close/index.d.ts +21 -0
  124. package/lib/trade/priceImpact/close/index.js +131 -0
  125. package/lib/trade/priceImpact/close/types.d.ts +43 -0
  126. package/lib/trade/priceImpact/close/types.js +5 -0
  127. package/lib/trade/priceImpact/cumulVol/converter.d.ts +31 -0
  128. package/lib/trade/priceImpact/cumulVol/converter.js +59 -0
  129. package/lib/trade/priceImpact/cumulVol/index.d.ts +107 -0
  130. package/lib/trade/priceImpact/cumulVol/index.js +228 -0
  131. package/lib/trade/priceImpact/index.d.ts +12 -0
  132. package/lib/trade/priceImpact/index.js +59 -0
  133. package/lib/trade/priceImpact/open/index.d.ts +22 -0
  134. package/lib/trade/priceImpact/open/index.js +76 -0
  135. package/lib/trade/priceImpact/open/types.d.ts +41 -0
  136. package/lib/trade/priceImpact/open/types.js +5 -0
  137. package/lib/trade/priceImpact/skew/converter.d.ts +77 -0
  138. package/lib/trade/priceImpact/skew/converter.js +171 -0
  139. package/lib/trade/priceImpact/skew/fetcher.d.ts +63 -0
  140. package/lib/trade/priceImpact/skew/fetcher.js +168 -0
  141. package/lib/trade/priceImpact/skew/index.d.ts +58 -0
  142. package/lib/trade/priceImpact/skew/index.js +179 -0
  143. package/lib/trade/priceImpact/skew/types.d.ts +55 -0
  144. package/lib/trade/priceImpact/skew/types.js +5 -0
  145. package/lib/trade/utils.d.ts +18 -0
  146. package/lib/trade/utils.js +30 -0
  147. package/package.json +1 -1
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Pair-specific funding fee types and utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getPairPendingAccFundingFees = void 0;
7
+ const index_1 = require("./index");
8
+ /**
9
+ * @dev Calculate pending accumulated funding fees for a pair using pair-specific context
10
+ * @param currentPairPrice Current price of the pair
11
+ * @param context Pair-specific funding context
12
+ * @returns Pending accumulated funding fees
13
+ */
14
+ const getPairPendingAccFundingFees = (currentPairPrice, context) => {
15
+ return (0, index_1.getPairPendingAccFundingFees)(context.params, context.data, currentPairPrice, context.pairOi || { oiLongToken: 0, oiShortToken: 0 }, context.netExposureToken || 0, context.netExposureUsd || 0, context.currentTimestamp);
16
+ };
17
+ exports.getPairPendingAccFundingFees = getPairPendingAccFundingFees;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @dev Funding fees types for v10+ trades
3
+ */
4
+ export type FundingFeeParams = {
5
+ skewCoefficientPerYear: number;
6
+ absoluteVelocityPerYearCap: number;
7
+ absoluteRatePerSecondCap: number;
8
+ thetaThresholdUsd: number;
9
+ fundingFeesEnabled: boolean;
10
+ aprMultiplierEnabled: boolean;
11
+ };
12
+ export type PairFundingFeeData = {
13
+ accFundingFeeLongP: number;
14
+ accFundingFeeShortP: number;
15
+ lastFundingRatePerSecondP: number;
16
+ lastFundingUpdateTs: number;
17
+ };
18
+ export type PairGlobalParams = {
19
+ maxSkewCollateral: number;
20
+ };
21
+ export type TradeInitialAccFundingFees = {
22
+ initialAccFundingFeeP: number;
23
+ };
24
+ export type PairAccumulatedFees = {
25
+ accPerOiLong: number;
26
+ accPerOiShort: number;
27
+ lastUpdateBlock: number;
28
+ };
29
+ export type TradeInitialAccFees = {
30
+ accPerOiLong: number;
31
+ accPerOiShort: number;
32
+ openBlock: number;
33
+ };
34
+ export type PairOiAfterV10 = {
35
+ oiLongToken: number;
36
+ oiShortToken: number;
37
+ };
38
+ export type FundingRateCalculation = {
39
+ pairOiToken: PairOiAfterV10;
40
+ netExposureToken: number;
41
+ netExposureUsd: number;
42
+ currentVelocityPerYear: number;
43
+ avgFundingRatePerSecondP: number;
44
+ currentFundingRatePerSecondP: number;
45
+ secondsSinceLastUpdate: number;
46
+ longAprMultiplier: number;
47
+ shortAprMultiplier: number;
48
+ };
49
+ export type GetFundingFeeContext = {
50
+ currentTimestamp: number;
51
+ fundingParams: {
52
+ [collateralIndex: number]: {
53
+ [pairIndex: number]: FundingFeeParams;
54
+ };
55
+ };
56
+ fundingData: {
57
+ [collateralIndex: number]: {
58
+ [pairIndex: number]: PairFundingFeeData;
59
+ };
60
+ };
61
+ globalParams?: {
62
+ [collateralIndex: number]: {
63
+ [pairIndex: number]: PairGlobalParams;
64
+ };
65
+ };
66
+ };
67
+ export type TradeFundingFeeResult = {
68
+ fundingFeeCollateral: number;
69
+ fundingFeeP: number;
70
+ currentAccFundingFeeP: number;
71
+ initialAccFundingFeeP: number;
72
+ };
73
+ export type PairPendingAccFundingFeesResult = {
74
+ accFundingFeeLongP: number;
75
+ accFundingFeeShortP: number;
76
+ currentFundingRatePerSecondP: number;
77
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Funding fees types for v10+ trades
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @dev Converters for fee tier data between contract and SDK formats
3
+ * @dev All BigNumber values are normalized to floats with appropriate precision
4
+ */
5
+ import { IFeeTiers } from "../../../contracts/types/generated/GNSMultiCollatDiamond";
6
+ import { FeeTier, TraderInfo, TraderEnrollment } from "./types";
7
+ /**
8
+ * @dev Converts contract fee tier data to SDK format
9
+ * @param contractData Contract FeeTier struct
10
+ * @returns Normalized fee tier data
11
+ */
12
+ export declare const convertFeeTier: (contractData: IFeeTiers.FeeTierStructOutput) => FeeTier;
13
+ /**
14
+ * @dev Converts array of fee tiers from contract format
15
+ * @param contractDataArray Array of contract FeeTier structs
16
+ * @returns Array of normalized fee tiers
17
+ */
18
+ export declare const convertFeeTierArray: (contractDataArray: IFeeTiers.FeeTierStructOutput[]) => FeeTier[];
19
+ /**
20
+ * @dev Converts contract trader info to SDK format
21
+ * @param contractData Contract TraderInfo struct
22
+ * @returns Normalized trader info
23
+ */
24
+ export declare const convertTraderInfo: (contractData: IFeeTiers.TraderInfoStructOutput) => TraderInfo;
25
+ /**
26
+ * @dev Converts contract trader enrollment to SDK format
27
+ * @param contractData Contract TraderEnrollment struct
28
+ * @returns Normalized trader enrollment
29
+ */
30
+ export declare const convertTraderEnrollment: (contractData: IFeeTiers.TraderEnrollmentStructOutput) => TraderEnrollment;
31
+ /**
32
+ * @dev Converts the complete fee tiers configuration from contract format
33
+ * @param tiers Array of fee tiers from contract
34
+ * @param groupVolumeMultipliers Array of group volume multipliers
35
+ * @param currentDay Current day from contract
36
+ * @returns Complete fee tiers configuration
37
+ */
38
+ export declare const convertFeeTiersConfig: (tiers: IFeeTiers.FeeTierStructOutput[], groupVolumeMultipliers: readonly bigint[], currentDay: bigint) => {
39
+ tiers: FeeTier[];
40
+ groupVolumeMultipliers: number[];
41
+ currentDay: number;
42
+ };
43
+ /**
44
+ * @dev Converts trader's fee tier data from contract format
45
+ * @param traderInfo Trader info from contract
46
+ * @param traderDailyInfo Array of daily points info
47
+ * @param traderEnrollment Enrollment status from contract
48
+ * @returns Complete trader fee tier data
49
+ */
50
+ export declare const convertTraderFeeTiersData: (traderInfo: IFeeTiers.TraderInfoStructOutput, traderDailyInfo: readonly bigint[], traderEnrollment: IFeeTiers.TraderEnrollmentStructOutput) => {
51
+ traderInfo: TraderInfo;
52
+ dailyPoints: number[];
53
+ traderEnrollment: TraderEnrollment;
54
+ };
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Converters for fee tier data between contract and SDK formats
4
+ * @dev All BigNumber values are normalized to floats with appropriate precision
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.convertTraderFeeTiersData = exports.convertFeeTiersConfig = exports.convertTraderEnrollment = exports.convertTraderInfo = exports.convertFeeTierArray = exports.convertFeeTier = void 0;
8
+ /**
9
+ * @dev Converts contract fee tier data to SDK format
10
+ * @param contractData Contract FeeTier struct
11
+ * @returns Normalized fee tier data
12
+ */
13
+ const convertFeeTier = (contractData) => {
14
+ return {
15
+ feeMultiplier: Number(contractData.feeMultiplier) / 1e3,
16
+ pointsThreshold: Number(contractData.pointsThreshold) / 1e18, // Points in 1e18 precision
17
+ };
18
+ };
19
+ exports.convertFeeTier = convertFeeTier;
20
+ /**
21
+ * @dev Converts array of fee tiers from contract format
22
+ * @param contractDataArray Array of contract FeeTier structs
23
+ * @returns Array of normalized fee tiers
24
+ */
25
+ const convertFeeTierArray = (contractDataArray) => {
26
+ return contractDataArray.map(exports.convertFeeTier);
27
+ };
28
+ exports.convertFeeTierArray = convertFeeTierArray;
29
+ /**
30
+ * @dev Converts contract trader info to SDK format
31
+ * @param contractData Contract TraderInfo struct
32
+ * @returns Normalized trader info
33
+ */
34
+ const convertTraderInfo = (contractData) => {
35
+ return {
36
+ lastDayUpdated: Number(contractData.lastDayUpdated),
37
+ trailingPoints: Number(contractData.trailingPoints) / 1e18, // Points in 1e18 precision
38
+ };
39
+ };
40
+ exports.convertTraderInfo = convertTraderInfo;
41
+ /**
42
+ * @dev Converts contract trader enrollment to SDK format
43
+ * @param contractData Contract TraderEnrollment struct
44
+ * @returns Normalized trader enrollment
45
+ */
46
+ const convertTraderEnrollment = (contractData) => {
47
+ return {
48
+ status: Number(contractData.status),
49
+ };
50
+ };
51
+ exports.convertTraderEnrollment = convertTraderEnrollment;
52
+ /**
53
+ * @dev Converts the complete fee tiers configuration from contract format
54
+ * @param tiers Array of fee tiers from contract
55
+ * @param groupVolumeMultipliers Array of group volume multipliers
56
+ * @param currentDay Current day from contract
57
+ * @returns Complete fee tiers configuration
58
+ */
59
+ const convertFeeTiersConfig = (tiers, groupVolumeMultipliers, currentDay) => {
60
+ return {
61
+ tiers: (0, exports.convertFeeTierArray)(tiers),
62
+ groupVolumeMultipliers: groupVolumeMultipliers.map(m => Number(m) / 1e3),
63
+ currentDay: Number(currentDay),
64
+ };
65
+ };
66
+ exports.convertFeeTiersConfig = convertFeeTiersConfig;
67
+ /**
68
+ * @dev Converts trader's fee tier data from contract format
69
+ * @param traderInfo Trader info from contract
70
+ * @param traderDailyInfo Array of daily points info
71
+ * @param traderEnrollment Enrollment status from contract
72
+ * @returns Complete trader fee tier data
73
+ */
74
+ const convertTraderFeeTiersData = (traderInfo, traderDailyInfo, traderEnrollment) => {
75
+ return {
76
+ traderInfo: (0, exports.convertTraderInfo)(traderInfo),
77
+ dailyPoints: traderDailyInfo.map(points => Number(points) / 1e18),
78
+ traderEnrollment: (0, exports.convertTraderEnrollment)(traderEnrollment),
79
+ };
80
+ };
81
+ exports.convertTraderFeeTiersData = convertTraderFeeTiersData;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @dev Trading fees context builder module
3
+ * @dev Provides builder functions for creating trading fee contexts
4
+ */
5
+ import { Fee, GlobalTradeFeeParams } from "../../types";
6
+ import { GlobalTradingVariablesType } from "src/backend/tradingVariables/types";
7
+ /**
8
+ * @dev Sub-context for trading fees
9
+ */
10
+ export type TradingFeesSubContext = {
11
+ fee: Fee;
12
+ globalTradeFeeParams: GlobalTradeFeeParams;
13
+ traderFeeMultiplier?: number;
14
+ };
15
+ /**
16
+ * @dev Builds trading fees sub-context
17
+ */
18
+ export declare const buildTradingFeesContext: (globalTradingVariables: GlobalTradingVariablesType, pairIndex: number, traderFeeMultiplier?: number) => TradingFeesSubContext;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Trading fees context builder module
4
+ * @dev Provides builder functions for creating trading fee contexts
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.buildTradingFeesContext = void 0;
8
+ /**
9
+ * @dev Builds trading fees sub-context
10
+ */
11
+ const buildTradingFeesContext = (globalTradingVariables, pairIndex, traderFeeMultiplier) => {
12
+ const { fees, pairs, globalTradeFeeParams } = globalTradingVariables;
13
+ const feeIndex = pairs[pairIndex].feeIndex;
14
+ return {
15
+ fee: fees[feeIndex],
16
+ globalTradeFeeParams: globalTradeFeeParams,
17
+ traderFeeMultiplier,
18
+ };
19
+ };
20
+ exports.buildTradingFeesContext = buildTradingFeesContext;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @dev Converters for trading fee data between contract and SDK formats
3
+ */
4
+ import { CounterTradeSettings } from "../../types";
5
+ import { GlobalTradeFeeParams } from "./types";
6
+ /**
7
+ * @dev Converts contract counter trade settings to SDK format
8
+ * @param feeRateMultiplier Fee rate multiplier from contract (1e3 precision)
9
+ * @param maxLeverage Max leverage from contract (1e3 precision)
10
+ * @returns Normalized counter trade settings
11
+ */
12
+ export declare const convertCounterTradeSettings: (feeRateMultiplier: number, maxLeverage: number) => CounterTradeSettings;
13
+ /**
14
+ * @dev Converts array of counter trade fee rate multipliers from contract
15
+ * @param multipliers Array of fee rate multipliers (1e3 precision)
16
+ * @returns Array of normalized multipliers
17
+ */
18
+ export declare const convertCounterTradeFeeRateMultipliers: (multipliers: number[]) => number[];
19
+ /**
20
+ * @dev Converts global trade fee params from contract to SDK format
21
+ * @param contractParams Global trade fee params from contract
22
+ * @returns Normalized global trade fee params
23
+ */
24
+ export declare const convertGlobalTradeFeeParams: (contractParams: {
25
+ referralFeeP: number;
26
+ govFeeP: number;
27
+ triggerOrderFeeP: number;
28
+ gnsOtcFeeP: number;
29
+ gTokenFeeP: number;
30
+ }) => GlobalTradeFeeParams;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Converters for trading fee data between contract and SDK formats
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertGlobalTradeFeeParams = exports.convertCounterTradeFeeRateMultipliers = exports.convertCounterTradeSettings = void 0;
7
+ /**
8
+ * @dev Converts contract counter trade settings to SDK format
9
+ * @param feeRateMultiplier Fee rate multiplier from contract (1e3 precision)
10
+ * @param maxLeverage Max leverage from contract (1e3 precision)
11
+ * @returns Normalized counter trade settings
12
+ */
13
+ const convertCounterTradeSettings = (feeRateMultiplier, maxLeverage) => {
14
+ return {
15
+ feeRateMultiplier: feeRateMultiplier / 1000,
16
+ maxLeverage: maxLeverage / 1000, // 1e3 → float
17
+ };
18
+ };
19
+ exports.convertCounterTradeSettings = convertCounterTradeSettings;
20
+ /**
21
+ * @dev Converts array of counter trade fee rate multipliers from contract
22
+ * @param multipliers Array of fee rate multipliers (1e3 precision)
23
+ * @returns Array of normalized multipliers
24
+ */
25
+ const convertCounterTradeFeeRateMultipliers = (multipliers) => {
26
+ return multipliers.map(m => m / 1000);
27
+ };
28
+ exports.convertCounterTradeFeeRateMultipliers = convertCounterTradeFeeRateMultipliers;
29
+ /**
30
+ * @dev Converts global trade fee params from contract to SDK format
31
+ * @param contractParams Global trade fee params from contract
32
+ * @returns Normalized global trade fee params
33
+ */
34
+ const convertGlobalTradeFeeParams = (contractParams) => {
35
+ return {
36
+ referralFeeP: contractParams.referralFeeP / 1e10 / 100,
37
+ govFeeP: contractParams.govFeeP / 1e10 / 100,
38
+ triggerOrderFeeP: contractParams.triggerOrderFeeP / 1e10 / 100,
39
+ gnsOtcFeeP: contractParams.gnsOtcFeeP / 1e10 / 100,
40
+ gTokenFeeP: contractParams.gTokenFeeP / 1e10 / 100,
41
+ };
42
+ };
43
+ exports.convertGlobalTradeFeeParams = convertGlobalTradeFeeParams;
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @dev Trading fee calculations for opening and closing positions
3
+ */
4
+ import { Fee, PairIndex, Trade, TradeInfo, TradeFeesData } from "../../types";
5
+ import { GetBorrowingFeeContext } from "../borrowing";
6
+ import * as BorrowingFee from "../borrowing/types";
7
+ import { GetPairBorrowingFeeV2Context } from "../borrowingV2";
8
+ import { GetPairFundingFeeContext } from "../fundingFees/pairContext";
9
+ import { GetTradeFeesContext, GetLiquidationFeesContext, GetClosingFeeContext, TradeFeesBreakdown, TradeHoldingFees } from "./types";
10
+ import { ContractsVersion } from "../../../contracts/types";
11
+ /**
12
+ * @dev Returns the total fee for a trade in collateral tokens
13
+ * @dev Mirrors the contract's getTotalTradeFeesCollateral function
14
+ * @param collateralIndex Collateral index (not used in calculation, for consistency)
15
+ * @param trader Trader address (for fee tier lookup)
16
+ * @param pairIndex Index of the trading pair
17
+ * @param positionSizeCollateral Position size in collateral tokens
18
+ * @param isCounterTrade Whether the trade is a counter trade
19
+ * @param context Context containing fee parameters and settings
20
+ * @returns Total fee in collateral tokens
21
+ */
22
+ export declare const getTotalTradeFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, positionSizeCollateral: number, isCounterTrade: boolean, context: GetTradeFeesContext) => number;
23
+ /**
24
+ * @dev Returns the fee breakdown for a trade
25
+ * @dev Mirrors the contract's getTradeFeesCollateral function
26
+ */
27
+ export declare const getTradeFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, positionSizeCollateral: number, isCounterTrade: boolean, context: GetTradeFeesContext) => TradeFeesBreakdown;
28
+ /**
29
+ * @dev Returns total liquidation fee for a trade in collateral tokens
30
+ * @dev Mirrors the contract's getTotalTradeLiqFeesCollateral function
31
+ */
32
+ export declare const getTotalTradeLiqFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, collateralAmount: number, context: GetLiquidationFeesContext) => number;
33
+ /**
34
+ * @dev Legacy function for backward compatibility
35
+ * @deprecated Use getTotalTradeFeesCollateral instead
36
+ */
37
+ export declare const getClosingFee: (collateralAmount: number, leverage: number, pairIndex: PairIndex, pairFee: Fee | undefined, _collateralPriceUsd?: number | undefined, isCounterTrade?: boolean, trader?: string, context?: GetClosingFeeContext) => number;
38
+ /**
39
+ * @dev Context for holding fees calculation with structured sub-contexts
40
+ */
41
+ export type GetStructuredHoldingFeesContext = {
42
+ contractsVersion: ContractsVersion;
43
+ currentTimestamp: number;
44
+ collateralPriceUsd: number;
45
+ borrowingV1?: GetBorrowingFeeContext;
46
+ borrowingV2?: GetPairBorrowingFeeV2Context;
47
+ funding?: GetPairFundingFeeContext;
48
+ initialAccFeesV1?: BorrowingFee.InitialAccFees;
49
+ };
50
+ /**
51
+ * @dev Calculates total holding fees for a trade (funding + borrowing fees)
52
+ * @param trade The trade to calculate fees for
53
+ * @param tradeInfo Trade info containing contracts version
54
+ * @param tradeFeesData Trade fees data containing initial acc fees
55
+ * @param currentPairPrice Current pair price
56
+ * @param context Structured context with sub-contexts for each fee type
57
+ * @returns Object containing all holding fee components
58
+ */
59
+ export declare const getTradePendingHoldingFeesCollateral: (trade: Trade, tradeInfo: TradeInfo, tradeFeesData: TradeFeesData, currentPairPrice: number, context: GetStructuredHoldingFeesContext) => TradeHoldingFees;
60
+ export * from "./types";
61
+ export * from "./converter";
62
+ export * from "./builder";
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Trading fee calculations for opening and closing positions
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.getTradePendingHoldingFeesCollateral = exports.getClosingFee = exports.getTotalTradeLiqFeesCollateral = exports.getTradeFeesCollateral = exports.getTotalTradeFeesCollateral = void 0;
21
+ const borrowing_1 = require("../borrowing");
22
+ const borrowingV2_1 = require("../borrowingV2");
23
+ const fundingFees_1 = require("../fundingFees");
24
+ const tiers_1 = require("../tiers");
25
+ const types_1 = require("../../../contracts/types");
26
+ /**
27
+ * @dev Returns the total fee for a trade in collateral tokens
28
+ * @dev Mirrors the contract's getTotalTradeFeesCollateral function
29
+ * @param collateralIndex Collateral index (not used in calculation, for consistency)
30
+ * @param trader Trader address (for fee tier lookup)
31
+ * @param pairIndex Index of the trading pair
32
+ * @param positionSizeCollateral Position size in collateral tokens
33
+ * @param isCounterTrade Whether the trade is a counter trade
34
+ * @param context Context containing fee parameters and settings
35
+ * @returns Total fee in collateral tokens
36
+ */
37
+ const getTotalTradeFeesCollateral = (collateralIndex, trader, pairIndex, positionSizeCollateral, isCounterTrade, context) => {
38
+ var _a;
39
+ const { fee, collateralPriceUsd } = context;
40
+ const { totalPositionSizeFeeP, minPositionSizeUsd } = fee;
41
+ // Get counter trade fee rate multiplier (default 1 = 1x)
42
+ const counterTradeFeeRateMultiplier = isCounterTrade && ((_a = context.counterTradeSettings) === null || _a === void 0 ? void 0 : _a[pairIndex])
43
+ ? context.counterTradeSettings[pairIndex].feeRateMultiplier
44
+ : 1;
45
+ // Apply counter trade multiplier to position size
46
+ const adjustedPositionSizeCollateral = positionSizeCollateral * counterTradeFeeRateMultiplier;
47
+ // Calculate minimum position size in collateral
48
+ const minPositionSizeCollateral = minPositionSizeUsd / collateralPriceUsd;
49
+ // Use max of adjusted position size and minimum position size
50
+ const positionSizeBasis = Math.max(adjustedPositionSizeCollateral, minPositionSizeCollateral);
51
+ // Calculate raw fee
52
+ const rawFee = totalPositionSizeFeeP * positionSizeBasis;
53
+ // Apply trader fee tier if available
54
+ return (0, tiers_1.calculateFeeAmount)(trader, rawFee, context.traderFeeMultiplier);
55
+ };
56
+ exports.getTotalTradeFeesCollateral = getTotalTradeFeesCollateral;
57
+ /**
58
+ * @dev Returns the fee breakdown for a trade
59
+ * @dev Mirrors the contract's getTradeFeesCollateral function
60
+ */
61
+ const getTradeFeesCollateral = (collateralIndex, trader, pairIndex, positionSizeCollateral, isCounterTrade, context) => {
62
+ const totalFees = (0, exports.getTotalTradeFeesCollateral)(collateralIndex, trader, pairIndex, positionSizeCollateral, isCounterTrade, context);
63
+ const { globalTradeFeeParams } = context;
64
+ const totalP = globalTradeFeeParams.referralFeeP +
65
+ globalTradeFeeParams.govFeeP +
66
+ globalTradeFeeParams.triggerOrderFeeP +
67
+ globalTradeFeeParams.gnsOtcFeeP +
68
+ globalTradeFeeParams.gTokenFeeP;
69
+ // Distribute fees proportionally
70
+ return {
71
+ referralFeeCollateral: (totalFees * globalTradeFeeParams.referralFeeP) / totalP,
72
+ govFeeCollateral: (totalFees * globalTradeFeeParams.govFeeP) / totalP,
73
+ triggerFeeCollateral: (totalFees * globalTradeFeeParams.triggerOrderFeeP) / totalP,
74
+ gnsOtcFeeCollateral: (totalFees * globalTradeFeeParams.gnsOtcFeeP) / totalP,
75
+ gTokenFeeCollateral: (totalFees * globalTradeFeeParams.gTokenFeeP) / totalP,
76
+ };
77
+ };
78
+ exports.getTradeFeesCollateral = getTradeFeesCollateral;
79
+ /**
80
+ * @dev Returns total liquidation fee for a trade in collateral tokens
81
+ * @dev Mirrors the contract's getTotalTradeLiqFeesCollateral function
82
+ */
83
+ const getTotalTradeLiqFeesCollateral = (collateralIndex, trader, pairIndex, collateralAmount, context) => {
84
+ const { totalLiqCollateralFeeP } = context;
85
+ // Calculate raw liquidation fee
86
+ const rawFee = collateralAmount * totalLiqCollateralFeeP;
87
+ // Apply trader fee tier if available
88
+ return (0, tiers_1.calculateFeeAmount)(trader, rawFee, context.traderFeeMultiplier);
89
+ };
90
+ exports.getTotalTradeLiqFeesCollateral = getTotalTradeLiqFeesCollateral;
91
+ /**
92
+ * @dev Legacy function for backward compatibility
93
+ * @deprecated Use getTotalTradeFeesCollateral instead
94
+ */
95
+ const getClosingFee = (collateralAmount, leverage, pairIndex, pairFee,
96
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
97
+ _collateralPriceUsd = 0, // Kept for backward compatibility
98
+ isCounterTrade = false, trader, context) => {
99
+ if (!pairFee || !context)
100
+ return 0;
101
+ const positionSizeCollateral = collateralAmount * leverage;
102
+ return (0, exports.getTotalTradeFeesCollateral)(0, // collateralIndex not used
103
+ trader || "", pairIndex, positionSizeCollateral, isCounterTrade, context);
104
+ };
105
+ exports.getClosingFee = getClosingFee;
106
+ /**
107
+ * @dev Calculates total holding fees for a trade (funding + borrowing fees)
108
+ * @param trade The trade to calculate fees for
109
+ * @param tradeInfo Trade info containing contracts version
110
+ * @param tradeFeesData Trade fees data containing initial acc fees
111
+ * @param currentPairPrice Current pair price
112
+ * @param context Structured context with sub-contexts for each fee type
113
+ * @returns Object containing all holding fee components
114
+ */
115
+ const getTradePendingHoldingFeesCollateral = (trade, tradeInfo, tradeFeesData, currentPairPrice, context) => {
116
+ const positionSizeCollateral = trade.collateralAmount * trade.leverage;
117
+ // Calculate funding fees (v10+ only)
118
+ let fundingFeeCollateral = 0;
119
+ if (context.contractsVersion >= types_1.ContractsVersion.V10 &&
120
+ context.funding &&
121
+ tradeFeesData.initialAccFundingFeeP !== undefined) {
122
+ fundingFeeCollateral = (0, fundingFees_1.getTradeFundingFeesCollateral)(trade, tradeInfo, tradeFeesData, currentPairPrice, Object.assign(Object.assign({}, context.funding), { currentTimestamp: context.currentTimestamp }));
123
+ }
124
+ // Calculate borrowing fees v2 (v10+ only)
125
+ let borrowingFeeCollateral = 0;
126
+ if (context.contractsVersion >= types_1.ContractsVersion.V10 &&
127
+ context.borrowingV2 &&
128
+ tradeFeesData.initialAccBorrowingFeeP !== undefined) {
129
+ borrowingFeeCollateral = (0, borrowingV2_1.getTradeBorrowingFeesCollateral)({
130
+ positionSizeCollateral,
131
+ openPrice: trade.openPrice,
132
+ currentPairPrice,
133
+ initialAccBorrowingFeeP: tradeFeesData.initialAccBorrowingFeeP,
134
+ currentTimestamp: context.currentTimestamp,
135
+ }, context.borrowingV2);
136
+ }
137
+ // Calculate v1 borrowing fees (some markets use v1 indefinitely)
138
+ let borrowingFeeCollateral_old = 0;
139
+ if (context.borrowingV1 && context.initialAccFeesV1) {
140
+ borrowingFeeCollateral_old = (0, borrowing_1.getBorrowingFee)(positionSizeCollateral, trade.pairIndex, trade.long, context.initialAccFeesV1, context.borrowingV1);
141
+ }
142
+ return {
143
+ fundingFeeCollateral,
144
+ borrowingFeeCollateral,
145
+ borrowingFeeCollateral_old,
146
+ totalFeeCollateral: fundingFeeCollateral +
147
+ borrowingFeeCollateral +
148
+ borrowingFeeCollateral_old,
149
+ };
150
+ };
151
+ exports.getTradePendingHoldingFeesCollateral = getTradePendingHoldingFeesCollateral;
152
+ // Export types
153
+ __exportStar(require("./types"), exports);
154
+ __exportStar(require("./converter"), exports);
155
+ __exportStar(require("./builder"), exports);
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @dev Types for trading fee calculations (open/close position fees)
3
+ */
4
+ import { Fee, CounterTradeSettings, GlobalTradeFeeParams } from "../../types";
5
+ /**
6
+ * @dev Breakdown of trading fees into components
7
+ */
8
+ export type TradeFeesBreakdown = {
9
+ referralFeeCollateral: number;
10
+ govFeeCollateral: number;
11
+ triggerFeeCollateral: number;
12
+ gnsOtcFeeCollateral: number;
13
+ gTokenFeeCollateral: number;
14
+ };
15
+ /**
16
+ * @dev Context for calculating trading fees
17
+ */
18
+ export type GetTradeFeesContext = {
19
+ fee: Fee;
20
+ collateralPriceUsd: number;
21
+ globalTradeFeeParams: GlobalTradeFeeParams;
22
+ counterTradeSettings?: {
23
+ [pairIndex: number]: CounterTradeSettings;
24
+ };
25
+ traderFeeMultiplier?: number;
26
+ };
27
+ /**
28
+ * @dev Context for calculating liquidation fees
29
+ */
30
+ export type GetLiquidationFeesContext = {
31
+ totalLiqCollateralFeeP: number;
32
+ globalTradeFeeParams: GlobalTradeFeeParams;
33
+ traderFeeMultiplier?: number;
34
+ };
35
+ /**
36
+ * @dev Legacy support
37
+ */
38
+ export type GetClosingFeeContext = GetTradeFeesContext;
39
+ /**
40
+ * @dev Holding fees breakdown (funding + borrowing)
41
+ */
42
+ export type TradeHoldingFees = {
43
+ fundingFeeCollateral: number;
44
+ borrowingFeeCollateral: number;
45
+ borrowingFeeCollateral_old: number;
46
+ totalFeeCollateral: number;
47
+ };
48
+ export type { GlobalTradeFeeParams };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Types for trading fee calculations (open/close position fees)
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @dev Liquidation price context builder module
3
+ * @dev Provides builder functions for creating liquidation price contexts
4
+ */
5
+ import { GlobalTradingVariablesType } from "../../backend/tradingVariables/types";
6
+ import { TradeContainer, UserPriceImpact } from "../types";
7
+ import { GetLiquidationPriceContext } from "./types";
8
+ /**
9
+ * @dev Builds a complete context for liquidation price calculations
10
+ * @param globalTradingVariables The transformed global trading variables from backend
11
+ * @param tradeContainer Full trade container with trade, tradeInfo, fees data and liquidation params
12
+ * @param additionalParams Additional parameters not available in trading variables
13
+ * @returns Complete context ready for getLiquidationPrice
14
+ */
15
+ export declare const buildLiquidationPriceContext: (globalTradingVariables: GlobalTradingVariablesType, tradeContainer: TradeContainer, additionalParams: {
16
+ currentBlock: number;
17
+ currentTimestamp: number;
18
+ currentPairPrice: number;
19
+ spreadP: number;
20
+ traderFeeMultiplier?: number;
21
+ additionalFeeCollateral?: number;
22
+ partialCloseMultiplier?: number;
23
+ beforeOpened?: boolean;
24
+ userPriceImpact?: UserPriceImpact;
25
+ }) => GetLiquidationPriceContext;