@gainsnetwork/sdk 0.2.73-rc2 → 1.0.0-rc10

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 (247) hide show
  1. package/README.md +2 -2
  2. package/lib/backend/globalTrades/index.d.ts +11 -0
  3. package/lib/backend/globalTrades/index.js +69 -0
  4. package/lib/backend/index.d.ts +3 -0
  5. package/lib/backend/index.js +28 -0
  6. package/lib/backend/tradingVariables/backend.types.d.ts +318 -0
  7. package/lib/backend/tradingVariables/backend.types.js +2 -0
  8. package/lib/backend/tradingVariables/converter.d.ts +34 -0
  9. package/lib/backend/tradingVariables/converter.js +338 -0
  10. package/lib/backend/tradingVariables/index.d.ts +5 -0
  11. package/lib/backend/tradingVariables/index.js +96 -0
  12. package/lib/backend/tradingVariables/types.d.ts +113 -0
  13. package/lib/backend/tradingVariables/types.js +14 -0
  14. package/lib/constants.d.ts +0 -5
  15. package/lib/constants.js +0 -5
  16. package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +1911 -0
  17. package/lib/contracts/types/generated/GFarmTradingStorageV5.js +2 -0
  18. package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +1067 -0
  19. package/lib/contracts/types/generated/GNSBorrowingFees.js +2 -0
  20. package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.d.ts +979 -0
  21. package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.js +2 -0
  22. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +1058 -0
  23. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +2 -0
  24. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +2134 -293
  25. package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +533 -0
  26. package/lib/contracts/types/generated/GNSNftRewardsV6.js +2 -0
  27. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +613 -0
  28. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +2 -0
  29. package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +911 -0
  30. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +2 -0
  31. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +660 -0
  32. package/lib/contracts/types/generated/GNSPairsStorageV6.js +2 -0
  33. package/lib/contracts/types/generated/GNSTrading.d.ts +758 -0
  34. package/lib/contracts/types/generated/GNSTrading.js +2 -0
  35. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +875 -0
  36. package/lib/contracts/types/generated/GNSTradingCallbacks.js +2 -0
  37. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.d.ts +806 -0
  38. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.js +2 -0
  39. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +821 -0
  40. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +2 -0
  41. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +1387 -0
  42. package/lib/contracts/types/generated/GNSTradingStorage.js +2 -0
  43. package/lib/contracts/types/generated/GToken.d.ts +78 -107
  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.d.ts +90 -53
  55. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +4496 -430
  56. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -0
  57. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -0
  58. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -0
  59. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -0
  60. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +98 -0
  61. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +1485 -0
  62. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +117 -0
  63. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +1265 -0
  64. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.d.ts +82 -0
  65. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.js +1273 -0
  66. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +82 -0
  67. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +1326 -0
  68. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +113 -0
  69. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +1428 -0
  70. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +96 -0
  71. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +2241 -0
  72. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +95 -0
  73. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +1071 -0
  74. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +110 -0
  75. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +2682 -0
  76. package/lib/contracts/types/generated/factories/GToken__factory.d.ts +7 -0
  77. package/lib/contracts/types/generated/factories/GToken__factory.js +69 -142
  78. package/lib/contracts/types/index.d.ts +2 -1
  79. package/lib/contracts/types/index.js +1 -0
  80. package/lib/contracts/utils/openTrades.d.ts +1 -0
  81. package/lib/contracts/utils/openTrades.js +94 -56
  82. package/lib/contracts/utils/pairs.js +0 -5
  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 +13 -0
  120. package/lib/markets/price/marketPrice.js +35 -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 +34 -0
  139. package/lib/trade/fees/borrowing/index.d.ts +26 -3
  140. package/lib/trade/fees/borrowing/index.js +72 -22
  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 +75 -0
  144. package/lib/trade/fees/borrowingV2/converter.js +132 -0
  145. package/lib/trade/fees/borrowingV2/fetcher.d.ts +75 -0
  146. package/lib/trade/fees/borrowingV2/fetcher.js +185 -0
  147. package/lib/trade/fees/borrowingV2/index.d.ts +48 -0
  148. package/lib/trade/fees/borrowingV2/index.js +112 -0
  149. package/lib/trade/fees/borrowingV2/types.d.ts +95 -0
  150. package/lib/trade/fees/borrowingV2/types.js +5 -0
  151. package/lib/trade/fees/converter.d.ts +48 -0
  152. package/lib/trade/fees/converter.js +114 -0
  153. package/lib/trade/fees/fundingFees/builder.d.ts +9 -0
  154. package/lib/trade/fees/fundingFees/builder.js +35 -0
  155. package/lib/trade/fees/fundingFees/converter.d.ts +102 -0
  156. package/lib/trade/fees/fundingFees/converter.js +196 -0
  157. package/lib/trade/fees/fundingFees/fetcher.d.ts +66 -0
  158. package/lib/trade/fees/fundingFees/fetcher.js +150 -0
  159. package/lib/trade/fees/fundingFees/index.d.ts +124 -0
  160. package/lib/trade/fees/fundingFees/index.js +309 -0
  161. package/lib/trade/fees/fundingFees/pairContext.d.ts +33 -0
  162. package/lib/trade/fees/fundingFees/pairContext.js +17 -0
  163. package/lib/trade/fees/fundingFees/types.d.ts +77 -0
  164. package/lib/trade/fees/fundingFees/types.js +5 -0
  165. package/lib/trade/fees/holdingFees/index.d.ts +46 -0
  166. package/lib/trade/fees/holdingFees/index.js +105 -0
  167. package/lib/trade/fees/holdingFees/types.d.ts +23 -0
  168. package/lib/trade/fees/holdingFees/types.js +5 -0
  169. package/lib/trade/fees/index.d.ts +9 -2
  170. package/lib/trade/fees/index.js +69 -16
  171. package/lib/trade/fees/tiers/converter.d.ts +54 -0
  172. package/lib/trade/fees/tiers/converter.js +81 -0
  173. package/lib/trade/fees/tiers/index.d.ts +18 -0
  174. package/lib/trade/fees/tiers/index.js +45 -1
  175. package/lib/trade/fees/trading/builder.d.ts +18 -0
  176. package/lib/trade/fees/trading/builder.js +20 -0
  177. package/lib/trade/fees/trading/converter.d.ts +32 -0
  178. package/lib/trade/fees/trading/converter.js +47 -0
  179. package/lib/trade/fees/trading/holdingFees.d.ts +28 -0
  180. package/lib/trade/fees/trading/holdingFees.js +66 -0
  181. package/lib/trade/fees/trading/holdingFeesStructured.d.ts +28 -0
  182. package/lib/trade/fees/trading/holdingFeesStructured.js +66 -0
  183. package/lib/trade/fees/trading/index.d.ts +62 -0
  184. package/lib/trade/fees/trading/index.js +155 -0
  185. package/lib/trade/fees/trading/types.d.ts +48 -0
  186. package/lib/trade/fees/trading/types.js +5 -0
  187. package/lib/trade/index.d.ts +5 -2
  188. package/lib/trade/index.js +5 -2
  189. package/lib/trade/liquidation/builder.d.ts +25 -0
  190. package/lib/trade/liquidation/builder.js +59 -0
  191. package/lib/trade/liquidation/converter.d.ts +23 -0
  192. package/lib/trade/liquidation/converter.js +46 -0
  193. package/lib/trade/liquidation/index.d.ts +29 -0
  194. package/lib/trade/liquidation/index.js +218 -0
  195. package/lib/trade/liquidation/types.d.ts +43 -0
  196. package/lib/trade/liquidation/types.js +2 -0
  197. package/lib/trade/pnl/builder.d.ts +16 -0
  198. package/lib/trade/pnl/builder.js +44 -0
  199. package/lib/trade/pnl/converter.d.ts +47 -0
  200. package/lib/trade/pnl/converter.js +72 -0
  201. package/lib/trade/pnl/index.d.ts +91 -0
  202. package/lib/trade/pnl/index.js +303 -0
  203. package/lib/trade/pnl/types.d.ts +79 -0
  204. package/lib/trade/pnl/types.js +5 -0
  205. package/lib/trade/priceImpact/close/builder.d.ts +23 -0
  206. package/lib/trade/priceImpact/close/builder.js +45 -0
  207. package/lib/trade/priceImpact/close/index.d.ts +22 -0
  208. package/lib/trade/priceImpact/close/index.js +134 -0
  209. package/lib/trade/priceImpact/close/types.d.ts +47 -0
  210. package/lib/trade/priceImpact/close/types.js +5 -0
  211. package/lib/trade/priceImpact/cumulVol/builder.d.ts +22 -0
  212. package/lib/trade/priceImpact/cumulVol/builder.js +43 -0
  213. package/lib/trade/priceImpact/cumulVol/converter.d.ts +31 -0
  214. package/lib/trade/priceImpact/cumulVol/converter.js +59 -0
  215. package/lib/trade/priceImpact/cumulVol/index.d.ts +108 -0
  216. package/lib/trade/priceImpact/cumulVol/index.js +235 -0
  217. package/lib/trade/priceImpact/index.d.ts +21 -0
  218. package/lib/trade/priceImpact/index.js +79 -0
  219. package/lib/trade/priceImpact/open/builder.d.ts +21 -0
  220. package/lib/trade/priceImpact/open/builder.js +43 -0
  221. package/lib/trade/priceImpact/open/index.d.ts +23 -0
  222. package/lib/trade/priceImpact/open/index.js +79 -0
  223. package/lib/trade/priceImpact/open/types.d.ts +45 -0
  224. package/lib/trade/priceImpact/open/types.js +5 -0
  225. package/lib/trade/priceImpact/skew/builder.d.ts +12 -0
  226. package/lib/trade/priceImpact/skew/builder.js +28 -0
  227. package/lib/trade/priceImpact/skew/converter.d.ts +46 -0
  228. package/lib/trade/priceImpact/skew/converter.js +81 -0
  229. package/lib/trade/priceImpact/skew/fetcher.d.ts +60 -0
  230. package/lib/trade/priceImpact/skew/fetcher.js +169 -0
  231. package/lib/trade/priceImpact/skew/index.d.ts +53 -0
  232. package/lib/trade/priceImpact/skew/index.js +148 -0
  233. package/lib/trade/priceImpact/skew/types.d.ts +44 -0
  234. package/lib/trade/priceImpact/skew/types.js +5 -0
  235. package/lib/trade/spread.d.ts +5 -18
  236. package/lib/trade/spread.js +17 -106
  237. package/lib/trade/types.d.ts +109 -14
  238. package/lib/trade/types.js +0 -5
  239. package/lib/trade/utils.d.ts +18 -0
  240. package/lib/trade/utils.js +30 -0
  241. package/lib/vault/index.d.ts +3 -1
  242. package/lib/vault/index.js +2 -2
  243. package/package.json +2 -1
  244. package/lib/trade/liquidation.d.ts +0 -12
  245. package/lib/trade/liquidation.js +0 -55
  246. package/lib/trade/pnl.d.ts +0 -10
  247. package/lib/trade/pnl.js +0 -33
@@ -27,28 +27,57 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.BorrowingFee = exports.borrowingFeeUtils = exports.withinMaxGroupOi = exports.getBorrowingFee = void 0;
30
- const getBorrowingFee = (posDai, pairIndex, long, initialAccFees, context) => {
31
- if (!context.groups || !context.pairs || !context.pairs[pairIndex]) {
30
+ const __1 = require("../../..");
31
+ /**
32
+ * @dev Calculates borrowing fees using v1 model (block-based with groups)
33
+ * @dev Still actively used by markets that haven't migrated to v2
34
+ * @dev Uses dynamic collateral OI - converts OI to USD for fee calculations
35
+ * @param posDai Position size in collateral
36
+ * @param pairIndex Trading pair index (required)
37
+ * @param long Whether position is long
38
+ * @param initialAccFees Initial accumulated fees when trade was opened
39
+ * @param context Context with current block, fee data, and collateral price
40
+ * @returns Borrowing fee in collateral tokens
41
+ */
42
+ const getBorrowingFee = (posDai, pairIndex, long, initialAccFees, currentPairPrice, context) => {
43
+ if (pairIndex === undefined) {
44
+ throw new Error("pairIndex is required for borrowing fee calculations");
45
+ }
46
+ const { pairs, groups } = context;
47
+ if (!groups || !pairs || !pairs[pairIndex]) {
32
48
  return 0;
33
49
  }
34
- const { pairs } = context;
35
50
  const pairGroups = pairs[pairIndex].groups;
36
51
  const firstPairGroup = (pairGroups === null || pairGroups === void 0 ? void 0 : pairGroups.length) > 0 ? pairGroups[0] : undefined;
37
52
  let fee = 0;
38
53
  if (!firstPairGroup || firstPairGroup.block > initialAccFees.block) {
39
- const openInterest = pairs[pairIndex].oi;
54
+ const openInterest = (0, __1.getPairTotalOisDynamicCollateral)(pairIndex, {
55
+ pairOis: context.pairOis,
56
+ currentPairPrice,
57
+ });
40
58
  fee =
41
59
  (!firstPairGroup
42
60
  ? getPairPendingAccFee(pairIndex, context.currentBlock, long, {
43
61
  pairs,
44
- openInterest,
62
+ openInterest: {
63
+ long: openInterest.long,
64
+ short: openInterest.short,
65
+ max: context.pairOis[pairIndex].maxCollateral,
66
+ },
67
+ collateralPriceUsd: context.collateralPriceUsd,
45
68
  })
46
69
  : long
47
70
  ? firstPairGroup.pairAccFeeLong
48
71
  : firstPairGroup.pairAccFeeShort) - initialAccFees.accPairFee;
49
72
  }
50
73
  for (let i = pairGroups.length; i > 0; i--) {
51
- const { deltaGroup, deltaPair, beforeTradeOpen } = getPairGroupAccFeesDeltas(i - 1, pairGroups, initialAccFees, pairIndex, long, context);
74
+ const { deltaGroup, deltaPair, beforeTradeOpen } = getPairGroupAccFeesDeltas(i - 1, pairGroups, initialAccFees, pairIndex, long, currentPairPrice, {
75
+ currentBlock: context.currentBlock,
76
+ groups,
77
+ pairs,
78
+ collateralPriceUsd: context.collateralPriceUsd,
79
+ pairOis: context.pairOis,
80
+ });
52
81
  fee += Math.max(deltaGroup, deltaPair);
53
82
  if (beforeTradeOpen) {
54
83
  break;
@@ -57,6 +86,10 @@ const getBorrowingFee = (posDai, pairIndex, long, initialAccFees, context) => {
57
86
  return (posDai * fee) / 100;
58
87
  };
59
88
  exports.getBorrowingFee = getBorrowingFee;
89
+ /**
90
+ * @dev This function uses static OI which doesn't reflect current market values
91
+ * @dev The v10 contracts use dynamic OI (beforeV10 + afterV10Token * currentPrice)
92
+ */
60
93
  const withinMaxGroupOi = (pairIndex, long, positionSizeCollateral, context) => {
61
94
  const { groups, pairs } = context;
62
95
  if (!groups || !pairs) {
@@ -75,36 +108,46 @@ const getPairGroupIndex = (pairIndex, context) => {
75
108
  return pairGroups.length == 0 ? 0 : pairGroups[0].groupIndex;
76
109
  };
77
110
  const getPairPendingAccFees = (pairIndex, currentBlock, context) => {
78
- const { pairs, openInterest: { long, short }, } = context;
111
+ const { pairs, openInterest: { long, short }, collateralPriceUsd, } = context;
79
112
  const pair = pairs[pairIndex];
80
- return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.oi.max, pair.feeExponent, pair.feePerBlockCap);
113
+ return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, context.openInterest.max, pair.feeExponent, pair.feePerBlockCap, collateralPriceUsd);
81
114
  };
82
115
  const getPairPendingAccFee = (pairIndex, currentBlock, long, context) => {
83
116
  const { accFeeLong, accFeeShort } = getPairPendingAccFees(pairIndex, currentBlock, context);
84
117
  return long ? accFeeLong : accFeeShort;
85
118
  };
86
119
  const getGroupPendingAccFees = (groupIndex, currentBlock, context) => {
87
- const { groups } = context;
120
+ const { groups, collateralPriceUsd } = context;
88
121
  const group = groups[groupIndex];
89
- return getPendingAccFees(group.accFeeLong, group.accFeeShort, group.oi.long, group.oi.short, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, group.oi.max, group.feeExponent);
122
+ return getPendingAccFees(group.accFeeLong, group.accFeeShort, group.oi.long, group.oi.short, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, group.oi.max, group.feeExponent, undefined, // no fee caps for groups
123
+ collateralPriceUsd);
90
124
  };
91
125
  const getGroupPendingAccFee = (groupIndex, currentBlock, long, context) => {
92
126
  const { accFeeLong, accFeeShort } = getGroupPendingAccFees(groupIndex, currentBlock, context);
93
127
  return long ? accFeeLong : accFeeShort;
94
128
  };
95
- const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long, context) => {
129
+ const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long, currentPairPrice, context) => {
96
130
  const group = pairGroups[i];
97
131
  const beforeTradeOpen = group.block < initialFees.block;
98
132
  let deltaGroup, deltaPair;
99
133
  if (i == pairGroups.length - 1) {
100
- const { currentBlock, groups, pairs } = context;
101
- const openInterest = pairs[pairIndex].oi;
134
+ const { currentBlock, groups, pairs, collateralPriceUsd } = context;
135
+ const openInterest = (0, __1.getPairTotalOisDynamicCollateral)(pairIndex, {
136
+ pairOis: context.pairOis,
137
+ currentPairPrice,
138
+ });
102
139
  deltaGroup = getGroupPendingAccFee(group.groupIndex, currentBlock, long, {
103
140
  groups,
141
+ collateralPriceUsd,
104
142
  });
105
143
  deltaPair = getPairPendingAccFee(pairIndex, currentBlock, long, {
106
144
  pairs,
107
- openInterest,
145
+ openInterest: {
146
+ long: openInterest.long,
147
+ short: openInterest.short,
148
+ max: context.pairOis[pairIndex].maxCollateral,
149
+ },
150
+ collateralPriceUsd,
108
151
  });
109
152
  }
110
153
  else {
@@ -127,8 +170,8 @@ const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long,
127
170
  }
128
171
  return { deltaGroup, deltaPair, beforeTradeOpen };
129
172
  };
130
- const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock, maxOi, feeExponent, feeCaps // as percentage: eg minP: 0.1 = 10%, maxP: 0.5 = 50%
131
- ) => {
173
+ const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock, maxOi, feeExponent, feeCaps, // as percentage: eg minP: 0.1 = 10%, maxP: 0.5 = 50%
174
+ collateralPriceUsd) => {
132
175
  const moreShorts = oiLong < oiShort;
133
176
  const blockDistance = currentBlock > accLastUpdatedBlock ? currentBlock - accLastUpdatedBlock : 0;
134
177
  // If block distance is zero nothing changes
@@ -140,19 +183,25 @@ const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock
140
183
  deltaShort: 0,
141
184
  };
142
185
  }
143
- const netOi = Math.abs(oiLong - oiShort);
144
- // Calculate minimum and maximum effective oi
186
+ // Convert OI to USD if collateral price is provided (dynamic collateral OI)
187
+ const oiLongUsd = collateralPriceUsd ? oiLong * collateralPriceUsd : oiLong;
188
+ const oiShortUsd = collateralPriceUsd
189
+ ? oiShort * collateralPriceUsd
190
+ : oiShort;
191
+ const maxOiUsd = collateralPriceUsd ? maxOi * collateralPriceUsd : maxOi;
192
+ const netOi = Math.abs(oiLongUsd - oiShortUsd);
193
+ // Calculate minimum and maximum effective oi (using USD values if available)
145
194
  const { minP, maxP } = getFeePerBlockCaps(feeCaps);
146
- const minNetOi = maxOi * minP;
147
- const maxNetOi = maxOi * maxP;
195
+ const minNetOi = maxOiUsd * minP;
196
+ const maxNetOi = maxOiUsd * maxP;
148
197
  // Calculate the minimum acc fee delta (applies to both sides)
149
198
  const minDelta = minNetOi > 0
150
- ? getPendingAccFeesDelta(blockDistance, feePerBlock, netOi, maxOi, feeExponent)
199
+ ? getPendingAccFeesDelta(blockDistance, feePerBlock, minNetOi, maxOiUsd, feeExponent)
151
200
  : 0;
152
201
  // Calculate the actual acc fee (using capped oi of 100% or less)
153
202
  const delta = netOi > minNetOi
154
203
  ? getPendingAccFeesDelta(blockDistance, feePerBlock, Math.min(netOi, maxNetOi), // if netOi > cap, use cap
155
- maxOi, feeExponent)
204
+ maxOiUsd, feeExponent)
156
205
  : minDelta;
157
206
  const [deltaLong, deltaShort] = moreShorts
158
207
  ? [minDelta, delta]
@@ -207,3 +256,4 @@ exports.borrowingFeeUtils = {
207
256
  };
208
257
  exports.BorrowingFee = __importStar(require("./types"));
209
258
  __exportStar(require("./converter"), exports);
259
+ __exportStar(require("./builder"), exports);
@@ -0,0 +1,6 @@
1
+ import { GlobalTradingVariablesType } from "../../../backend/tradingVariables/types";
2
+ import { GetPairBorrowingFeeV2Context } from "./types";
3
+ /**
4
+ * @dev Builds borrowing v2 sub-context for a specific pair
5
+ */
6
+ export declare const buildBorrowingV2Context: (globalTradingVariables: GlobalTradingVariablesType, collateralIndex: number, pairIndex: number, currentTimestamp: number) => GetPairBorrowingFeeV2Context | undefined;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildBorrowingV2Context = void 0;
4
+ /**
5
+ * @dev Builds borrowing v2 sub-context for a specific pair
6
+ */
7
+ const buildBorrowingV2Context = (globalTradingVariables, collateralIndex, pairIndex, currentTimestamp) => {
8
+ var _a, _b;
9
+ const collateral = globalTradingVariables.collaterals[collateralIndex - 1];
10
+ if (!(collateral === null || collateral === void 0 ? void 0 : collateral.pairBorrowingFeesV2)) {
11
+ return undefined;
12
+ }
13
+ const params = (_a = collateral.pairBorrowingFeesV2.params) === null || _a === void 0 ? void 0 : _a[pairIndex];
14
+ const data = (_b = collateral.pairBorrowingFeesV2.data) === null || _b === void 0 ? void 0 : _b[pairIndex];
15
+ if (!params || !data) {
16
+ return undefined;
17
+ }
18
+ return {
19
+ params,
20
+ data,
21
+ currentTimestamp,
22
+ };
23
+ };
24
+ exports.buildBorrowingV2Context = buildBorrowingV2Context;
@@ -0,0 +1,75 @@
1
+ import type { IFundingFees } from "../../../contracts/types/generated/GNSMultiCollatDiamond";
2
+ import { BorrowingFeeV2 } from ".";
3
+ /**
4
+ * @dev Converts contract BorrowingFeeParams to SDK type
5
+ * @param contractParams Contract borrowing fee params from IFundingFees.BorrowingFeeParams
6
+ * @returns SDK BorrowingFeeParams
7
+ */
8
+ export declare const convertBorrowingFeeParams: (contractParams: IFundingFees.BorrowingFeeParamsStructOutput) => BorrowingFeeV2.BorrowingFeeParams;
9
+ /**
10
+ * @dev Converts array of contract BorrowingFeeParams to SDK types
11
+ * @param contractParamsArray Array of contract borrowing fee params
12
+ * @returns Array of SDK BorrowingFeeParams
13
+ */
14
+ export declare const convertBorrowingFeeParamsArray: (contractParamsArray: IFundingFees.BorrowingFeeParamsStructOutput[]) => BorrowingFeeV2.BorrowingFeeParams[];
15
+ /**
16
+ * @dev Converts contract PairBorrowingFeeData to SDK type
17
+ * @param contractData Contract pair borrowing fee data from IFundingFees.PairBorrowingFeeData
18
+ * @returns SDK PairBorrowingFeeData
19
+ */
20
+ export declare const convertPairBorrowingFeeData: (contractData: IFundingFees.PairBorrowingFeeDataStructOutput) => BorrowingFeeV2.PairBorrowingFeeData;
21
+ /**
22
+ * @dev Converts array of contract PairBorrowingFeeData to SDK types
23
+ * @param contractDataArray Array of contract pair borrowing fee data
24
+ * @returns Array of SDK PairBorrowingFeeData
25
+ */
26
+ export declare const convertPairBorrowingFeeDataArray: (contractDataArray: IFundingFees.PairBorrowingFeeDataStructOutput[]) => BorrowingFeeV2.PairBorrowingFeeData[];
27
+ /**
28
+ * @dev Converts contract TradeFeesData to SDK TradeInitialAccFees
29
+ * @param contractTradeData Contract trade fees data from IFundingFees.TradeFeesData
30
+ * @returns SDK TradeInitialAccFees
31
+ */
32
+ export declare const convertTradeInitialAccFees: (contractTradeData: IFundingFees.TradeFeesDataStructOutput) => BorrowingFeeV2.TradeInitialAccFees;
33
+ /**
34
+ * @dev Converts array of contract TradeFeesData to SDK TradeInitialAccFees
35
+ * @param contractTradeDataArray Array of contract trade fees data
36
+ * @returns Array of SDK TradeInitialAccFees
37
+ */
38
+ export declare const convertTradeInitialAccFeesArray: (contractTradeDataArray: IFundingFees.TradeFeesDataStructOutput[]) => BorrowingFeeV2.TradeInitialAccFees[];
39
+ /**
40
+ * @dev Creates a context object from contract data arrays
41
+ * @param pairIndices Array of pair indices
42
+ * @param borrowingParams Array of borrowing fee params from contract
43
+ * @param borrowingData Array of pair borrowing fee data from contract
44
+ * @param currentTimestamp Optional current timestamp
45
+ * @returns Complete SDK context for borrowing v2 calculations (collateral-scoped)
46
+ */
47
+ export declare const createBorrowingV2Context: (pairIndices: number[], borrowingParams: IFundingFees.BorrowingFeeParamsStructOutput[], borrowingData: IFundingFees.PairBorrowingFeeDataStructOutput[], currentTimestamp?: number) => BorrowingFeeV2.GetBorrowingFeeV2Context;
48
+ /**
49
+ * @dev Helper function to validate borrowing rate per second
50
+ * @param borrowingRatePerSecondP Borrowing rate per second (normalized float)
51
+ * @returns True if rate is within valid bounds
52
+ */
53
+ export declare const isValidBorrowingRate: (borrowingRatePerSecondP: number) => boolean;
54
+ /**
55
+ * @dev Helper function to convert borrowing rate to APR percentage
56
+ * @param borrowingRatePerSecondP Borrowing rate per second (normalized float)
57
+ * @returns APR as percentage (e.g., 10.5 for 10.5% APR)
58
+ */
59
+ export declare const borrowingRateToAPR: (borrowingRatePerSecondP: number) => number;
60
+ /**
61
+ * @dev Helper function to convert APR percentage to borrowing rate per second
62
+ * @param aprPercentage APR as percentage (e.g., 10.5 for 10.5% APR)
63
+ * @returns Borrowing rate per second (normalized float)
64
+ */
65
+ export declare const aprToBorrowingRate: (aprPercentage: number) => number;
66
+ /**
67
+ * @dev Creates a collateral-scoped context from frontend data structure
68
+ * @param collateralBorrowingData Data structure from frontend (params and data arrays)
69
+ * @param currentTimestamp Optional current timestamp
70
+ * @returns Collateral-scoped borrowing fee v2 context
71
+ */
72
+ export declare const createCollateralScopedBorrowingContext: (collateralBorrowingData: {
73
+ params: BorrowingFeeV2.BorrowingFeeParams[];
74
+ data: BorrowingFeeV2.PairBorrowingFeeData[];
75
+ }, currentTimestamp?: number) => BorrowingFeeV2.GetBorrowingFeeV2Context;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCollateralScopedBorrowingContext = exports.aprToBorrowingRate = exports.borrowingRateToAPR = exports.isValidBorrowingRate = exports.createBorrowingV2Context = exports.convertTradeInitialAccFeesArray = exports.convertTradeInitialAccFees = exports.convertPairBorrowingFeeDataArray = exports.convertPairBorrowingFeeData = exports.convertBorrowingFeeParamsArray = exports.convertBorrowingFeeParams = void 0;
4
+ const index_1 = require("./index");
5
+ /**
6
+ * @dev Converts contract BorrowingFeeParams to SDK type
7
+ * @param contractParams Contract borrowing fee params from IFundingFees.BorrowingFeeParams
8
+ * @returns SDK BorrowingFeeParams
9
+ */
10
+ const convertBorrowingFeeParams = (contractParams) => ({
11
+ borrowingRatePerSecondP: contractParams.borrowingRatePerSecondP /
12
+ index_1.BORROWING_V2_PRECISION.RATE_PER_SECOND,
13
+ });
14
+ exports.convertBorrowingFeeParams = convertBorrowingFeeParams;
15
+ /**
16
+ * @dev Converts array of contract BorrowingFeeParams to SDK types
17
+ * @param contractParamsArray Array of contract borrowing fee params
18
+ * @returns Array of SDK BorrowingFeeParams
19
+ */
20
+ const convertBorrowingFeeParamsArray = (contractParamsArray) => contractParamsArray.map(params => (0, exports.convertBorrowingFeeParams)(params));
21
+ exports.convertBorrowingFeeParamsArray = convertBorrowingFeeParamsArray;
22
+ /**
23
+ * @dev Converts contract PairBorrowingFeeData to SDK type
24
+ * @param contractData Contract pair borrowing fee data from IFundingFees.PairBorrowingFeeData
25
+ * @returns SDK PairBorrowingFeeData
26
+ */
27
+ const convertPairBorrowingFeeData = (contractData) => ({
28
+ accBorrowingFeeP: parseFloat(contractData.accBorrowingFeeP.toString()) /
29
+ index_1.BORROWING_V2_PRECISION.ACC_FEE,
30
+ lastBorrowingUpdateTs: contractData.lastBorrowingUpdateTs,
31
+ });
32
+ exports.convertPairBorrowingFeeData = convertPairBorrowingFeeData;
33
+ /**
34
+ * @dev Converts array of contract PairBorrowingFeeData to SDK types
35
+ * @param contractDataArray Array of contract pair borrowing fee data
36
+ * @returns Array of SDK PairBorrowingFeeData
37
+ */
38
+ const convertPairBorrowingFeeDataArray = (contractDataArray) => contractDataArray.map(data => (0, exports.convertPairBorrowingFeeData)(data));
39
+ exports.convertPairBorrowingFeeDataArray = convertPairBorrowingFeeDataArray;
40
+ /**
41
+ * @dev Converts contract TradeFeesData to SDK TradeInitialAccFees
42
+ * @param contractTradeData Contract trade fees data from IFundingFees.TradeFeesData
43
+ * @returns SDK TradeInitialAccFees
44
+ */
45
+ const convertTradeInitialAccFees = (contractTradeData) => ({
46
+ initialAccBorrowingFeeP: parseFloat(contractTradeData.initialAccBorrowingFeeP.toString()) /
47
+ index_1.BORROWING_V2_PRECISION.ACC_FEE,
48
+ });
49
+ exports.convertTradeInitialAccFees = convertTradeInitialAccFees;
50
+ /**
51
+ * @dev Converts array of contract TradeFeesData to SDK TradeInitialAccFees
52
+ * @param contractTradeDataArray Array of contract trade fees data
53
+ * @returns Array of SDK TradeInitialAccFees
54
+ */
55
+ const convertTradeInitialAccFeesArray = (contractTradeDataArray) => contractTradeDataArray.map(data => (0, exports.convertTradeInitialAccFees)(data));
56
+ exports.convertTradeInitialAccFeesArray = convertTradeInitialAccFeesArray;
57
+ /**
58
+ * @dev Creates a context object from contract data arrays
59
+ * @param pairIndices Array of pair indices
60
+ * @param borrowingParams Array of borrowing fee params from contract
61
+ * @param borrowingData Array of pair borrowing fee data from contract
62
+ * @param currentTimestamp Optional current timestamp
63
+ * @returns Complete SDK context for borrowing v2 calculations (collateral-scoped)
64
+ */
65
+ const createBorrowingV2Context = (pairIndices, borrowingParams, borrowingData, currentTimestamp) => {
66
+ const context = {
67
+ currentTimestamp,
68
+ borrowingParams: {},
69
+ borrowingData: {},
70
+ };
71
+ // Build objects indexed by pairIndex
72
+ for (let i = 0; i < pairIndices.length; i++) {
73
+ const pairIndex = pairIndices[i];
74
+ // Store converted data
75
+ context.borrowingParams[pairIndex] = (0, exports.convertBorrowingFeeParams)(borrowingParams[i]);
76
+ context.borrowingData[pairIndex] = (0, exports.convertPairBorrowingFeeData)(borrowingData[i]);
77
+ }
78
+ return context;
79
+ };
80
+ exports.createBorrowingV2Context = createBorrowingV2Context;
81
+ /**
82
+ * @dev Helper function to validate borrowing rate per second
83
+ * @param borrowingRatePerSecondP Borrowing rate per second (normalized float)
84
+ * @returns True if rate is within valid bounds
85
+ */
86
+ const isValidBorrowingRate = (borrowingRatePerSecondP) => {
87
+ return (borrowingRatePerSecondP >= 0 &&
88
+ borrowingRatePerSecondP <= 317097 / index_1.BORROWING_V2_PRECISION.RATE_PER_SECOND); // Max 1,000% APR
89
+ };
90
+ exports.isValidBorrowingRate = isValidBorrowingRate;
91
+ /**
92
+ * @dev Helper function to convert borrowing rate to APR percentage
93
+ * @param borrowingRatePerSecondP Borrowing rate per second (normalized float)
94
+ * @returns APR as percentage (e.g., 10.5 for 10.5% APR)
95
+ */
96
+ const borrowingRateToAPR = (borrowingRatePerSecondP) => {
97
+ const SECONDS_PER_YEAR = 365 * 24 * 60 * 60; // 31,536,000
98
+ return borrowingRatePerSecondP * SECONDS_PER_YEAR;
99
+ };
100
+ exports.borrowingRateToAPR = borrowingRateToAPR;
101
+ /**
102
+ * @dev Helper function to convert APR percentage to borrowing rate per second
103
+ * @param aprPercentage APR as percentage (e.g., 10.5 for 10.5% APR)
104
+ * @returns Borrowing rate per second (normalized float)
105
+ */
106
+ const aprToBorrowingRate = (aprPercentage) => {
107
+ const SECONDS_PER_YEAR = 365 * 24 * 60 * 60; // 31,536,000
108
+ return aprPercentage / SECONDS_PER_YEAR;
109
+ };
110
+ exports.aprToBorrowingRate = aprToBorrowingRate;
111
+ /**
112
+ * @dev Creates a collateral-scoped context from frontend data structure
113
+ * @param collateralBorrowingData Data structure from frontend (params and data arrays)
114
+ * @param currentTimestamp Optional current timestamp
115
+ * @returns Collateral-scoped borrowing fee v2 context
116
+ */
117
+ const createCollateralScopedBorrowingContext = (collateralBorrowingData, currentTimestamp) => {
118
+ const context = {
119
+ currentTimestamp: currentTimestamp !== null && currentTimestamp !== void 0 ? currentTimestamp : Math.floor(Date.now() / 1000),
120
+ borrowingParams: {},
121
+ borrowingData: {},
122
+ };
123
+ // Map arrays to objects indexed by array position (pairIndex)
124
+ collateralBorrowingData.params.forEach((param, index) => {
125
+ context.borrowingParams[index] = param;
126
+ });
127
+ collateralBorrowingData.data.forEach((data, index) => {
128
+ context.borrowingData[index] = data;
129
+ });
130
+ return context;
131
+ };
132
+ exports.createCollateralScopedBorrowingContext = createCollateralScopedBorrowingContext;
@@ -0,0 +1,75 @@
1
+ import type { GNSMultiCollatDiamond } from "../../../contracts/types/generated";
2
+ import { BorrowingFeeV2 } from ".";
3
+ /**
4
+ * @dev Fetches borrowing fee parameters v2 for specific pairs
5
+ * @param contract GNSMultiCollatDiamond contract instance
6
+ * @param collateralIndices Array of collateral indices
7
+ * @param pairIndices Array of pair indices
8
+ * @returns Promise resolving to array of borrowing fee parameters
9
+ */
10
+ export declare const fetchBorrowingFeeParamsV2: (contract: GNSMultiCollatDiamond, collateralIndices: number[], pairIndices: number[]) => Promise<BorrowingFeeV2.BorrowingFeeParams[]>;
11
+ /**
12
+ * @dev Fetches pair borrowing fee data v2 for specific pairs
13
+ * @param contract GNSMultiCollatDiamond contract instance
14
+ * @param collateralIndices Array of collateral indices
15
+ * @param pairIndices Array of pair indices
16
+ * @returns Promise resolving to array of pair borrowing fee data
17
+ */
18
+ export declare const fetchPairBorrowingFeeDataV2: (contract: GNSMultiCollatDiamond, collateralIndices: number[], pairIndices: number[]) => Promise<BorrowingFeeV2.PairBorrowingFeeData[]>;
19
+ /**
20
+ * @dev Fetches borrowing fees in collateral tokens for a specific trade
21
+ * @param contract GNSMultiCollatDiamond contract instance
22
+ * @param trader Address of the trader
23
+ * @param index Trade index
24
+ * @param currentPairPrice Current price of the trading pair (1e6 precision)
25
+ * @returns Promise resolving to borrowing fees in collateral tokens
26
+ */
27
+ export declare const fetchTradeBorrowingFeesCollateralV2: (contract: GNSMultiCollatDiamond, trader: string, index: number, currentPairPrice: number) => Promise<number>;
28
+ /**
29
+ * @dev Fetches pending accumulated borrowing fees for a specific pair
30
+ * @param contract GNSMultiCollatDiamond contract instance
31
+ * @param collateralIndex Index of the collateral
32
+ * @param pairIndex Index of the trading pair
33
+ * @param currentPairPrice Current price of the trading pair (1e6 precision)
34
+ * @returns Promise resolving to pending accumulated borrowing fee
35
+ */
36
+ export declare const fetchPairPendingAccBorrowingFeesV2: (contract: GNSMultiCollatDiamond, collateralIndex: number, pairIndex: number, currentPairPrice: number) => Promise<number>;
37
+ /**
38
+ * @dev Convenience function to fetch all borrowing v2 data for specific pairs
39
+ * @param contract GNSMultiCollatDiamond contract instance
40
+ * @param collateralIndex Index of the collateral
41
+ * @param pairIndices Array of pair indices
42
+ * @returns Promise resolving to complete borrowing v2 data set
43
+ */
44
+ export declare const fetchAllBorrowingV2Data: (contract: GNSMultiCollatDiamond, collateralIndex: number, pairIndices: number[]) => Promise<{
45
+ params: BorrowingFeeV2.BorrowingFeeParams[];
46
+ data: BorrowingFeeV2.PairBorrowingFeeData[];
47
+ context: BorrowingFeeV2.GetBorrowingFeeV2Context;
48
+ }>;
49
+ /**
50
+ * @dev Creates a complete borrowing v2 context from contract data
51
+ * @param contract GNSMultiCollatDiamond contract instance
52
+ * @param collateralIndex Index of the collateral
53
+ * @param pairIndices Array of pair indices
54
+ * @param currentTimestamp Optional current timestamp for calculations
55
+ * @returns Promise resolving to complete borrowing v2 context
56
+ */
57
+ export declare const createBorrowingV2ContextFromContract: (contract: GNSMultiCollatDiamond, collateralIndex: number, pairIndices: number[], currentTimestamp?: number) => Promise<BorrowingFeeV2.GetBorrowingFeeV2Context>;
58
+ /**
59
+ * @dev Helper function to create context from already fetched arrays
60
+ * @param collateralIndices Array of collateral indices
61
+ * @param pairIndices Array of pair indices
62
+ * @param params Array of borrowing fee parameters
63
+ * @param data Array of pair borrowing fee data
64
+ * @param currentTimestamp Optional current timestamp
65
+ * @returns Complete borrowing v2 context
66
+ */
67
+ export declare const createBorrowingV2ContextFromArrays: (collateralIndices: number[], pairIndices: number[], params: BorrowingFeeV2.BorrowingFeeParams[], data: BorrowingFeeV2.PairBorrowingFeeData[], currentTimestamp?: number) => BorrowingFeeV2.GetBorrowingFeeV2Context;
68
+ /**
69
+ * @dev Fetches borrowing v2 data for multiple collateral/pair combinations
70
+ * @param contract GNSMultiCollatDiamond contract instance
71
+ * @param collateralIndices Array of collateral indices
72
+ * @param pairIndices Array of pair indices (must match collateralIndices length)
73
+ * @returns Promise resolving to complete borrowing v2 context
74
+ */
75
+ export declare const fetchBorrowingV2DataForPairs: (contract: GNSMultiCollatDiamond, collateralIndices: number[], pairIndices: number[]) => Promise<BorrowingFeeV2.GetBorrowingFeeV2Context>;