@gainsnetwork/sdk 0.0.0-v10.rc2 → 0.0.0-v10.rc21

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 (238) 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 +318 -0
  6. package/lib/backend/tradingVariables/backend.types.js +2 -0
  7. package/lib/backend/tradingVariables/converter.d.ts +34 -0
  8. package/lib/backend/tradingVariables/converter.js +338 -0
  9. package/lib/backend/tradingVariables/index.d.ts +5 -0
  10. package/lib/backend/tradingVariables/index.js +96 -0
  11. package/lib/backend/tradingVariables/types.d.ts +113 -0
  12. package/lib/backend/tradingVariables/types.js +14 -0
  13. package/lib/constants.d.ts +20 -0
  14. package/lib/constants.js +24 -3
  15. package/lib/contracts/addresses.json +20 -0
  16. package/lib/contracts/index.js +3 -1
  17. package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +1911 -0
  18. package/lib/contracts/types/generated/GFarmTradingStorageV5.js +2 -0
  19. package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +1067 -0
  20. package/lib/contracts/types/generated/GNSBorrowingFees.js +2 -0
  21. package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.d.ts +979 -0
  22. package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.js +2 -0
  23. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +1058 -0
  24. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +2 -0
  25. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +7 -20
  26. package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +533 -0
  27. package/lib/contracts/types/generated/GNSNftRewardsV6.js +2 -0
  28. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +613 -0
  29. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +2 -0
  30. package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +911 -0
  31. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +2 -0
  32. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +660 -0
  33. package/lib/contracts/types/generated/GNSPairsStorageV6.js +2 -0
  34. package/lib/contracts/types/generated/GNSTrading.d.ts +758 -0
  35. package/lib/contracts/types/generated/GNSTrading.js +2 -0
  36. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +875 -0
  37. package/lib/contracts/types/generated/GNSTradingCallbacks.js +2 -0
  38. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.d.ts +806 -0
  39. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.js +2 -0
  40. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +821 -0
  41. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +2 -0
  42. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +1387 -0
  43. package/lib/contracts/types/generated/GNSTradingStorage.js +2 -0
  44. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +1838 -0
  45. package/lib/contracts/types/generated/GTokenV6_3_2.js +2 -0
  46. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -0
  47. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -0
  48. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.d.ts +88 -0
  49. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.js +1654 -0
  50. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +113 -0
  51. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +1742 -0
  52. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +124 -0
  53. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +1784 -0
  54. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +7 -16
  55. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -0
  56. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -0
  57. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -0
  58. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -0
  59. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +98 -0
  60. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +1485 -0
  61. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +117 -0
  62. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +1265 -0
  63. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.d.ts +82 -0
  64. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.js +1273 -0
  65. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +82 -0
  66. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +1326 -0
  67. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +113 -0
  68. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +1428 -0
  69. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +96 -0
  70. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +2241 -0
  71. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +95 -0
  72. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +1071 -0
  73. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +110 -0
  74. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +2682 -0
  75. package/lib/contracts/types/generated/factories/GToken__factory.d.ts +7 -0
  76. package/lib/contracts/types/generated/factories/GToken__factory.js +4 -0
  77. package/lib/contracts/types/index.d.ts +2 -1
  78. package/lib/contracts/types/index.js +1 -0
  79. package/lib/contracts/utils/index.d.ts +0 -3
  80. package/lib/contracts/utils/index.js +0 -3
  81. package/lib/contracts/utils/openTrades.js +14 -30
  82. package/lib/contracts/utils/pairs.js +20 -0
  83. package/lib/index.d.ts +2 -0
  84. package/lib/index.js +5 -0
  85. package/lib/markets/collateral/converter.d.ts +5 -0
  86. package/lib/markets/collateral/converter.js +11 -0
  87. package/lib/markets/collateral/index.d.ts +1 -0
  88. package/lib/markets/collateral/index.js +17 -0
  89. package/lib/markets/collateral/types.d.ts +7 -0
  90. package/lib/markets/collateral/types.js +2 -0
  91. package/lib/markets/holdingFees/index.d.ts +46 -0
  92. package/lib/markets/holdingFees/index.js +105 -0
  93. package/lib/markets/holdingFees/types.d.ts +23 -0
  94. package/lib/markets/holdingFees/types.js +5 -0
  95. package/lib/markets/index.d.ts +5 -0
  96. package/lib/markets/index.js +5 -0
  97. package/lib/markets/leverage/builder.d.ts +12 -0
  98. package/lib/markets/leverage/builder.js +25 -0
  99. package/lib/markets/leverage/getMarketLeverageRestrictions.d.ts +7 -0
  100. package/lib/markets/leverage/getMarketLeverageRestrictions.js +38 -0
  101. package/lib/markets/leverage/index.d.ts +3 -0
  102. package/lib/markets/leverage/index.js +19 -0
  103. package/lib/markets/leverage/types.d.ts +15 -0
  104. package/lib/markets/leverage/types.js +2 -0
  105. package/lib/markets/oi/converter.d.ts +62 -0
  106. package/lib/markets/oi/converter.js +102 -0
  107. package/lib/markets/oi/fetcher.d.ts +58 -0
  108. package/lib/markets/oi/fetcher.js +181 -0
  109. package/lib/markets/oi/index.d.ts +49 -0
  110. package/lib/markets/oi/index.js +77 -0
  111. package/lib/markets/oi/types.d.ts +73 -0
  112. package/lib/markets/oi/types.js +6 -0
  113. package/lib/markets/oi/validation.d.ts +80 -0
  114. package/lib/markets/oi/validation.js +172 -0
  115. package/lib/markets/price/builder.d.ts +25 -0
  116. package/lib/markets/price/builder.js +69 -0
  117. package/lib/markets/price/index.d.ts +6 -0
  118. package/lib/markets/price/index.js +22 -0
  119. package/lib/markets/price/marketPrice.d.ts +12 -0
  120. package/lib/markets/price/marketPrice.js +34 -0
  121. package/lib/markets/price/types.d.ts +23 -0
  122. package/lib/markets/price/types.js +5 -0
  123. package/lib/trade/counterTrade/index.d.ts +2 -0
  124. package/lib/trade/counterTrade/index.js +18 -0
  125. package/lib/trade/counterTrade/types.d.ts +7 -0
  126. package/lib/trade/counterTrade/types.js +2 -0
  127. package/lib/trade/counterTrade/validateCounterTrade.d.ts +10 -0
  128. package/lib/trade/counterTrade/validateCounterTrade.js +29 -0
  129. package/lib/trade/effectiveLeverage/builder.d.ts +23 -0
  130. package/lib/trade/effectiveLeverage/builder.js +30 -0
  131. package/lib/trade/effectiveLeverage/getTradeNewEffectiveLeverage.d.ts +23 -0
  132. package/lib/trade/effectiveLeverage/getTradeNewEffectiveLeverage.js +64 -0
  133. package/lib/trade/effectiveLeverage/index.d.ts +3 -0
  134. package/lib/trade/effectiveLeverage/index.js +22 -0
  135. package/lib/trade/effectiveLeverage/types.d.ts +33 -0
  136. package/lib/trade/effectiveLeverage/types.js +2 -0
  137. package/lib/trade/fees/borrowing/builder.d.ts +14 -0
  138. package/lib/trade/fees/borrowing/builder.js +33 -0
  139. package/lib/trade/fees/borrowing/index.d.ts +15 -4
  140. package/lib/trade/fees/borrowing/index.js +42 -18
  141. package/lib/trade/fees/borrowingV2/builder.d.ts +6 -0
  142. package/lib/trade/fees/borrowingV2/builder.js +24 -0
  143. package/lib/trade/fees/borrowingV2/converter.d.ts +12 -3
  144. package/lib/trade/fees/borrowingV2/converter.js +29 -18
  145. package/lib/{contracts/fetch/fees/borrowingFeesV2.d.ts → trade/fees/borrowingV2/fetcher.d.ts} +2 -3
  146. package/lib/{contracts/fetch/fees/borrowingFeesV2.js → trade/fees/borrowingV2/fetcher.js} +6 -14
  147. package/lib/trade/fees/borrowingV2/index.d.ts +6 -17
  148. package/lib/trade/fees/borrowingV2/index.js +10 -37
  149. package/lib/trade/fees/borrowingV2/types.d.ts +22 -6
  150. package/lib/trade/fees/converter.d.ts +48 -0
  151. package/lib/trade/fees/converter.js +114 -0
  152. package/lib/trade/fees/fundingFees/builder.d.ts +9 -0
  153. package/lib/trade/fees/fundingFees/builder.js +35 -0
  154. package/lib/{contracts/fetch/fees/fundingFees.d.ts → trade/fees/fundingFees/fetcher.d.ts} +2 -2
  155. package/lib/trade/fees/fundingFees/index.d.ts +28 -39
  156. package/lib/trade/fees/fundingFees/index.js +33 -46
  157. package/lib/trade/fees/fundingFees/pairContext.d.ts +33 -0
  158. package/lib/trade/fees/fundingFees/pairContext.js +17 -0
  159. package/lib/trade/fees/holdingFees/index.d.ts +46 -0
  160. package/lib/trade/fees/holdingFees/index.js +105 -0
  161. package/lib/trade/fees/holdingFees/types.d.ts +23 -0
  162. package/lib/trade/fees/holdingFees/types.js +5 -0
  163. package/lib/trade/fees/index.d.ts +4 -2
  164. package/lib/trade/fees/index.js +45 -36
  165. package/lib/trade/fees/tiers/converter.d.ts +54 -0
  166. package/lib/trade/fees/tiers/converter.js +81 -0
  167. package/lib/trade/fees/tiers/index.d.ts +1 -0
  168. package/lib/trade/fees/tiers/index.js +1 -0
  169. package/lib/trade/fees/trading/builder.d.ts +18 -0
  170. package/lib/trade/fees/trading/builder.js +20 -0
  171. package/lib/trade/fees/trading/converter.d.ts +2 -0
  172. package/lib/trade/fees/trading/converter.js +5 -1
  173. package/lib/trade/fees/trading/holdingFees.d.ts +28 -0
  174. package/lib/trade/fees/trading/holdingFees.js +66 -0
  175. package/lib/trade/fees/trading/holdingFeesStructured.d.ts +28 -0
  176. package/lib/trade/fees/trading/holdingFeesStructured.js +66 -0
  177. package/lib/trade/fees/trading/index.d.ts +30 -2
  178. package/lib/trade/fees/trading/index.js +52 -1
  179. package/lib/trade/fees/trading/types.d.ts +9 -0
  180. package/lib/trade/index.d.ts +3 -1
  181. package/lib/trade/index.js +3 -1
  182. package/lib/trade/liquidation/builder.d.ts +25 -0
  183. package/lib/trade/liquidation/builder.js +59 -0
  184. package/lib/trade/liquidation/converter.d.ts +23 -0
  185. package/lib/trade/liquidation/converter.js +46 -0
  186. package/lib/trade/liquidation/index.d.ts +16 -0
  187. package/lib/trade/liquidation/index.js +123 -0
  188. package/lib/trade/liquidation/types.d.ts +42 -0
  189. package/lib/trade/liquidation/types.js +2 -0
  190. package/lib/trade/pnl/builder.d.ts +16 -0
  191. package/lib/trade/pnl/builder.js +44 -0
  192. package/lib/trade/pnl/converter.d.ts +47 -0
  193. package/lib/trade/pnl/converter.js +72 -0
  194. package/lib/trade/pnl/index.d.ts +88 -0
  195. package/lib/trade/pnl/index.js +286 -0
  196. package/lib/trade/pnl/types.d.ts +75 -0
  197. package/lib/trade/pnl/types.js +5 -0
  198. package/lib/trade/priceImpact/close/builder.d.ts +23 -0
  199. package/lib/trade/priceImpact/close/builder.js +45 -0
  200. package/lib/trade/priceImpact/close/index.d.ts +22 -0
  201. package/lib/trade/priceImpact/close/index.js +119 -0
  202. package/lib/trade/priceImpact/close/types.d.ts +44 -0
  203. package/lib/trade/priceImpact/close/types.js +5 -0
  204. package/lib/trade/priceImpact/cumulVol/builder.d.ts +22 -0
  205. package/lib/trade/priceImpact/cumulVol/builder.js +43 -0
  206. package/lib/trade/priceImpact/cumulVol/converter.d.ts +31 -0
  207. package/lib/trade/priceImpact/cumulVol/converter.js +59 -0
  208. package/lib/trade/priceImpact/cumulVol/index.d.ts +108 -0
  209. package/lib/trade/priceImpact/cumulVol/index.js +235 -0
  210. package/lib/trade/priceImpact/index.d.ts +18 -5
  211. package/lib/trade/priceImpact/index.js +57 -10
  212. package/lib/trade/priceImpact/open/builder.d.ts +21 -0
  213. package/lib/trade/priceImpact/open/builder.js +43 -0
  214. package/lib/trade/priceImpact/open/index.d.ts +23 -0
  215. package/lib/trade/priceImpact/open/index.js +74 -0
  216. package/lib/trade/priceImpact/open/types.d.ts +41 -0
  217. package/lib/trade/priceImpact/open/types.js +5 -0
  218. package/lib/trade/priceImpact/skew/builder.d.ts +12 -0
  219. package/lib/trade/priceImpact/skew/builder.js +28 -0
  220. package/lib/trade/priceImpact/skew/converter.d.ts +11 -42
  221. package/lib/trade/priceImpact/skew/converter.js +19 -109
  222. package/lib/{contracts/fetch/priceImpact/skew.d.ts → trade/priceImpact/skew/fetcher.d.ts} +9 -12
  223. package/lib/{contracts/fetch/priceImpact/skew.js → trade/priceImpact/skew/fetcher.js} +23 -22
  224. package/lib/trade/priceImpact/skew/index.d.ts +11 -15
  225. package/lib/trade/priceImpact/skew/index.js +22 -54
  226. package/lib/trade/priceImpact/skew/types.d.ts +2 -15
  227. package/lib/trade/spread.d.ts +5 -18
  228. package/lib/trade/spread.js +17 -106
  229. package/lib/trade/types.d.ts +30 -8
  230. package/lib/trade/types.js +20 -0
  231. package/lib/vault/index.d.ts +3 -1
  232. package/lib/vault/index.js +2 -2
  233. package/package.json +2 -2
  234. package/lib/trade/liquidation.d.ts +0 -42
  235. package/lib/trade/liquidation.js +0 -140
  236. package/lib/trade/pnl.d.ts +0 -10
  237. package/lib/trade/pnl.js +0 -38
  238. /package/lib/{contracts/fetch/fees/fundingFees.js → trade/fees/fundingFees/fetcher.js} +0 -0
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
26
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.BorrowingFeeV2 = exports.borrowingFeeV2Utils = exports.getPairBorrowingFees = exports.getBorrowingFee = exports.getTradeBorrowingFeesCollateral = exports.getPairPendingAccBorrowingFees = exports.BORROWING_V2_PRECISION = exports.MAX_BORROWING_RATE_PER_SECOND = void 0;
29
+ exports.BorrowingFeeV2 = exports.borrowingFeeV2Utils = exports.getPairBorrowingFees = exports.getTradeBorrowingFeesCollateral = exports.getPairPendingAccBorrowingFees = exports.BORROWING_V2_PRECISION = exports.MAX_BORROWING_RATE_PER_SECOND = void 0;
30
30
  /**
31
31
  * @dev Maximum borrowing rate per second (1,000% APR)
32
32
  */
@@ -63,21 +63,18 @@ const getPairPendingAccBorrowingFees = (params, data, currentPairPrice, currentT
63
63
  exports.getPairPendingAccBorrowingFees = getPairPendingAccBorrowingFees;
64
64
  /**
65
65
  * @dev Calculates borrowing fees owed by a specific trade
66
- * @param input Trade borrowing fee calculation input
67
- * @param context Context containing borrowing parameters and data
66
+ * @param input Trade borrowing fee calculation input (without pairIndex)
67
+ * @param context Pair-specific borrowing context
68
68
  * @returns Borrowing fees in collateral tokens
69
69
  */
70
70
  const getTradeBorrowingFeesCollateral = (input, context) => {
71
- var _a, _b;
72
- const { positionSizeCollateral, openPrice, collateralIndex, pairIndex, currentPairPrice, initialAccBorrowingFeeP, currentTimestamp, } = input;
73
- // Get borrowing parameters and data for the pair
74
- const params = (_a = context.borrowingParams[collateralIndex]) === null || _a === void 0 ? void 0 : _a[pairIndex];
75
- const data = (_b = context.borrowingData[collateralIndex]) === null || _b === void 0 ? void 0 : _b[pairIndex];
71
+ const { positionSizeCollateral, openPrice, currentPairPrice, initialAccBorrowingFeeP, currentTimestamp, } = input;
72
+ const { params, data } = context;
76
73
  if (!params || !data) {
77
74
  return 0;
78
75
  }
79
76
  // Calculate current accumulated borrowing fees
80
- const currentAccBorrowingFeeP = (0, exports.getPairPendingAccBorrowingFees)(params, data, currentPairPrice, currentTimestamp);
77
+ const currentAccBorrowingFeeP = (0, exports.getPairPendingAccBorrowingFees)(params, data, currentPairPrice, currentTimestamp !== null && currentTimestamp !== void 0 ? currentTimestamp : context.currentTimestamp);
81
78
  // Calculate borrowing fees for this trade
82
79
  // Formula: (positionSizeCollateral * (currentAccFee - initialAccFee)) / openPrice / 100
83
80
  const feeDeltaP = currentAccBorrowingFeeP - initialAccBorrowingFeeP;
@@ -86,29 +83,6 @@ const getTradeBorrowingFeesCollateral = (input, context) => {
86
83
  exports.BORROWING_V2_PRECISION.PERCENTAGE);
87
84
  };
88
85
  exports.getTradeBorrowingFeesCollateral = getTradeBorrowingFeesCollateral;
89
- /**
90
- * @dev Convenience function to calculate borrowing fees for a trade using individual parameters
91
- * @param positionSizeCollateral Position size in collateral tokens
92
- * @param pairIndex Index of the trading pair
93
- * @param collateralIndex Index of the collateral
94
- * @param openPrice Price at which the trade was opened
95
- * @param currentPairPrice Current price of the trading pair
96
- * @param initialAccBorrowingFeeP Initial accumulated borrowing fee when trade was opened
97
- * @param context Context containing borrowing parameters and data
98
- * @returns Borrowing fees in collateral tokens
99
- */
100
- const getBorrowingFee = (positionSizeCollateral, pairIndex, collateralIndex, openPrice, currentPairPrice, initialAccBorrowingFeeP, context) => {
101
- return (0, exports.getTradeBorrowingFeesCollateral)({
102
- positionSizeCollateral,
103
- openPrice,
104
- collateralIndex,
105
- pairIndex,
106
- currentPairPrice,
107
- initialAccBorrowingFeeP,
108
- currentTimestamp: context.currentTimestamp,
109
- }, context);
110
- };
111
- exports.getBorrowingFee = getBorrowingFee;
112
86
  /**
113
87
  * @dev Utility function to get pending accumulated borrowing fees for a pair using context
114
88
  * @param input Pair borrowing fee calculation input
@@ -116,10 +90,9 @@ exports.getBorrowingFee = getBorrowingFee;
116
90
  * @returns Updated accumulated borrowing fee (1e20 precision)
117
91
  */
118
92
  const getPairBorrowingFees = (input, context) => {
119
- var _a, _b;
120
- const { collateralIndex, pairIndex, currentPairPrice, currentTimestamp } = input;
121
- const params = (_a = context.borrowingParams[collateralIndex]) === null || _a === void 0 ? void 0 : _a[pairIndex];
122
- const data = (_b = context.borrowingData[collateralIndex]) === null || _b === void 0 ? void 0 : _b[pairIndex];
93
+ const { pairIndex, currentPairPrice, currentTimestamp } = input;
94
+ const params = context.borrowingParams[pairIndex];
95
+ const data = context.borrowingData[pairIndex];
123
96
  if (!params || !data) {
124
97
  return 0;
125
98
  }
@@ -133,7 +106,7 @@ exports.borrowingFeeV2Utils = {
133
106
  getPairPendingAccBorrowingFees: exports.getPairPendingAccBorrowingFees,
134
107
  getTradeBorrowingFeesCollateral: exports.getTradeBorrowingFeesCollateral,
135
108
  getPairBorrowingFees: exports.getPairBorrowingFees,
136
- getBorrowingFee: exports.getBorrowingFee,
137
109
  };
138
110
  exports.BorrowingFeeV2 = __importStar(require("./types"));
139
111
  __exportStar(require("./converter"), exports);
112
+ __exportStar(require("./fetcher"), exports);
@@ -39,6 +39,7 @@ export type TradeInitialAccFees = {
39
39
  };
40
40
  /**
41
41
  * @dev Context required for borrowing v2 fee calculations
42
+ * @dev Context is already scoped to a specific collateral
42
43
  */
43
44
  export type GetBorrowingFeeV2Context = {
44
45
  /**
@@ -47,20 +48,36 @@ export type GetBorrowingFeeV2Context = {
47
48
  currentTimestamp?: number;
48
49
  /**
49
50
  * @dev Borrowing fee parameters for pairs
50
- * @dev Indexed by: params[collateralIndex][pairIndex]
51
+ * @dev Indexed by: params[pairIndex]
51
52
  */
52
- borrowingParams: Record<number, Record<number, BorrowingFeeParams>>;
53
+ borrowingParams: Record<number, BorrowingFeeParams>;
53
54
  /**
54
55
  * @dev Borrowing fee data for pairs
55
- * @dev Indexed by: data[collateralIndex][pairIndex]
56
+ * @dev Indexed by: data[pairIndex]
56
57
  */
57
- borrowingData: Record<number, Record<number, PairBorrowingFeeData>>;
58
+ borrowingData: Record<number, PairBorrowingFeeData>;
59
+ };
60
+ /**
61
+ * @dev Context for pair-specific borrowing v2 fee calculations
62
+ */
63
+ export type GetPairBorrowingFeeV2Context = {
64
+ /**
65
+ * @dev Current timestamp (defaults to Date.now() / 1000)
66
+ */
67
+ currentTimestamp?: number;
68
+ /**
69
+ * @dev Borrowing fee parameters for this specific pair
70
+ */
71
+ params: BorrowingFeeParams;
72
+ /**
73
+ * @dev Borrowing fee data for this specific pair
74
+ */
75
+ data: PairBorrowingFeeData;
58
76
  };
59
77
  /**
60
78
  * @dev Input for calculating pending borrowing fees for a pair
61
79
  */
62
80
  export type PairBorrowingFeeInput = {
63
- collateralIndex: number;
64
81
  pairIndex: number;
65
82
  currentPairPrice: number;
66
83
  currentTimestamp?: number;
@@ -71,7 +88,6 @@ export type PairBorrowingFeeInput = {
71
88
  export type TradeBorrowingFeeInput = {
72
89
  positionSizeCollateral: number;
73
90
  openPrice: number;
74
- collateralIndex: number;
75
91
  pairIndex: number;
76
92
  currentPairPrice: number;
77
93
  initialAccBorrowingFeeP: number;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @dev Converters for fee data between contract and SDK formats
3
+ */
4
+ import { IFundingFees } from "../../contracts/types/generated/GNSMultiCollatDiamond";
5
+ import { TradeFeesData, UiRealizedPnlData } from "../types";
6
+ import { CollateralConfig } from "../../markets/collateral/types";
7
+ /**
8
+ * @dev Converts contract TradeFeesData to SDK format
9
+ * @param data Trade fees data from contract
10
+ * @param collateralConfig Config for the collateral (contains decimals)
11
+ * @returns Normalized trade fees data
12
+ */
13
+ export declare const convertTradeFeesData: (data: IFundingFees.TradeFeesDataStructOutput, collateralConfig: CollateralConfig) => TradeFeesData;
14
+ /**
15
+ * @dev Converts array of TradeFeesData from contract
16
+ * @param dataArray Array of trade fees data
17
+ * @param collateralConfig Config for the collateral
18
+ * @returns Array of normalized trade fees data
19
+ */
20
+ export declare const convertTradeFeesDataArray: (dataArray: IFundingFees.TradeFeesDataStructOutput[], collateralConfig: CollateralConfig) => TradeFeesData[];
21
+ /**
22
+ * @dev Converts contract UiRealizedPnlData to SDK format
23
+ * @param data UI realized PnL data from contract
24
+ * @param collateralConfig Config for the collateral (contains decimals)
25
+ * @returns Normalized UI realized PnL data
26
+ */
27
+ export declare const convertUiRealizedPnlData: (data: IFundingFees.UiRealizedPnlDataStructOutput, collateralConfig: CollateralConfig) => UiRealizedPnlData;
28
+ /**
29
+ * @dev Converts array of UiRealizedPnlData from contract
30
+ * @param dataArray Array of UI realized PnL data
31
+ * @param collateralConfig Config for the collateral
32
+ * @returns Array of normalized UI realized PnL data
33
+ */
34
+ export declare const convertUiRealizedPnlDataArray: (dataArray: IFundingFees.UiRealizedPnlDataStructOutput[], collateralConfig: CollateralConfig) => UiRealizedPnlData[];
35
+ /**
36
+ * @dev Converts TradeFeesData to contract format (for encoding)
37
+ * @param data SDK trade fees data
38
+ * @param collateralConfig Config for the collateral
39
+ * @returns Contract-formatted trade fees data
40
+ */
41
+ export declare const encodeTradeFeesData: (data: TradeFeesData, collateralConfig: CollateralConfig) => IFundingFees.TradeFeesDataStruct;
42
+ /**
43
+ * @dev Converts UiRealizedPnlData to contract format (for encoding)
44
+ * @param data SDK UI realized PnL data
45
+ * @param collateralConfig Config for the collateral
46
+ * @returns Contract-formatted UI realized PnL data
47
+ */
48
+ export declare const encodeUiRealizedPnlData: (data: UiRealizedPnlData, collateralConfig: CollateralConfig) => IFundingFees.UiRealizedPnlDataStruct;
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Converters for fee data between contract and SDK formats
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.encodeUiRealizedPnlData = exports.encodeTradeFeesData = exports.convertUiRealizedPnlDataArray = exports.convertUiRealizedPnlData = exports.convertTradeFeesDataArray = exports.convertTradeFeesData = void 0;
7
+ const borrowingV2_1 = require("./borrowingV2");
8
+ const converter_1 = require("./fundingFees/converter");
9
+ /**
10
+ * @dev Converts contract TradeFeesData to SDK format
11
+ * @param data Trade fees data from contract
12
+ * @param collateralConfig Config for the collateral (contains decimals)
13
+ * @returns Normalized trade fees data
14
+ */
15
+ const convertTradeFeesData = (data, collateralConfig) => {
16
+ const decimals = collateralConfig.decimals || 18;
17
+ return {
18
+ realizedTradingFeesCollateral: parseFloat(data.realizedTradingFeesCollateral.toString()) /
19
+ Math.pow(10, decimals),
20
+ realizedPnlCollateral: parseFloat(data.realizedPnlCollateral.toString()) / Math.pow(10, decimals),
21
+ manuallyRealizedNegativePnlCollateral: parseFloat(data.manuallyRealizedNegativePnlCollateral.toString()) /
22
+ Math.pow(10, decimals),
23
+ alreadyTransferredNegativePnlCollateral: parseFloat(data.alreadyTransferredNegativePnlCollateral.toString()) /
24
+ Math.pow(10, decimals),
25
+ virtualAvailableCollateralInDiamond: parseFloat(data.virtualAvailableCollateralInDiamond.toString()) /
26
+ Math.pow(10, decimals),
27
+ initialAccFundingFeeP: parseFloat(data.initialAccFundingFeeP.toString()) /
28
+ converter_1.FUNDING_FEES_PRECISION.ACC_FUNDING_FEE_P,
29
+ initialAccBorrowingFeeP: parseFloat(data.initialAccBorrowingFeeP.toString()) /
30
+ borrowingV2_1.BORROWING_V2_PRECISION.ACC_FEE,
31
+ };
32
+ };
33
+ exports.convertTradeFeesData = convertTradeFeesData;
34
+ /**
35
+ * @dev Converts array of TradeFeesData from contract
36
+ * @param dataArray Array of trade fees data
37
+ * @param collateralConfig Config for the collateral
38
+ * @returns Array of normalized trade fees data
39
+ */
40
+ const convertTradeFeesDataArray = (dataArray, collateralConfig) => {
41
+ return dataArray.map(data => (0, exports.convertTradeFeesData)(data, collateralConfig));
42
+ };
43
+ exports.convertTradeFeesDataArray = convertTradeFeesDataArray;
44
+ /**
45
+ * @dev Converts contract UiRealizedPnlData to SDK format
46
+ * @param data UI realized PnL data from contract
47
+ * @param collateralConfig Config for the collateral (contains decimals)
48
+ * @returns Normalized UI realized PnL data
49
+ */
50
+ const convertUiRealizedPnlData = (data, collateralConfig) => {
51
+ const decimals = collateralConfig.decimals || 18;
52
+ return {
53
+ realizedTradingFeesCollateral: parseFloat(data.realizedTradingFeesCollateral.toString()) /
54
+ Math.pow(10, decimals),
55
+ realizedOldBorrowingFeesCollateral: parseFloat(data.realizedOldBorrowingFeesCollateral.toString()) /
56
+ Math.pow(10, decimals),
57
+ realizedNewBorrowingFeesCollateral: parseFloat(data.realizedNewBorrowingFeesCollateral.toString()) /
58
+ Math.pow(10, decimals),
59
+ realizedFundingFeesCollateral: parseFloat(data.realizedFundingFeesCollateral.toString()) /
60
+ Math.pow(10, decimals),
61
+ realizedPnlPartialCloseCollateral: parseFloat(data.realizedPnlPartialCloseCollateral.toString()) /
62
+ Math.pow(10, decimals),
63
+ pnlWithdrawnCollateral: parseFloat(data.pnlWithdrawnCollateral.toString()) / Math.pow(10, decimals),
64
+ };
65
+ };
66
+ exports.convertUiRealizedPnlData = convertUiRealizedPnlData;
67
+ /**
68
+ * @dev Converts array of UiRealizedPnlData from contract
69
+ * @param dataArray Array of UI realized PnL data
70
+ * @param collateralConfig Config for the collateral
71
+ * @returns Array of normalized UI realized PnL data
72
+ */
73
+ const convertUiRealizedPnlDataArray = (dataArray, collateralConfig) => {
74
+ return dataArray.map(data => (0, exports.convertUiRealizedPnlData)(data, collateralConfig));
75
+ };
76
+ exports.convertUiRealizedPnlDataArray = convertUiRealizedPnlDataArray;
77
+ /**
78
+ * @dev Converts TradeFeesData to contract format (for encoding)
79
+ * @param data SDK trade fees data
80
+ * @param collateralConfig Config for the collateral
81
+ * @returns Contract-formatted trade fees data
82
+ */
83
+ const encodeTradeFeesData = (data, collateralConfig) => {
84
+ const decimals = collateralConfig.decimals || 18;
85
+ return {
86
+ realizedTradingFeesCollateral: Math.round(data.realizedTradingFeesCollateral * Math.pow(10, decimals)),
87
+ realizedPnlCollateral: Math.round(data.realizedPnlCollateral * Math.pow(10, decimals)),
88
+ manuallyRealizedNegativePnlCollateral: Math.round(data.manuallyRealizedNegativePnlCollateral * Math.pow(10, decimals)),
89
+ alreadyTransferredNegativePnlCollateral: Math.round(data.alreadyTransferredNegativePnlCollateral * Math.pow(10, decimals)),
90
+ virtualAvailableCollateralInDiamond: Math.round(data.virtualAvailableCollateralInDiamond * Math.pow(10, decimals)),
91
+ __placeholder: 0,
92
+ initialAccFundingFeeP: Math.round(data.initialAccFundingFeeP * converter_1.FUNDING_FEES_PRECISION.ACC_FUNDING_FEE_P),
93
+ initialAccBorrowingFeeP: Math.round(data.initialAccBorrowingFeeP * borrowingV2_1.BORROWING_V2_PRECISION.ACC_FEE),
94
+ };
95
+ };
96
+ exports.encodeTradeFeesData = encodeTradeFeesData;
97
+ /**
98
+ * @dev Converts UiRealizedPnlData to contract format (for encoding)
99
+ * @param data SDK UI realized PnL data
100
+ * @param collateralConfig Config for the collateral
101
+ * @returns Contract-formatted UI realized PnL data
102
+ */
103
+ const encodeUiRealizedPnlData = (data, collateralConfig) => {
104
+ const decimals = collateralConfig.decimals || 18;
105
+ return {
106
+ realizedTradingFeesCollateral: Math.round(data.realizedTradingFeesCollateral * Math.pow(10, decimals)),
107
+ realizedOldBorrowingFeesCollateral: Math.round(data.realizedOldBorrowingFeesCollateral * Math.pow(10, decimals)),
108
+ realizedNewBorrowingFeesCollateral: Math.round(data.realizedNewBorrowingFeesCollateral * Math.pow(10, decimals)),
109
+ realizedFundingFeesCollateral: Math.round(data.realizedFundingFeesCollateral * Math.pow(10, decimals)),
110
+ realizedPnlPartialCloseCollateral: Math.round(data.realizedPnlPartialCloseCollateral * Math.pow(10, decimals)),
111
+ pnlWithdrawnCollateral: Math.round(data.pnlWithdrawnCollateral * Math.pow(10, decimals)),
112
+ };
113
+ };
114
+ exports.encodeUiRealizedPnlData = encodeUiRealizedPnlData;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @dev Builder functions for funding fees context
3
+ */
4
+ import { GlobalTradingVariablesType } from "../../../backend/tradingVariables/types";
5
+ import { GetPairFundingFeeContext } from "./pairContext";
6
+ /**
7
+ * @dev Builds funding fees sub-context for a specific pair
8
+ */
9
+ export declare const buildFundingContext: (globalTradingVariables: GlobalTradingVariablesType, collateralIndex: number, pairIndex: number, currentTimestamp: number) => GetPairFundingFeeContext | undefined;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Builder functions for funding fees context
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildFundingContext = void 0;
7
+ /**
8
+ * @dev Builds funding fees sub-context for a specific pair
9
+ */
10
+ const buildFundingContext = (globalTradingVariables, collateralIndex, pairIndex, currentTimestamp) => {
11
+ var _a, _b, _c, _d, _e;
12
+ const collateral = globalTradingVariables.collaterals[collateralIndex - 1];
13
+ if (!(collateral === null || collateral === void 0 ? void 0 : collateral.pairFundingFees)) {
14
+ return undefined;
15
+ }
16
+ const params = (_a = collateral.pairFundingFees.params) === null || _a === void 0 ? void 0 : _a[pairIndex];
17
+ const data = (_b = collateral.pairFundingFees.data) === null || _b === void 0 ? void 0 : _b[pairIndex];
18
+ const pairOi = (_c = collateral.pairOis) === null || _c === void 0 ? void 0 : _c[pairIndex];
19
+ if (!params || !data) {
20
+ return undefined;
21
+ }
22
+ return {
23
+ params,
24
+ data,
25
+ pairOi: pairOi
26
+ ? {
27
+ oiLongToken: ((_d = pairOi.token) === null || _d === void 0 ? void 0 : _d.long) || 0,
28
+ oiShortToken: ((_e = pairOi.token) === null || _e === void 0 ? void 0 : _e.short) || 0,
29
+ }
30
+ : undefined,
31
+ currentTimestamp,
32
+ // TODO: Add net exposure when available
33
+ };
34
+ };
35
+ exports.buildFundingContext = buildFundingContext;
@@ -1,5 +1,5 @@
1
- import type { GNSMultiCollatDiamond } from "../../types/generated";
2
- import type { TradeInitialAccFees } from "../../../trade/fees/fundingFees";
1
+ import type { GNSMultiCollatDiamond } from "../../../contracts/types/generated";
2
+ import type { TradeInitialAccFees } from ".";
3
3
  /**
4
4
  * @dev Fetches pending accumulated funding fees for a specific pair
5
5
  * @param contract GNSMultiCollatDiamond contract instance
@@ -3,6 +3,7 @@
3
3
  * @dev Based on skew-based funding rate model with velocity and APR multipliers
4
4
  */
5
5
  import { FundingFeeParams, PairFundingFeeData, GetFundingFeeContext, TradeFundingFeeResult, PairPendingAccFundingFeesResult, PairOiAfterV10 } from "./types";
6
+ import { GetPairFundingFeeContext } from "./pairContext";
6
7
  /**
7
8
  * @dev Calculates current funding velocity per year based on skew
8
9
  * @param netExposureToken Net exposure (long - short) in tokens
@@ -57,12 +58,12 @@ export declare const getLongShortAprMultiplier: (avgFundingRatePerSecondP: numbe
57
58
  */
58
59
  export declare const getPairPendingAccFundingFees: (params: FundingFeeParams, data: PairFundingFeeData, currentPairPrice: number, pairOiToken: PairOiAfterV10, netExposureToken: number, netExposureUsd: number, currentTimestamp: number) => PairPendingAccFundingFeesResult;
59
60
  /**
60
- * @dev Calculates funding fees for a specific trade (SDK version following contract pattern)
61
- * @param trade Trade parameters (collateral amount, leverage, open price, long/short, collateralIndex, pairIndex)
61
+ * @dev Calculates funding fees for a specific trade
62
+ * @param trade Trade parameters (collateral amount, leverage, open price, long/short)
62
63
  * @param tradeInfo Trade info (contracts version)
63
64
  * @param tradeFeesData Trade fees data containing initial acc funding fee
64
65
  * @param currentPairPrice Current pair price
65
- * @param context Optional context with funding fee data (if not provided, uses simple calculation)
66
+ * @param context Pair-specific funding fee context
66
67
  * @returns Funding fee in collateral tokens
67
68
  */
68
69
  export declare const getTradeFundingFeesCollateral: (trade: {
@@ -70,51 +71,35 @@ export declare const getTradeFundingFeesCollateral: (trade: {
70
71
  leverage: number;
71
72
  openPrice: number;
72
73
  long: boolean;
73
- collateralIndex?: number;
74
- pairIndex?: number;
75
74
  }, tradeInfo: {
76
75
  contractsVersion: number;
77
76
  }, tradeFeesData: {
78
77
  initialAccFundingFeeP: number;
79
- }, currentPairPrice: number, context?: (GetFundingFeeContext & {
80
- pairOiAfterV10?: {
81
- [collateralIndex: number]: {
82
- [pairIndex: number]: PairOiAfterV10;
83
- };
84
- } | undefined;
85
- netExposureToken?: {
86
- [collateralIndex: number]: {
87
- [pairIndex: number]: number;
88
- };
89
- } | undefined;
90
- netExposureUsd?: {
91
- [collateralIndex: number]: {
92
- [pairIndex: number]: number;
93
- };
94
- } | undefined;
95
- }) | undefined) => number;
78
+ }, currentPairPrice: number, context: GetPairFundingFeeContext) => number;
96
79
  /**
97
80
  * @dev Main function to calculate funding fees for a trade within context
81
+ * @param input Trade funding fee input parameters
98
82
  * @param context Funding fee context with params and data
99
- * @param collateralIndex Collateral index
100
- * @param pairIndex Pair index
101
- * @param trade Trade details
102
- * @param tradeInfo Trade info (contracts version)
103
- * @param initialAccFundingFeeP Initial accumulated funding fee
104
- * @param currentPairPrice Current pair price
105
- * @param pairOiToken Pair OI after v10
106
- * @param netExposureToken Net exposure in tokens
107
- * @param netExposureUsd Net exposure in USD
108
83
  * @returns Complete funding fee calculation result
109
84
  */
110
- export declare const getTradeFundingFees: (context: GetFundingFeeContext, collateralIndex: number, pairIndex: number, trade: {
111
- collateralAmount: number;
112
- leverage: number;
113
- openPrice: number;
114
- long: boolean;
115
- }, tradeInfo: {
116
- contractsVersion: number;
117
- }, initialAccFundingFeeP: number, currentPairPrice: number, pairOiToken: PairOiAfterV10, netExposureToken: number, netExposureUsd: number) => TradeFundingFeeResult;
85
+ export declare const getTradeFundingFees: (input: {
86
+ collateralIndex: number;
87
+ pairIndex: number;
88
+ trade: {
89
+ collateralAmount: number;
90
+ leverage: number;
91
+ openPrice: number;
92
+ long: boolean;
93
+ };
94
+ tradeInfo: {
95
+ contractsVersion: number;
96
+ };
97
+ initialAccFundingFeeP: number;
98
+ currentPairPrice: number;
99
+ pairOiToken: PairOiAfterV10;
100
+ netExposureToken: number;
101
+ netExposureUsd: number;
102
+ }, context: GetFundingFeeContext) => TradeFundingFeeResult;
118
103
  /**
119
104
  * @dev Simple version of getTradeFundingFeesCollateral for backward compatibility
120
105
  * @param trade Trade parameters
@@ -133,3 +118,7 @@ export declare const getTradeFundingFeesCollateralSimple: (trade: {
133
118
  }, initialAccFundingFeeP: number, currentAccFundingFeeP: number) => number;
134
119
  export * as FundingFees from "./types";
135
120
  export type { FundingFeeParams, PairFundingFeeData, PairGlobalParams, TradeInitialAccFundingFees, PairOiAfterV10, FundingRateCalculation, GetFundingFeeContext, TradeFundingFeeResult, PairPendingAccFundingFeesResult, PairAccumulatedFees, TradeInitialAccFees, } from "./types";
121
+ export type { GetPairFundingFeeContext } from "./pairContext";
122
+ export * from "./fetcher";
123
+ export * from "./pairContext";
124
+ export * from "./builder";
@@ -26,8 +26,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
26
  __setModuleDefault(result, mod);
27
27
  return result;
28
28
  };
29
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
30
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
31
+ };
29
32
  Object.defineProperty(exports, "__esModule", { value: true });
30
33
  exports.FundingFees = exports.getTradeFundingFeesCollateralSimple = exports.getTradeFundingFees = exports.getTradeFundingFeesCollateral = exports.getPairPendingAccFundingFees = exports.getLongShortAprMultiplier = exports.getAvgFundingRatePerSecondP = exports.getSecondsToReachZeroRate = exports.getCurrentFundingVelocityPerYear = void 0;
34
+ const types_1 = require("../../../contracts/types");
31
35
  // Constants from contract
32
36
  const FUNDING_APR_MULTIPLIER_CAP = 100; // Smaller side can earn up to 100x more APR
33
37
  const ONE_YEAR = 365 * 24 * 60 * 60; // 1 year in seconds
@@ -222,81 +226,61 @@ const getPairPendingAccFundingFees = (params, data, currentPairPrice, pairOiToke
222
226
  };
223
227
  exports.getPairPendingAccFundingFees = getPairPendingAccFundingFees;
224
228
  /**
225
- * @dev Calculates funding fees for a specific trade (SDK version following contract pattern)
226
- * @param trade Trade parameters (collateral amount, leverage, open price, long/short, collateralIndex, pairIndex)
229
+ * @dev Calculates funding fees for a specific trade
230
+ * @param trade Trade parameters (collateral amount, leverage, open price, long/short)
227
231
  * @param tradeInfo Trade info (contracts version)
228
232
  * @param tradeFeesData Trade fees data containing initial acc funding fee
229
233
  * @param currentPairPrice Current pair price
230
- * @param context Optional context with funding fee data (if not provided, uses simple calculation)
234
+ * @param context Pair-specific funding fee context
231
235
  * @returns Funding fee in collateral tokens
232
236
  */
233
237
  const getTradeFundingFeesCollateral = (trade, tradeInfo, tradeFeesData, currentPairPrice, context) => {
234
- var _a, _b, _c, _d, _e, _f, _g, _h;
235
- // Funding fees are only charged on post-v10 trades
236
- if (tradeInfo.contractsVersion < 10) {
238
+ if (tradeInfo.contractsVersion < types_1.ContractsVersion.V10) {
237
239
  return 0;
238
240
  }
239
241
  const positionSizeCollateral = trade.collateralAmount * trade.leverage;
240
- // If we have full context, calculate current accumulated funding fee
241
- if (context &&
242
- trade.collateralIndex !== undefined &&
243
- trade.pairIndex !== undefined) {
244
- const params = (_a = context.fundingParams[trade.collateralIndex]) === null || _a === void 0 ? void 0 : _a[trade.pairIndex];
245
- const data = (_b = context.fundingData[trade.collateralIndex]) === null || _b === void 0 ? void 0 : _b[trade.pairIndex];
246
- const pairOi = (_d = (_c = context.pairOiAfterV10) === null || _c === void 0 ? void 0 : _c[trade.collateralIndex]) === null || _d === void 0 ? void 0 : _d[trade.pairIndex];
247
- const netExposureToken = ((_f = (_e = context.netExposureToken) === null || _e === void 0 ? void 0 : _e[trade.collateralIndex]) === null || _f === void 0 ? void 0 : _f[trade.pairIndex]) || 0;
248
- const netExposureUsd = ((_h = (_g = context.netExposureUsd) === null || _g === void 0 ? void 0 : _g[trade.collateralIndex]) === null || _h === void 0 ? void 0 : _h[trade.pairIndex]) || 0;
249
- if (params && data && pairOi) {
250
- // Calculate pending accumulated fees
251
- const { accFundingFeeLongP, accFundingFeeShortP } = (0, exports.getPairPendingAccFundingFees)(params, data, currentPairPrice, pairOi, netExposureToken, netExposureUsd, context.currentTimestamp);
252
- const currentAccFundingFeeP = trade.long
253
- ? accFundingFeeLongP
254
- : accFundingFeeShortP;
255
- const fundingFeeDelta = currentAccFundingFeeP - tradeFeesData.initialAccFundingFeeP;
256
- return (positionSizeCollateral * fundingFeeDelta) / trade.openPrice;
257
- }
242
+ if (!context.params.fundingFeesEnabled) {
243
+ return 0;
258
244
  }
259
- return 0; // Cannot calculate without proper context
245
+ // Calculate pending accumulated fees
246
+ const { accFundingFeeLongP, accFundingFeeShortP } = (0, exports.getPairPendingAccFundingFees)(context.params, context.data, currentPairPrice, context.pairOi || { oiLongToken: 0, oiShortToken: 0 }, context.netExposureToken || 0, context.netExposureUsd || 0, context.currentTimestamp);
247
+ const currentAccFundingFeeP = trade.long
248
+ ? accFundingFeeLongP
249
+ : accFundingFeeShortP;
250
+ const fundingFeeDelta = currentAccFundingFeeP - tradeFeesData.initialAccFundingFeeP;
251
+ return (positionSizeCollateral * fundingFeeDelta) / trade.openPrice / 100;
260
252
  };
261
253
  exports.getTradeFundingFeesCollateral = getTradeFundingFeesCollateral;
262
254
  /**
263
255
  * @dev Main function to calculate funding fees for a trade within context
256
+ * @param input Trade funding fee input parameters
264
257
  * @param context Funding fee context with params and data
265
- * @param collateralIndex Collateral index
266
- * @param pairIndex Pair index
267
- * @param trade Trade details
268
- * @param tradeInfo Trade info (contracts version)
269
- * @param initialAccFundingFeeP Initial accumulated funding fee
270
- * @param currentPairPrice Current pair price
271
- * @param pairOiToken Pair OI after v10
272
- * @param netExposureToken Net exposure in tokens
273
- * @param netExposureUsd Net exposure in USD
274
258
  * @returns Complete funding fee calculation result
275
259
  */
276
- const getTradeFundingFees = (context, collateralIndex, pairIndex, trade, tradeInfo, initialAccFundingFeeP, currentPairPrice, pairOiToken, netExposureToken, netExposureUsd) => {
260
+ const getTradeFundingFees = (input, context) => {
277
261
  var _a, _b;
278
262
  // Get params and data from context
279
- const params = (_a = context.fundingParams[collateralIndex]) === null || _a === void 0 ? void 0 : _a[pairIndex];
280
- const data = (_b = context.fundingData[collateralIndex]) === null || _b === void 0 ? void 0 : _b[pairIndex];
263
+ const params = (_a = context.fundingParams[input.collateralIndex]) === null || _a === void 0 ? void 0 : _a[input.pairIndex];
264
+ const data = (_b = context.fundingData[input.collateralIndex]) === null || _b === void 0 ? void 0 : _b[input.pairIndex];
281
265
  if (!params || !data) {
282
- throw new Error(`Missing funding fee data for collateral ${collateralIndex} pair ${pairIndex}`);
266
+ throw new Error(`Missing funding fee data for collateral ${input.collateralIndex} pair ${input.pairIndex}`);
283
267
  }
284
268
  // Calculate pending accumulated fees
285
- const { accFundingFeeLongP, accFundingFeeShortP } = (0, exports.getPairPendingAccFundingFees)(params, data, currentPairPrice, pairOiToken, netExposureToken, netExposureUsd, context.currentTimestamp);
286
- const currentAccFundingFeeP = trade.long
269
+ const { accFundingFeeLongP, accFundingFeeShortP } = (0, exports.getPairPendingAccFundingFees)(params, data, input.currentPairPrice, input.pairOiToken, input.netExposureToken, input.netExposureUsd, context.currentTimestamp);
270
+ const currentAccFundingFeeP = input.trade.long
287
271
  ? accFundingFeeLongP
288
272
  : accFundingFeeShortP;
289
273
  // Calculate funding fee in collateral
290
- const fundingFeeCollateral = (0, exports.getTradeFundingFeesCollateralSimple)(trade, tradeInfo, initialAccFundingFeeP, currentAccFundingFeeP);
274
+ const fundingFeeCollateral = (0, exports.getTradeFundingFeesCollateralSimple)(input.trade, input.tradeInfo, input.initialAccFundingFeeP, currentAccFundingFeeP);
291
275
  // Calculate funding fee as percentage
292
- const fundingFeeP = trade.collateralAmount > 0
293
- ? (fundingFeeCollateral / trade.collateralAmount) * 100
276
+ const fundingFeeP = input.trade.collateralAmount > 0
277
+ ? (fundingFeeCollateral / input.trade.collateralAmount) * 100
294
278
  : 0;
295
279
  return {
296
280
  fundingFeeCollateral,
297
281
  fundingFeeP,
298
282
  currentAccFundingFeeP,
299
- initialAccFundingFeeP,
283
+ initialAccFundingFeeP: input.initialAccFundingFeeP,
300
284
  };
301
285
  };
302
286
  exports.getTradeFundingFees = getTradeFundingFees;
@@ -310,13 +294,16 @@ exports.getTradeFundingFees = getTradeFundingFees;
310
294
  */
311
295
  const getTradeFundingFeesCollateralSimple = (trade, tradeInfo, initialAccFundingFeeP, currentAccFundingFeeP) => {
312
296
  // Funding fees are only charged on post-v10 trades
313
- if (tradeInfo.contractsVersion < 10) {
297
+ if (tradeInfo.contractsVersion < types_1.ContractsVersion.V10) {
314
298
  return 0;
315
299
  }
316
300
  const positionSizeCollateral = trade.collateralAmount * trade.leverage;
317
301
  const fundingFeeDelta = currentAccFundingFeeP - initialAccFundingFeeP;
318
- return (positionSizeCollateral * fundingFeeDelta) / trade.openPrice;
302
+ return (positionSizeCollateral * fundingFeeDelta) / trade.openPrice / 100;
319
303
  };
320
304
  exports.getTradeFundingFeesCollateralSimple = getTradeFundingFeesCollateralSimple;
321
305
  // Export namespace for types
322
306
  exports.FundingFees = __importStar(require("./types"));
307
+ __exportStar(require("./fetcher"), exports);
308
+ __exportStar(require("./pairContext"), exports);
309
+ __exportStar(require("./builder"), exports);
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @dev Pair-specific funding fee types and utilities
3
+ */
4
+ import { FundingFeeParams, PairFundingFeeData, PairGlobalParams, PairOiAfterV10, PairPendingAccFundingFeesResult } from "./types";
5
+ /**
6
+ * @dev Context for pair-specific funding fee calculations
7
+ */
8
+ export type GetPairFundingFeeContext = {
9
+ currentTimestamp: number;
10
+ params: FundingFeeParams;
11
+ data: PairFundingFeeData;
12
+ globalParams?: PairGlobalParams;
13
+ pairOi?: PairOiAfterV10;
14
+ netExposureToken?: number;
15
+ netExposureUsd?: number;
16
+ };
17
+ /**
18
+ * @dev Input for pair-specific trade funding fee calculation
19
+ */
20
+ export type PairTradeFundingFeeInput = {
21
+ positionSizeCollateral: number;
22
+ openPrice: number;
23
+ long: boolean;
24
+ currentPairPrice: number;
25
+ initialAccFundingFeeP: number;
26
+ };
27
+ /**
28
+ * @dev Calculate pending accumulated funding fees for a pair using pair-specific context
29
+ * @param currentPairPrice Current price of the pair
30
+ * @param context Pair-specific funding context
31
+ * @returns Pending accumulated funding fees
32
+ */
33
+ export declare const getPairPendingAccFundingFees: (currentPairPrice: number, context: GetPairFundingFeeContext) => PairPendingAccFundingFeesResult;