@gainsnetwork/sdk 0.0.0-me-rc1

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 (236) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/lib/backend/globalTrades/index.d.ts +11 -0
  4. package/lib/backend/globalTrades/index.js +69 -0
  5. package/lib/backend/index.d.ts +3 -0
  6. package/lib/backend/index.js +28 -0
  7. package/lib/backend/tradingVariables/backend.types.d.ts +337 -0
  8. package/lib/backend/tradingVariables/backend.types.js +2 -0
  9. package/lib/backend/tradingVariables/converter.d.ts +38 -0
  10. package/lib/backend/tradingVariables/converter.js +359 -0
  11. package/lib/backend/tradingVariables/index.d.ts +5 -0
  12. package/lib/backend/tradingVariables/index.js +98 -0
  13. package/lib/backend/tradingVariables/types.d.ts +115 -0
  14. package/lib/backend/tradingVariables/types.js +14 -0
  15. package/lib/constants.d.ts +483 -0
  16. package/lib/constants.js +516 -0
  17. package/lib/contracts/addresses.d.ts +3 -0
  18. package/lib/contracts/addresses.js +35 -0
  19. package/lib/contracts/addresses.json +266 -0
  20. package/lib/contracts/index.d.ts +14 -0
  21. package/lib/contracts/index.js +92 -0
  22. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +9327 -0
  23. package/lib/contracts/types/generated/GNSMultiCollatDiamond.js +2 -0
  24. package/lib/contracts/types/generated/GToken.d.ts +1917 -0
  25. package/lib/contracts/types/generated/GToken.js +2 -0
  26. package/lib/contracts/types/generated/GTokenOpenPnlFeed.d.ts +557 -0
  27. package/lib/contracts/types/generated/GTokenOpenPnlFeed.js +2 -0
  28. package/lib/contracts/types/generated/common.d.ts +22 -0
  29. package/lib/contracts/types/generated/common.js +2 -0
  30. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +276 -0
  31. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +21557 -0
  32. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.d.ts +59 -0
  33. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.js +765 -0
  34. package/lib/contracts/types/generated/factories/GToken__factory.d.ts +121 -0
  35. package/lib/contracts/types/generated/factories/GToken__factory.js +2867 -0
  36. package/lib/contracts/types/generated/factories/index.d.ts +3 -0
  37. package/lib/contracts/types/generated/factories/index.js +12 -0
  38. package/lib/contracts/types/generated/index.d.ts +7 -0
  39. package/lib/contracts/types/generated/index.js +33 -0
  40. package/lib/contracts/types/index.d.ts +37 -0
  41. package/lib/contracts/types/index.js +30 -0
  42. package/lib/contracts/utils/borrowingFees.d.ts +9 -0
  43. package/lib/contracts/utils/borrowingFees.js +43 -0
  44. package/lib/contracts/utils/index.d.ts +3 -0
  45. package/lib/contracts/utils/index.js +19 -0
  46. package/lib/contracts/utils/openTrades.d.ts +12 -0
  47. package/lib/contracts/utils/openTrades.js +172 -0
  48. package/lib/contracts/utils/pairs.d.ts +18 -0
  49. package/lib/contracts/utils/pairs.js +602 -0
  50. package/lib/index.d.ts +10 -0
  51. package/lib/index.js +30 -0
  52. package/lib/markets/collateral/converter.d.ts +5 -0
  53. package/lib/markets/collateral/converter.js +11 -0
  54. package/lib/markets/collateral/index.d.ts +1 -0
  55. package/lib/markets/collateral/index.js +17 -0
  56. package/lib/markets/collateral/types.d.ts +7 -0
  57. package/lib/markets/collateral/types.js +2 -0
  58. package/lib/markets/commodities.d.ts +1 -0
  59. package/lib/markets/commodities.js +7 -0
  60. package/lib/markets/crypto.d.ts +1 -0
  61. package/lib/markets/crypto.js +6 -0
  62. package/lib/markets/forex.d.ts +3 -0
  63. package/lib/markets/forex.js +8 -0
  64. package/lib/markets/holdingFees/index.d.ts +46 -0
  65. package/lib/markets/holdingFees/index.js +104 -0
  66. package/lib/markets/holdingFees/types.d.ts +23 -0
  67. package/lib/markets/holdingFees/types.js +5 -0
  68. package/lib/markets/index.d.ts +11 -0
  69. package/lib/markets/index.js +27 -0
  70. package/lib/markets/indices.d.ts +1 -0
  71. package/lib/markets/indices.js +6 -0
  72. package/lib/markets/leverage/builder.d.ts +12 -0
  73. package/lib/markets/leverage/builder.js +25 -0
  74. package/lib/markets/leverage/getMarketLeverageRestrictions.d.ts +7 -0
  75. package/lib/markets/leverage/getMarketLeverageRestrictions.js +38 -0
  76. package/lib/markets/leverage/index.d.ts +3 -0
  77. package/lib/markets/leverage/index.js +19 -0
  78. package/lib/markets/leverage/types.d.ts +15 -0
  79. package/lib/markets/leverage/types.js +2 -0
  80. package/lib/markets/oi/converter.d.ts +62 -0
  81. package/lib/markets/oi/converter.js +111 -0
  82. package/lib/markets/oi/index.d.ts +49 -0
  83. package/lib/markets/oi/index.js +77 -0
  84. package/lib/markets/oi/types.d.ts +89 -0
  85. package/lib/markets/oi/types.js +6 -0
  86. package/lib/markets/price/builder.d.ts +25 -0
  87. package/lib/markets/price/builder.js +69 -0
  88. package/lib/markets/price/index.d.ts +7 -0
  89. package/lib/markets/price/index.js +23 -0
  90. package/lib/markets/price/marketPrice.d.ts +13 -0
  91. package/lib/markets/price/marketPrice.js +35 -0
  92. package/lib/markets/price/signedPrices.d.ts +36 -0
  93. package/lib/markets/price/signedPrices.js +181 -0
  94. package/lib/markets/price/types.d.ts +50 -0
  95. package/lib/markets/price/types.js +5 -0
  96. package/lib/markets/schedules/builders.d.ts +7 -0
  97. package/lib/markets/schedules/builders.js +81 -0
  98. package/lib/markets/schedules/checkers.d.ts +7 -0
  99. package/lib/markets/schedules/checkers.js +36 -0
  100. package/lib/markets/schedules/holidays.d.ts +4 -0
  101. package/lib/markets/schedules/holidays.js +77 -0
  102. package/lib/markets/schedules/index.d.ts +9 -0
  103. package/lib/markets/schedules/index.js +45 -0
  104. package/lib/markets/schedules/types.d.ts +43 -0
  105. package/lib/markets/schedules/types.js +37 -0
  106. package/lib/markets/stocks.d.ts +3 -0
  107. package/lib/markets/stocks.js +15 -0
  108. package/lib/pricing/depthBands.d.ts +39 -0
  109. package/lib/pricing/depthBands.js +94 -0
  110. package/lib/pricing/index.d.ts +4 -0
  111. package/lib/pricing/index.js +20 -0
  112. package/lib/trade/counterTrade/index.d.ts +2 -0
  113. package/lib/trade/counterTrade/index.js +18 -0
  114. package/lib/trade/counterTrade/types.d.ts +7 -0
  115. package/lib/trade/counterTrade/types.js +2 -0
  116. package/lib/trade/counterTrade/validateCounterTrade.d.ts +10 -0
  117. package/lib/trade/counterTrade/validateCounterTrade.js +29 -0
  118. package/lib/trade/effectiveLeverage/getTradeNewEffectiveLeverage.d.ts +20 -0
  119. package/lib/trade/effectiveLeverage/getTradeNewEffectiveLeverage.js +42 -0
  120. package/lib/trade/effectiveLeverage/index.d.ts +2 -0
  121. package/lib/trade/effectiveLeverage/index.js +21 -0
  122. package/lib/trade/effectiveLeverage/types.d.ts +30 -0
  123. package/lib/trade/effectiveLeverage/types.js +2 -0
  124. package/lib/trade/fees/borrowing/builder.d.ts +14 -0
  125. package/lib/trade/fees/borrowing/builder.js +33 -0
  126. package/lib/trade/fees/borrowing/converter.d.ts +17 -0
  127. package/lib/trade/fees/borrowing/converter.js +46 -0
  128. package/lib/trade/fees/borrowing/index.d.ts +81 -0
  129. package/lib/trade/fees/borrowing/index.js +259 -0
  130. package/lib/trade/fees/borrowing/types.d.ts +36 -0
  131. package/lib/trade/fees/borrowing/types.js +2 -0
  132. package/lib/trade/fees/borrowingV2/builder.d.ts +6 -0
  133. package/lib/trade/fees/borrowingV2/builder.js +23 -0
  134. package/lib/trade/fees/borrowingV2/converter.d.ts +75 -0
  135. package/lib/trade/fees/borrowingV2/converter.js +132 -0
  136. package/lib/trade/fees/borrowingV2/fetcher.d.ts +76 -0
  137. package/lib/trade/fees/borrowingV2/fetcher.js +179 -0
  138. package/lib/trade/fees/borrowingV2/index.d.ts +48 -0
  139. package/lib/trade/fees/borrowingV2/index.js +112 -0
  140. package/lib/trade/fees/borrowingV2/types.d.ts +95 -0
  141. package/lib/trade/fees/borrowingV2/types.js +5 -0
  142. package/lib/trade/fees/converter.d.ts +48 -0
  143. package/lib/trade/fees/converter.js +114 -0
  144. package/lib/trade/fees/fundingFees/builder.d.ts +9 -0
  145. package/lib/trade/fees/fundingFees/builder.js +38 -0
  146. package/lib/trade/fees/fundingFees/converter.d.ts +102 -0
  147. package/lib/trade/fees/fundingFees/converter.js +196 -0
  148. package/lib/trade/fees/fundingFees/fetcher.d.ts +66 -0
  149. package/lib/trade/fees/fundingFees/fetcher.js +141 -0
  150. package/lib/trade/fees/fundingFees/index.d.ts +124 -0
  151. package/lib/trade/fees/fundingFees/index.js +309 -0
  152. package/lib/trade/fees/fundingFees/pairContext.d.ts +33 -0
  153. package/lib/trade/fees/fundingFees/pairContext.js +17 -0
  154. package/lib/trade/fees/fundingFees/types.d.ts +77 -0
  155. package/lib/trade/fees/fundingFees/types.js +5 -0
  156. package/lib/trade/fees/index.d.ts +11 -0
  157. package/lib/trade/fees/index.js +87 -0
  158. package/lib/trade/fees/tiers/converter.d.ts +64 -0
  159. package/lib/trade/fees/tiers/converter.js +100 -0
  160. package/lib/trade/fees/tiers/index.d.ts +46 -0
  161. package/lib/trade/fees/tiers/index.js +135 -0
  162. package/lib/trade/fees/tiers/types.d.ts +22 -0
  163. package/lib/trade/fees/tiers/types.js +8 -0
  164. package/lib/trade/fees/trading/builder.d.ts +19 -0
  165. package/lib/trade/fees/trading/builder.js +21 -0
  166. package/lib/trade/fees/trading/converter.d.ts +32 -0
  167. package/lib/trade/fees/trading/converter.js +47 -0
  168. package/lib/trade/fees/trading/index.d.ts +62 -0
  169. package/lib/trade/fees/trading/index.js +157 -0
  170. package/lib/trade/fees/trading/types.d.ts +46 -0
  171. package/lib/trade/fees/trading/types.js +5 -0
  172. package/lib/trade/index.d.ts +10 -0
  173. package/lib/trade/index.js +26 -0
  174. package/lib/trade/liquidation/builder.d.ts +25 -0
  175. package/lib/trade/liquidation/builder.js +58 -0
  176. package/lib/trade/liquidation/converter.d.ts +23 -0
  177. package/lib/trade/liquidation/converter.js +46 -0
  178. package/lib/trade/liquidation/index.d.ts +29 -0
  179. package/lib/trade/liquidation/index.js +216 -0
  180. package/lib/trade/liquidation/types.d.ts +38 -0
  181. package/lib/trade/liquidation/types.js +2 -0
  182. package/lib/trade/oiWindows.d.ts +3 -0
  183. package/lib/trade/oiWindows.js +19 -0
  184. package/lib/trade/pnl/builder.d.ts +16 -0
  185. package/lib/trade/pnl/builder.js +43 -0
  186. package/lib/trade/pnl/converter.d.ts +47 -0
  187. package/lib/trade/pnl/converter.js +72 -0
  188. package/lib/trade/pnl/index.d.ts +91 -0
  189. package/lib/trade/pnl/index.js +301 -0
  190. package/lib/trade/pnl/types.d.ts +79 -0
  191. package/lib/trade/pnl/types.js +5 -0
  192. package/lib/trade/priceImpact/close/builder.d.ts +23 -0
  193. package/lib/trade/priceImpact/close/builder.js +44 -0
  194. package/lib/trade/priceImpact/close/index.d.ts +22 -0
  195. package/lib/trade/priceImpact/close/index.js +137 -0
  196. package/lib/trade/priceImpact/close/types.d.ts +47 -0
  197. package/lib/trade/priceImpact/close/types.js +5 -0
  198. package/lib/trade/priceImpact/cumulVol/builder.d.ts +22 -0
  199. package/lib/trade/priceImpact/cumulVol/builder.js +53 -0
  200. package/lib/trade/priceImpact/cumulVol/converter.d.ts +94 -0
  201. package/lib/trade/priceImpact/cumulVol/converter.js +155 -0
  202. package/lib/trade/priceImpact/cumulVol/index.d.ts +109 -0
  203. package/lib/trade/priceImpact/cumulVol/index.js +316 -0
  204. package/lib/trade/priceImpact/cumulVol/types.d.ts +11 -0
  205. package/lib/trade/priceImpact/cumulVol/types.js +2 -0
  206. package/lib/trade/priceImpact/index.d.ts +21 -0
  207. package/lib/trade/priceImpact/index.js +79 -0
  208. package/lib/trade/priceImpact/open/builder.d.ts +21 -0
  209. package/lib/trade/priceImpact/open/builder.js +42 -0
  210. package/lib/trade/priceImpact/open/index.d.ts +23 -0
  211. package/lib/trade/priceImpact/open/index.js +82 -0
  212. package/lib/trade/priceImpact/open/types.d.ts +45 -0
  213. package/lib/trade/priceImpact/open/types.js +5 -0
  214. package/lib/trade/priceImpact/skew/builder.d.ts +12 -0
  215. package/lib/trade/priceImpact/skew/builder.js +27 -0
  216. package/lib/trade/priceImpact/skew/converter.d.ts +46 -0
  217. package/lib/trade/priceImpact/skew/converter.js +81 -0
  218. package/lib/trade/priceImpact/skew/fetcher.d.ts +60 -0
  219. package/lib/trade/priceImpact/skew/fetcher.js +160 -0
  220. package/lib/trade/priceImpact/skew/index.d.ts +53 -0
  221. package/lib/trade/priceImpact/skew/index.js +148 -0
  222. package/lib/trade/priceImpact/skew/types.d.ts +44 -0
  223. package/lib/trade/priceImpact/skew/types.js +5 -0
  224. package/lib/trade/spread.d.ts +5 -0
  225. package/lib/trade/spread.js +19 -0
  226. package/lib/trade/types.d.ts +777 -0
  227. package/lib/trade/types.js +478 -0
  228. package/lib/trade/utils.d.ts +18 -0
  229. package/lib/trade/utils.js +30 -0
  230. package/lib/utils/index.d.ts +1 -0
  231. package/lib/utils/index.js +17 -0
  232. package/lib/utils/packing.d.ts +2 -0
  233. package/lib/utils/packing.js +39 -0
  234. package/lib/vault/index.d.ts +10 -0
  235. package/lib/vault/index.js +10 -0
  236. package/package.json +106 -0
@@ -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,11 @@
1
+ export * from "./borrowing";
2
+ export * from "./tiers";
3
+ export * from "./trading";
4
+ export * from "../../markets/holdingFees";
5
+ export { convertTradeFeesData, convertTradeFeesDataArray, convertUiRealizedPnlData, convertUiRealizedPnlDataArray, encodeTradeFeesData, encodeUiRealizedPnlData, } from "./converter";
6
+ export { BorrowingFeeV2, borrowingFeeV2Utils, getPairPendingAccBorrowingFees as getPairPendingAccBorrowingFeesV2, getTradeBorrowingFeesCollateral as getTradeBorrowingFeesCollateralV2, getPairBorrowingFees as getPairBorrowingFeesV2, MAX_BORROWING_RATE_PER_SECOND as MAX_BORROWING_RATE_PER_SECOND_V2, BORROWING_V2_PRECISION, } from "./borrowingV2";
7
+ export { convertBorrowingFeeParams as convertBorrowingFeeParamsV2, convertBorrowingFeeParamsArray as convertBorrowingFeeParamsArrayV2, convertPairBorrowingFeeData as convertPairBorrowingFeeDataV2, convertPairBorrowingFeeDataArray as convertPairBorrowingFeeDataArrayV2, convertTradeInitialAccFees as convertTradeInitialAccFeesV2, convertTradeInitialAccFeesArray as convertTradeInitialAccFeesArrayV2, createBorrowingV2Context, isValidBorrowingRate as isValidBorrowingRateV2, borrowingRateToAPR as borrowingRateToAPRV2, aprToBorrowingRate as aprToBorrowingRateV2, } from "./borrowingV2/converter";
8
+ export { fetchBorrowingFeeParamsV2, fetchPairBorrowingFeeDataV2, fetchTradeBorrowingFeesCollateralV2, fetchPairPendingAccBorrowingFeesV2, fetchAllBorrowingV2Data, createBorrowingV2ContextFromContract, createBorrowingV2ContextFromArrays, fetchBorrowingV2DataForPairs, } from "./borrowingV2/fetcher";
9
+ export { buildBorrowingV2Context } from "./borrowingV2/builder";
10
+ export { FundingFees, getCurrentFundingVelocityPerYear, getSecondsToReachZeroRate, getAvgFundingRatePerSecondP, getLongShortAprMultiplier, getPairPendingAccFundingFees, getTradeFundingFeesCollateral, getTradeFundingFeesCollateralSimple, getTradeFundingFees, } from "./fundingFees";
11
+ export { convertFundingFeeParams, convertFundingFeeParamsArray, convertPairFundingFeeData, convertPairFundingFeeDataArray, convertPairGlobalParams, convertPairGlobalParamsArray, convertTradeInitialAccFundingFees, createFundingFeeContext, isValidFundingRate, fundingRateToAPR, aprToFundingRate, calculateVelocityFromSkew, FUNDING_FEES_PRECISION, } from "./fundingFees/converter";
@@ -0,0 +1,87 @@
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
+ exports.isValidFundingRate = exports.createFundingFeeContext = exports.convertTradeInitialAccFundingFees = exports.convertPairGlobalParamsArray = exports.convertPairGlobalParams = exports.convertPairFundingFeeDataArray = exports.convertPairFundingFeeData = exports.convertFundingFeeParamsArray = exports.convertFundingFeeParams = exports.getTradeFundingFees = exports.getTradeFundingFeesCollateralSimple = exports.getTradeFundingFeesCollateral = exports.getPairPendingAccFundingFees = exports.getLongShortAprMultiplier = exports.getAvgFundingRatePerSecondP = exports.getSecondsToReachZeroRate = exports.getCurrentFundingVelocityPerYear = exports.FundingFees = exports.buildBorrowingV2Context = exports.fetchBorrowingV2DataForPairs = exports.createBorrowingV2ContextFromArrays = exports.createBorrowingV2ContextFromContract = exports.fetchAllBorrowingV2Data = exports.fetchPairPendingAccBorrowingFeesV2 = exports.fetchTradeBorrowingFeesCollateralV2 = exports.fetchPairBorrowingFeeDataV2 = exports.fetchBorrowingFeeParamsV2 = exports.aprToBorrowingRateV2 = exports.borrowingRateToAPRV2 = exports.isValidBorrowingRateV2 = exports.createBorrowingV2Context = exports.convertTradeInitialAccFeesArrayV2 = exports.convertTradeInitialAccFeesV2 = exports.convertPairBorrowingFeeDataArrayV2 = exports.convertPairBorrowingFeeDataV2 = exports.convertBorrowingFeeParamsArrayV2 = exports.convertBorrowingFeeParamsV2 = exports.BORROWING_V2_PRECISION = exports.MAX_BORROWING_RATE_PER_SECOND_V2 = exports.getPairBorrowingFeesV2 = exports.getTradeBorrowingFeesCollateralV2 = exports.getPairPendingAccBorrowingFeesV2 = exports.borrowingFeeV2Utils = exports.BorrowingFeeV2 = exports.encodeUiRealizedPnlData = exports.encodeTradeFeesData = exports.convertUiRealizedPnlDataArray = exports.convertUiRealizedPnlData = exports.convertTradeFeesDataArray = exports.convertTradeFeesData = void 0;
18
+ exports.FUNDING_FEES_PRECISION = exports.calculateVelocityFromSkew = exports.aprToFundingRate = exports.fundingRateToAPR = void 0;
19
+ __exportStar(require("./borrowing"), exports);
20
+ __exportStar(require("./tiers"), exports);
21
+ __exportStar(require("./trading"), exports);
22
+ __exportStar(require("../../markets/holdingFees"), exports);
23
+ // TradeFeesData and UiRealizedPnlData converters
24
+ var converter_1 = require("./converter");
25
+ Object.defineProperty(exports, "convertTradeFeesData", { enumerable: true, get: function () { return converter_1.convertTradeFeesData; } });
26
+ Object.defineProperty(exports, "convertTradeFeesDataArray", { enumerable: true, get: function () { return converter_1.convertTradeFeesDataArray; } });
27
+ Object.defineProperty(exports, "convertUiRealizedPnlData", { enumerable: true, get: function () { return converter_1.convertUiRealizedPnlData; } });
28
+ Object.defineProperty(exports, "convertUiRealizedPnlDataArray", { enumerable: true, get: function () { return converter_1.convertUiRealizedPnlDataArray; } });
29
+ Object.defineProperty(exports, "encodeTradeFeesData", { enumerable: true, get: function () { return converter_1.encodeTradeFeesData; } });
30
+ Object.defineProperty(exports, "encodeUiRealizedPnlData", { enumerable: true, get: function () { return converter_1.encodeUiRealizedPnlData; } });
31
+ // Borrowing V2 exports with explicit naming to avoid conflicts
32
+ var borrowingV2_1 = require("./borrowingV2");
33
+ Object.defineProperty(exports, "BorrowingFeeV2", { enumerable: true, get: function () { return borrowingV2_1.BorrowingFeeV2; } });
34
+ Object.defineProperty(exports, "borrowingFeeV2Utils", { enumerable: true, get: function () { return borrowingV2_1.borrowingFeeV2Utils; } });
35
+ Object.defineProperty(exports, "getPairPendingAccBorrowingFeesV2", { enumerable: true, get: function () { return borrowingV2_1.getPairPendingAccBorrowingFees; } });
36
+ Object.defineProperty(exports, "getTradeBorrowingFeesCollateralV2", { enumerable: true, get: function () { return borrowingV2_1.getTradeBorrowingFeesCollateral; } });
37
+ Object.defineProperty(exports, "getPairBorrowingFeesV2", { enumerable: true, get: function () { return borrowingV2_1.getPairBorrowingFees; } });
38
+ Object.defineProperty(exports, "MAX_BORROWING_RATE_PER_SECOND_V2", { enumerable: true, get: function () { return borrowingV2_1.MAX_BORROWING_RATE_PER_SECOND; } });
39
+ Object.defineProperty(exports, "BORROWING_V2_PRECISION", { enumerable: true, get: function () { return borrowingV2_1.BORROWING_V2_PRECISION; } });
40
+ var converter_2 = require("./borrowingV2/converter");
41
+ Object.defineProperty(exports, "convertBorrowingFeeParamsV2", { enumerable: true, get: function () { return converter_2.convertBorrowingFeeParams; } });
42
+ Object.defineProperty(exports, "convertBorrowingFeeParamsArrayV2", { enumerable: true, get: function () { return converter_2.convertBorrowingFeeParamsArray; } });
43
+ Object.defineProperty(exports, "convertPairBorrowingFeeDataV2", { enumerable: true, get: function () { return converter_2.convertPairBorrowingFeeData; } });
44
+ Object.defineProperty(exports, "convertPairBorrowingFeeDataArrayV2", { enumerable: true, get: function () { return converter_2.convertPairBorrowingFeeDataArray; } });
45
+ Object.defineProperty(exports, "convertTradeInitialAccFeesV2", { enumerable: true, get: function () { return converter_2.convertTradeInitialAccFees; } });
46
+ Object.defineProperty(exports, "convertTradeInitialAccFeesArrayV2", { enumerable: true, get: function () { return converter_2.convertTradeInitialAccFeesArray; } });
47
+ Object.defineProperty(exports, "createBorrowingV2Context", { enumerable: true, get: function () { return converter_2.createBorrowingV2Context; } });
48
+ Object.defineProperty(exports, "isValidBorrowingRateV2", { enumerable: true, get: function () { return converter_2.isValidBorrowingRate; } });
49
+ Object.defineProperty(exports, "borrowingRateToAPRV2", { enumerable: true, get: function () { return converter_2.borrowingRateToAPR; } });
50
+ Object.defineProperty(exports, "aprToBorrowingRateV2", { enumerable: true, get: function () { return converter_2.aprToBorrowingRate; } });
51
+ // Contract utilities re-exported for convenience
52
+ var fetcher_1 = require("./borrowingV2/fetcher");
53
+ Object.defineProperty(exports, "fetchBorrowingFeeParamsV2", { enumerable: true, get: function () { return fetcher_1.fetchBorrowingFeeParamsV2; } });
54
+ Object.defineProperty(exports, "fetchPairBorrowingFeeDataV2", { enumerable: true, get: function () { return fetcher_1.fetchPairBorrowingFeeDataV2; } });
55
+ Object.defineProperty(exports, "fetchTradeBorrowingFeesCollateralV2", { enumerable: true, get: function () { return fetcher_1.fetchTradeBorrowingFeesCollateralV2; } });
56
+ Object.defineProperty(exports, "fetchPairPendingAccBorrowingFeesV2", { enumerable: true, get: function () { return fetcher_1.fetchPairPendingAccBorrowingFeesV2; } });
57
+ Object.defineProperty(exports, "fetchAllBorrowingV2Data", { enumerable: true, get: function () { return fetcher_1.fetchAllBorrowingV2Data; } });
58
+ Object.defineProperty(exports, "createBorrowingV2ContextFromContract", { enumerable: true, get: function () { return fetcher_1.createBorrowingV2ContextFromContract; } });
59
+ Object.defineProperty(exports, "createBorrowingV2ContextFromArrays", { enumerable: true, get: function () { return fetcher_1.createBorrowingV2ContextFromArrays; } });
60
+ Object.defineProperty(exports, "fetchBorrowingV2DataForPairs", { enumerable: true, get: function () { return fetcher_1.fetchBorrowingV2DataForPairs; } });
61
+ var builder_1 = require("./borrowingV2/builder");
62
+ Object.defineProperty(exports, "buildBorrowingV2Context", { enumerable: true, get: function () { return builder_1.buildBorrowingV2Context; } });
63
+ // Funding Fees exports
64
+ var fundingFees_1 = require("./fundingFees");
65
+ Object.defineProperty(exports, "FundingFees", { enumerable: true, get: function () { return fundingFees_1.FundingFees; } });
66
+ Object.defineProperty(exports, "getCurrentFundingVelocityPerYear", { enumerable: true, get: function () { return fundingFees_1.getCurrentFundingVelocityPerYear; } });
67
+ Object.defineProperty(exports, "getSecondsToReachZeroRate", { enumerable: true, get: function () { return fundingFees_1.getSecondsToReachZeroRate; } });
68
+ Object.defineProperty(exports, "getAvgFundingRatePerSecondP", { enumerable: true, get: function () { return fundingFees_1.getAvgFundingRatePerSecondP; } });
69
+ Object.defineProperty(exports, "getLongShortAprMultiplier", { enumerable: true, get: function () { return fundingFees_1.getLongShortAprMultiplier; } });
70
+ Object.defineProperty(exports, "getPairPendingAccFundingFees", { enumerable: true, get: function () { return fundingFees_1.getPairPendingAccFundingFees; } });
71
+ Object.defineProperty(exports, "getTradeFundingFeesCollateral", { enumerable: true, get: function () { return fundingFees_1.getTradeFundingFeesCollateral; } });
72
+ Object.defineProperty(exports, "getTradeFundingFeesCollateralSimple", { enumerable: true, get: function () { return fundingFees_1.getTradeFundingFeesCollateralSimple; } });
73
+ Object.defineProperty(exports, "getTradeFundingFees", { enumerable: true, get: function () { return fundingFees_1.getTradeFundingFees; } });
74
+ var converter_3 = require("./fundingFees/converter");
75
+ Object.defineProperty(exports, "convertFundingFeeParams", { enumerable: true, get: function () { return converter_3.convertFundingFeeParams; } });
76
+ Object.defineProperty(exports, "convertFundingFeeParamsArray", { enumerable: true, get: function () { return converter_3.convertFundingFeeParamsArray; } });
77
+ Object.defineProperty(exports, "convertPairFundingFeeData", { enumerable: true, get: function () { return converter_3.convertPairFundingFeeData; } });
78
+ Object.defineProperty(exports, "convertPairFundingFeeDataArray", { enumerable: true, get: function () { return converter_3.convertPairFundingFeeDataArray; } });
79
+ Object.defineProperty(exports, "convertPairGlobalParams", { enumerable: true, get: function () { return converter_3.convertPairGlobalParams; } });
80
+ Object.defineProperty(exports, "convertPairGlobalParamsArray", { enumerable: true, get: function () { return converter_3.convertPairGlobalParamsArray; } });
81
+ Object.defineProperty(exports, "convertTradeInitialAccFundingFees", { enumerable: true, get: function () { return converter_3.convertTradeInitialAccFundingFees; } });
82
+ Object.defineProperty(exports, "createFundingFeeContext", { enumerable: true, get: function () { return converter_3.createFundingFeeContext; } });
83
+ Object.defineProperty(exports, "isValidFundingRate", { enumerable: true, get: function () { return converter_3.isValidFundingRate; } });
84
+ Object.defineProperty(exports, "fundingRateToAPR", { enumerable: true, get: function () { return converter_3.fundingRateToAPR; } });
85
+ Object.defineProperty(exports, "aprToFundingRate", { enumerable: true, get: function () { return converter_3.aprToFundingRate; } });
86
+ Object.defineProperty(exports, "calculateVelocityFromSkew", { enumerable: true, get: function () { return converter_3.calculateVelocityFromSkew; } });
87
+ Object.defineProperty(exports, "FUNDING_FEES_PRECISION", { enumerable: true, get: function () { return converter_3.FUNDING_FEES_PRECISION; } });
@@ -0,0 +1,64 @@
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, StakingInfo } 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 contract gns staking info to SDK format
33
+ * @param contractData Contract GnsStakingInfo struct
34
+ * @returns Normalized gns staking info
35
+ */
36
+ export declare const convertStakingInfo: (contractData: IFeeTiers.GnsStakingInfoStructOutput) => StakingInfo;
37
+ /**
38
+ * @dev Converts the complete fee tiers configuration from contract format
39
+ * @param tiers Array of volume fee tiers from contract
40
+ * @param groupVolumeMultipliers Array of group volume multipliers
41
+ * @param currentDay Current day from contract
42
+ * @param stakingTiers Array of staking fee tiers from contract
43
+ * @returns Complete fee tiers configuration
44
+ */
45
+ export declare const convertFeeTiersConfig: (tiers: IFeeTiers.FeeTierStructOutput[], groupVolumeMultipliers: readonly bigint[], currentDay: bigint, stakingTiers: IFeeTiers.FeeTierStructOutput[]) => {
46
+ tiers: FeeTier[];
47
+ groupVolumeMultipliers: number[];
48
+ currentDay: number;
49
+ stakingTiers: FeeTier[];
50
+ };
51
+ /**
52
+ * @dev Converts trader's volume and staking fee tier data from contract format
53
+ * @param traderInfo Trader info from contract
54
+ * @param traderDailyInfo Array of daily points info
55
+ * @param traderEnrollment Enrollment status from contract
56
+ * @param stakingInfo Staking info from contract
57
+ * @returns Complete trader volume and staking fee tier data
58
+ */
59
+ export declare const convertTraderFeeTiersData: (traderInfo: IFeeTiers.TraderInfoStructOutput, traderDailyInfo: readonly bigint[], traderEnrollment: IFeeTiers.TraderEnrollmentStructOutput, stakingInfo: IFeeTiers.GnsStakingInfoStructOutput) => {
60
+ traderInfo: TraderInfo;
61
+ dailyPoints: number[];
62
+ traderEnrollment: TraderEnrollment;
63
+ stakingInfo: StakingInfo;
64
+ };
@@ -0,0 +1,100 @@
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.convertStakingInfo = 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), // 0 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 contract gns staking info to SDK format
54
+ * @param contractData Contract GnsStakingInfo struct
55
+ * @returns Normalized gns staking info
56
+ */
57
+ const convertStakingInfo = (contractData) => {
58
+ return {
59
+ stakedGns: Number(contractData.stakedGns) / 1e18,
60
+ stakedVaultGns: Number(contractData.stakedVaultGns) / 1e18,
61
+ bonusAmount: Number(contractData.bonusAmount),
62
+ stakeTimestamp: Number(contractData.stakeTimestamp),
63
+ feeMultiplierCache: Number(contractData.feeMultiplierCache) / 1e3,
64
+ };
65
+ };
66
+ exports.convertStakingInfo = convertStakingInfo;
67
+ /**
68
+ * @dev Converts the complete fee tiers configuration from contract format
69
+ * @param tiers Array of volume fee tiers from contract
70
+ * @param groupVolumeMultipliers Array of group volume multipliers
71
+ * @param currentDay Current day from contract
72
+ * @param stakingTiers Array of staking fee tiers from contract
73
+ * @returns Complete fee tiers configuration
74
+ */
75
+ const convertFeeTiersConfig = (tiers, groupVolumeMultipliers, currentDay, stakingTiers) => {
76
+ return {
77
+ tiers: (0, exports.convertFeeTierArray)(tiers),
78
+ groupVolumeMultipliers: groupVolumeMultipliers.map(m => Number(m) / 1e3),
79
+ currentDay: Number(currentDay),
80
+ stakingTiers: (0, exports.convertFeeTierArray)(stakingTiers),
81
+ };
82
+ };
83
+ exports.convertFeeTiersConfig = convertFeeTiersConfig;
84
+ /**
85
+ * @dev Converts trader's volume and staking fee tier data from contract format
86
+ * @param traderInfo Trader info from contract
87
+ * @param traderDailyInfo Array of daily points info
88
+ * @param traderEnrollment Enrollment status from contract
89
+ * @param stakingInfo Staking info from contract
90
+ * @returns Complete trader volume and staking fee tier data
91
+ */
92
+ const convertTraderFeeTiersData = (traderInfo, traderDailyInfo, traderEnrollment, stakingInfo) => {
93
+ return {
94
+ traderInfo: (0, exports.convertTraderInfo)(traderInfo),
95
+ dailyPoints: traderDailyInfo.map(points => Number(points) / 1e18),
96
+ traderEnrollment: (0, exports.convertTraderEnrollment)(traderEnrollment),
97
+ stakingInfo: (0, exports.convertStakingInfo)(stakingInfo),
98
+ };
99
+ };
100
+ exports.convertTraderFeeTiersData = convertTraderFeeTiersData;
@@ -0,0 +1,46 @@
1
+ import { FeeTiers, TraderFeeTiers } from "../../types";
2
+ import { FeeTier } from "./types";
3
+ export * from "./types";
4
+ export * from "./converter";
5
+ export declare const TRAILING_PERIOD_DAYS = 30;
6
+ export declare const FEE_MULTIPLIER_SCALE = 1;
7
+ export declare const MAX_FEE_TIERS = 8;
8
+ export declare const GNS_STAKING_COOLDOWN_SECONDS = 86400;
9
+ export declare const getCurrentDay: () => number;
10
+ export declare const getFeeTiersCount: (feeTiers: FeeTier[]) => number;
11
+ export declare const getFeeMultiplier: (trailingPoints: number, tiers: FeeTier[]) => number;
12
+ export declare const computeFeeMultiplier: (feeTiers: FeeTiers, traderFeeTiers: TraderFeeTiers) => {
13
+ feeMultiplier: number;
14
+ volumeFeeMultiplier: number;
15
+ trailingPoints: number;
16
+ stakingFeeMultiplier: number;
17
+ };
18
+ /**
19
+ * @dev Calculates the final fee amount after applying the trader's fee tier discount
20
+ * @dev Mirrors the contract's calculateFeeAmount function
21
+ * @param trader The address of the trader (not used in SDK, for consistency)
22
+ * @param normalFeeAmountCollateral The base fee amount before any discounts
23
+ * @param feeMultiplier The trader's fee multiplier (e.g., 0.8 = 80% of normal fee)
24
+ * @returns The final fee amount after applying discount
25
+ */
26
+ export declare const calculateFeeAmount: (trader: string, normalFeeAmountCollateral: number, feeMultiplier?: number) => number;
27
+ /**
28
+ * @dev Helper function to get trader's fee multiplier from volume and staking fee tiers data
29
+ * @param feeTiers System fee tiers configuration
30
+ * @param traderFeeTiers Trader's fee tier data
31
+ * @returns Fee multiplier (1e3 precision)
32
+ */
33
+ export declare const getTraderFeeMultiplier: (feeTiers: FeeTiers, traderFeeTiers: TraderFeeTiers) => number;
34
+ export declare const isGnsStakingCooldownActive: (traderFeeTiers: TraderFeeTiers) => {
35
+ isActive: boolean;
36
+ expiryTs: number;
37
+ };
38
+ /**
39
+ * @dev Helper function to get the fee multiplier based on GNS and gGNS amounts. Useful to estimate fee multiplier after staking/unstaking.
40
+ * @param amountGns Amount of GNS staked
41
+ * @param amountGGns Amount of gGNS staked
42
+ * @param bonusAmount GNS bonus amount
43
+ * @param stakingTiers Array of staking fee tiers
44
+ * @param gGnsPrice Conversion ratio from gGNS to GNS (e.g., 0.8 means 1 gGNS = 0.8 GNS, 1.1 means 1 gGNS = 1.1 GNS); Defaults to 1 (e.g., 1 gGNS = 1 GNS)
45
+ */
46
+ export declare const getStakingFeeMultiplier: (amountGns: number, amountGGns: number, bonusAmount: number, stakingTiers: FeeTier[], gGnsPrice?: number) => number;
@@ -0,0 +1,135 @@
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
+ exports.getStakingFeeMultiplier = exports.isGnsStakingCooldownActive = exports.getTraderFeeMultiplier = exports.calculateFeeAmount = exports.computeFeeMultiplier = exports.getFeeMultiplier = exports.getFeeTiersCount = exports.getCurrentDay = exports.GNS_STAKING_COOLDOWN_SECONDS = exports.MAX_FEE_TIERS = exports.FEE_MULTIPLIER_SCALE = exports.TRAILING_PERIOD_DAYS = void 0;
18
+ const types_1 = require("./types");
19
+ __exportStar(require("./types"), exports);
20
+ __exportStar(require("./converter"), exports);
21
+ exports.TRAILING_PERIOD_DAYS = 30;
22
+ exports.FEE_MULTIPLIER_SCALE = 1;
23
+ exports.MAX_FEE_TIERS = 8;
24
+ exports.GNS_STAKING_COOLDOWN_SECONDS = 86400; // 1 day in seconds
25
+ const getCurrentDay = () => Math.floor(Date.now() / 1000 / 60 / 60 / 24);
26
+ exports.getCurrentDay = getCurrentDay;
27
+ const getFeeTiersCount = (feeTiers) => {
28
+ for (let i = exports.MAX_FEE_TIERS; i > 0; --i) {
29
+ if (feeTiers[i - 1]?.feeMultiplier > 0) {
30
+ return i;
31
+ }
32
+ }
33
+ return 0;
34
+ };
35
+ exports.getFeeTiersCount = getFeeTiersCount;
36
+ const getFeeMultiplier = (trailingPoints, tiers) => {
37
+ let feeMultiplier = exports.FEE_MULTIPLIER_SCALE;
38
+ for (let i = (0, exports.getFeeTiersCount)(tiers); i > 0; --i) {
39
+ const feeTier = tiers[i - 1];
40
+ if (trailingPoints >= feeTier.pointsThreshold) {
41
+ feeMultiplier = feeTier.feeMultiplier;
42
+ break;
43
+ }
44
+ }
45
+ return feeMultiplier;
46
+ };
47
+ exports.getFeeMultiplier = getFeeMultiplier;
48
+ const computeFeeMultiplier = (feeTiers, traderFeeTiers) => {
49
+ const { currentDay, tiers } = feeTiers;
50
+ const { traderInfo, expiredPoints, lastDayUpdatedPoints, traderEnrollment, stakingInfo, } = traderFeeTiers;
51
+ const { lastDayUpdated, trailingPoints } = traderInfo;
52
+ let curTrailingPoints = trailingPoints;
53
+ if (currentDay > lastDayUpdated) {
54
+ curTrailingPoints = 0;
55
+ const earliestActiveDay = currentDay - exports.TRAILING_PERIOD_DAYS;
56
+ if (lastDayUpdated >= earliestActiveDay) {
57
+ curTrailingPoints = trailingPoints + lastDayUpdatedPoints;
58
+ const expiredTrailingPoints = expiredPoints.reduce((acc, points) => acc + points, 0);
59
+ curTrailingPoints -= expiredTrailingPoints;
60
+ }
61
+ }
62
+ const isTraderExcluded = traderEnrollment.status === types_1.TraderEnrollmentStatus.EXCLUDED;
63
+ // Fee multiplier from volume tiers
64
+ const volumeFeeMultiplier = isTraderExcluded
65
+ ? exports.FEE_MULTIPLIER_SCALE
66
+ : (0, exports.getFeeMultiplier)(curTrailingPoints, tiers);
67
+ // Fee multiplier from staking tiers
68
+ const stakingFeeMultiplier = isTraderExcluded || stakingInfo.feeMultiplierCache === 0
69
+ ? exports.FEE_MULTIPLIER_SCALE
70
+ : stakingInfo.feeMultiplierCache;
71
+ // Total fee multiplier is the product of both multipliers
72
+ const totalFeeMultiplier = volumeFeeMultiplier * stakingFeeMultiplier;
73
+ return {
74
+ feeMultiplier: totalFeeMultiplier,
75
+ volumeFeeMultiplier: volumeFeeMultiplier,
76
+ trailingPoints: curTrailingPoints,
77
+ stakingFeeMultiplier: stakingFeeMultiplier,
78
+ };
79
+ };
80
+ exports.computeFeeMultiplier = computeFeeMultiplier;
81
+ /**
82
+ * @dev Calculates the final fee amount after applying the trader's fee tier discount
83
+ * @dev Mirrors the contract's calculateFeeAmount function
84
+ * @param trader The address of the trader (not used in SDK, for consistency)
85
+ * @param normalFeeAmountCollateral The base fee amount before any discounts
86
+ * @param feeMultiplier The trader's fee multiplier (e.g., 0.8 = 80% of normal fee)
87
+ * @returns The final fee amount after applying discount
88
+ */
89
+ const calculateFeeAmount = (trader, normalFeeAmountCollateral, feeMultiplier) => {
90
+ // If no fee multiplier provided or it's 0, return normal fee
91
+ if (!feeMultiplier || feeMultiplier === 0) {
92
+ return normalFeeAmountCollateral;
93
+ }
94
+ // Apply fee multiplier discount
95
+ return (feeMultiplier * normalFeeAmountCollateral) / exports.FEE_MULTIPLIER_SCALE;
96
+ };
97
+ exports.calculateFeeAmount = calculateFeeAmount;
98
+ /**
99
+ * @dev Helper function to get trader's fee multiplier from volume and staking fee tiers data
100
+ * @param feeTiers System fee tiers configuration
101
+ * @param traderFeeTiers Trader's fee tier data
102
+ * @returns Fee multiplier (1e3 precision)
103
+ */
104
+ const getTraderFeeMultiplier = (feeTiers, traderFeeTiers) => {
105
+ const { feeMultiplier } = (0, exports.computeFeeMultiplier)(feeTiers, traderFeeTiers);
106
+ return feeMultiplier;
107
+ };
108
+ exports.getTraderFeeMultiplier = getTraderFeeMultiplier;
109
+ const isGnsStakingCooldownActive = (traderFeeTiers) => {
110
+ const now = Math.floor(Date.now() / 1000);
111
+ const expiryTs = traderFeeTiers.stakingInfo.stakeTimestamp + exports.GNS_STAKING_COOLDOWN_SECONDS;
112
+ return { isActive: now < expiryTs, expiryTs };
113
+ };
114
+ exports.isGnsStakingCooldownActive = isGnsStakingCooldownActive;
115
+ /**
116
+ * @dev Helper function to get the fee multiplier based on GNS and gGNS amounts. Useful to estimate fee multiplier after staking/unstaking.
117
+ * @param amountGns Amount of GNS staked
118
+ * @param amountGGns Amount of gGNS staked
119
+ * @param bonusAmount GNS bonus amount
120
+ * @param stakingTiers Array of staking fee tiers
121
+ * @param gGnsPrice Conversion ratio from gGNS to GNS (e.g., 0.8 means 1 gGNS = 0.8 GNS, 1.1 means 1 gGNS = 1.1 GNS); Defaults to 1 (e.g., 1 gGNS = 1 GNS)
122
+ */
123
+ const getStakingFeeMultiplier = (amountGns, amountGGns, bonusAmount, stakingTiers, gGnsPrice = 1) => {
124
+ let feeMultiplier = exports.FEE_MULTIPLIER_SCALE;
125
+ for (let i = (0, exports.getFeeTiersCount)(stakingTiers); i > 0; --i) {
126
+ const stakingTier = stakingTiers[i - 1];
127
+ if (amountGns + amountGGns * gGnsPrice + bonusAmount >=
128
+ stakingTier.pointsThreshold) {
129
+ feeMultiplier = stakingTier.feeMultiplier;
130
+ break;
131
+ }
132
+ }
133
+ return feeMultiplier;
134
+ };
135
+ exports.getStakingFeeMultiplier = getStakingFeeMultiplier;
@@ -0,0 +1,22 @@
1
+ export type FeeTier = {
2
+ feeMultiplier: number;
3
+ pointsThreshold: number;
4
+ };
5
+ export type TraderInfo = {
6
+ lastDayUpdated: number;
7
+ trailingPoints: number;
8
+ };
9
+ export declare enum TraderEnrollmentStatus {
10
+ ENROLLED = 0,
11
+ EXCLUDED = 1
12
+ }
13
+ export type TraderEnrollment = {
14
+ status: TraderEnrollmentStatus;
15
+ };
16
+ export type StakingInfo = {
17
+ stakedGns: number;
18
+ stakedVaultGns: number;
19
+ bonusAmount: number;
20
+ stakeTimestamp: number;
21
+ feeMultiplierCache: number;
22
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TraderEnrollmentStatus = void 0;
4
+ var TraderEnrollmentStatus;
5
+ (function (TraderEnrollmentStatus) {
6
+ TraderEnrollmentStatus[TraderEnrollmentStatus["ENROLLED"] = 0] = "ENROLLED";
7
+ TraderEnrollmentStatus[TraderEnrollmentStatus["EXCLUDED"] = 1] = "EXCLUDED";
8
+ })(TraderEnrollmentStatus = exports.TraderEnrollmentStatus || (exports.TraderEnrollmentStatus = {}));
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @dev Trading fees context builder module
3
+ * @dev Provides builder functions for creating trading fee contexts
4
+ */
5
+ import { Fee, GlobalTradeFeeParams, CounterTradeSettings } 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
+ counterTradeSettings?: CounterTradeSettings[];
14
+ traderFeeMultiplier?: number;
15
+ };
16
+ /**
17
+ * @dev Builds trading fees sub-context
18
+ */
19
+ export declare const buildTradingFeesContext: (globalTradingVariables: GlobalTradingVariablesType, pairIndex: number, traderFeeMultiplier?: number) => TradingFeesSubContext;
@@ -0,0 +1,21 @@
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, counterTradeSettings } = globalTradingVariables;
13
+ const feeIndex = pairs[pairIndex].feeIndex;
14
+ return {
15
+ fee: fees[feeIndex],
16
+ globalTradeFeeParams: globalTradeFeeParams,
17
+ counterTradeSettings,
18
+ traderFeeMultiplier,
19
+ };
20
+ };
21
+ exports.buildTradingFeesContext = buildTradingFeesContext;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @dev Converters for trading fee data between contract and SDK formats
3
+ */
4
+ import { CounterTradeSettingsBackend } from "src/backend";
5
+ import { CounterTradeSettings } from "../../types";
6
+ import { GlobalTradeFeeParams } from "./types";
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
+ export declare const convertCounterTradeSettings: (feeRateMultiplier: number, maxLeverage: number) => CounterTradeSettings;
14
+ export declare const convertCounterTradeSettingsArray: (settings: CounterTradeSettingsBackend[]) => CounterTradeSettings[];
15
+ /**
16
+ * @dev Converts array of counter trade fee rate multipliers from contract
17
+ * @param multipliers Array of fee rate multipliers (1e3 precision)
18
+ * @returns Array of normalized multipliers
19
+ */
20
+ export declare const convertCounterTradeFeeRateMultipliers: (multipliers: number[]) => number[];
21
+ /**
22
+ * @dev Converts global trade fee params from contract to SDK format
23
+ * @param contractParams Global trade fee params from contract
24
+ * @returns Normalized global trade fee params
25
+ */
26
+ export declare const convertGlobalTradeFeeParams: (contractParams: {
27
+ referralFeeP: number;
28
+ govFeeP: number;
29
+ triggerOrderFeeP: number;
30
+ gnsOtcFeeP: number;
31
+ gTokenFeeP: number;
32
+ }) => GlobalTradeFeeParams;