@gainsnetwork/sdk 0.2.71-rc4 → 1.0.0-rc2

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 -3
  15. package/lib/constants.js +7 -9
  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 -3
  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 +33 -0
  139. package/lib/trade/fees/borrowing/index.d.ts +23 -2
  140. package/lib/trade/fees/borrowing/index.js +50 -16
  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 +8 -2
  170. package/lib/trade/fees/index.js +67 -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 +89 -0
  202. package/lib/trade/pnl/index.js +302 -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 +78 -0
  223. package/lib/trade/priceImpact/open/types.d.ts +44 -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 -12
  238. package/lib/trade/types.js +0 -3
  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
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Builder functions for creating market price contexts
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createMarketPriceContext = exports.createEmptyMarketPriceContext = exports.buildMarketPriceContext = void 0;
7
+ /**
8
+ * @dev Builds a market price context for a specific pair from trading variables
9
+ * @param tradingVariables Trading variables for a specific collateral
10
+ * @param pairIndex Pair index to create context for
11
+ * @returns Market price context for the pair
12
+ */
13
+ const buildMarketPriceContext = (tradingVariables, pairIndex) => {
14
+ // Get skew depth for the pair, default to 0 if not set
15
+ const skewDepth = tradingVariables.pairSkewDepths[pairIndex] || 0;
16
+ // Get pair OI data
17
+ const pairOi = tradingVariables.pairOis[pairIndex];
18
+ if (!pairOi) {
19
+ // Return default context if no OI data
20
+ return {
21
+ skewDepth,
22
+ pairOiToken: {
23
+ oiLongToken: 0,
24
+ oiShortToken: 0,
25
+ },
26
+ };
27
+ }
28
+ // Extract token OI from unified pair OI
29
+ const pairOiToken = {
30
+ oiLongToken: pairOi.token.long,
31
+ oiShortToken: pairOi.token.short,
32
+ };
33
+ return {
34
+ skewDepth,
35
+ pairOiToken,
36
+ };
37
+ };
38
+ exports.buildMarketPriceContext = buildMarketPriceContext;
39
+ /**
40
+ * @dev Creates an empty market price context
41
+ * @returns Empty market price context
42
+ */
43
+ const createEmptyMarketPriceContext = () => {
44
+ return {
45
+ skewDepth: 0,
46
+ pairOiToken: {
47
+ oiLongToken: 0,
48
+ oiShortToken: 0,
49
+ },
50
+ };
51
+ };
52
+ exports.createEmptyMarketPriceContext = createEmptyMarketPriceContext;
53
+ /**
54
+ * @dev Creates a market price context with custom values
55
+ * @param skewDepth Skew depth in tokens
56
+ * @param oiLongToken Long OI in tokens
57
+ * @param oiShortToken Short OI in tokens
58
+ * @returns Market price context
59
+ */
60
+ const createMarketPriceContext = (skewDepth, oiLongToken, oiShortToken) => {
61
+ return {
62
+ skewDepth,
63
+ pairOiToken: {
64
+ oiLongToken,
65
+ oiShortToken,
66
+ },
67
+ };
68
+ };
69
+ exports.createMarketPriceContext = createMarketPriceContext;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @dev Market price module exports
3
+ */
4
+ export * from "./types";
5
+ export * from "./marketPrice";
6
+ export * from "./builder";
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Market price module exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./types"), exports);
21
+ __exportStar(require("./marketPrice"), exports);
22
+ __exportStar(require("./builder"), exports);
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @dev Current market price calculation with skew impact
3
+ */
4
+ import { MarketPriceResult, MarketPriceContext } from "./types";
5
+ /**
6
+ * @dev Calculates the current market price adjusted for skew impact
7
+ * @dev Please always provide oracle price to this and other functions in the sdk. Market price is displayed in the UI.
8
+ * @param pairIndex Trading pair index
9
+ * @param oraclePrice Oracle price for the pair
10
+ * @param context Market price context with depths and OI data
11
+ * @returns Current market price with skew impact applied
12
+ */
13
+ export declare const getCurrentMarketPrice: (pairIndex: number, oraclePrice: number, context: MarketPriceContext) => MarketPriceResult;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Current market price calculation with skew impact
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getCurrentMarketPrice = void 0;
7
+ const skew_1 = require("../../trade/priceImpact/skew");
8
+ /**
9
+ * @dev Calculates the current market price adjusted for skew impact
10
+ * @dev Please always provide oracle price to this and other functions in the sdk. Market price is displayed in the UI.
11
+ * @param pairIndex Trading pair index
12
+ * @param oraclePrice Oracle price for the pair
13
+ * @param context Market price context with depths and OI data
14
+ * @returns Current market price with skew impact applied
15
+ */
16
+ const getCurrentMarketPrice = (pairIndex, oraclePrice, context) => {
17
+ let skewImpactP = 0;
18
+ if (context.skewDepth > 0) {
19
+ const skewResult = (0, skew_1.getTradeSkewPriceImpact)({
20
+ collateralIndex: 0,
21
+ pairIndex,
22
+ long: true,
23
+ open: true,
24
+ positionSizeToken: 0, // Size 0 for current market price
25
+ }, context);
26
+ skewImpactP = skewResult.basePriceImpactP;
27
+ }
28
+ const marketPrice = oraclePrice * (1 + skewImpactP / 100);
29
+ return {
30
+ marketPrice,
31
+ skewImpactP,
32
+ oraclePrice,
33
+ };
34
+ };
35
+ exports.getCurrentMarketPrice = getCurrentMarketPrice;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @dev Market price types for calculating price with skew impact
3
+ */
4
+ export type MarketPriceInput = {
5
+ collateralIndex: number;
6
+ pairIndex: number;
7
+ oraclePrice: number;
8
+ long: boolean;
9
+ open: boolean;
10
+ positionSizeCollateral: number;
11
+ };
12
+ export type MarketPriceResult = {
13
+ marketPrice: number;
14
+ skewImpactP: number;
15
+ oraclePrice: number;
16
+ };
17
+ export type MarketPriceContext = {
18
+ skewDepth: number;
19
+ pairOiToken: {
20
+ oiLongToken: number;
21
+ oiShortToken: number;
22
+ };
23
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Market price types for calculating price with skew impact
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export * from "./validateCounterTrade";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./validateCounterTrade"), exports);
@@ -0,0 +1,7 @@
1
+ export type ValidateCounterTradeContext = {
2
+ pairOiSkewCollateral: number;
3
+ };
4
+ export type ValidateCounterTradeResult = {
5
+ isValidated: boolean;
6
+ exceedingPositionSizeCollateral: number;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { Trade } from "../types";
2
+ import { ValidateCounterTradeContext, ValidateCounterTradeResult } from "./types";
3
+ /**
4
+ * Validates a counter trade based on pair OI skew, matching the contract's validateCounterTrade logic
5
+ * @param trade Trade object
6
+ * @param positionSizeCollateral Position size in collateral tokens
7
+ * @param context Context containing the pair OI skew
8
+ * @returns Validation result with exceeding collateral amount if applicable
9
+ */
10
+ export declare function validateCounterTrade(trade: Trade, positionSizeCollateral: number, context: ValidateCounterTradeContext): ValidateCounterTradeResult;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateCounterTrade = void 0;
4
+ /**
5
+ * Validates a counter trade based on pair OI skew, matching the contract's validateCounterTrade logic
6
+ * @param trade Trade object
7
+ * @param positionSizeCollateral Position size in collateral tokens
8
+ * @param context Context containing the pair OI skew
9
+ * @returns Validation result with exceeding collateral amount if applicable
10
+ */
11
+ function validateCounterTrade(trade, positionSizeCollateral, context) {
12
+ const { pairOiSkewCollateral } = context;
13
+ // Calculate signed position size based on trade direction
14
+ const positionSizeCollateralSigned = positionSizeCollateral * (trade.long ? 1 : -1);
15
+ // Check if position improves skew (opposite signs)
16
+ if (pairOiSkewCollateral === 0 ||
17
+ (pairOiSkewCollateral > 0 && positionSizeCollateralSigned > 0) ||
18
+ (pairOiSkewCollateral < 0 && positionSizeCollateralSigned < 0)) {
19
+ return { isValidated: false, exceedingPositionSizeCollateral: 0 };
20
+ }
21
+ // Calculate maximum position size that brings skew to 0
22
+ const maxPositionSizeCollateral = Math.abs(pairOiSkewCollateral);
23
+ // Calculate exceeding amount
24
+ const exceedingPositionSizeCollateral = positionSizeCollateral > maxPositionSizeCollateral
25
+ ? positionSizeCollateral - maxPositionSizeCollateral
26
+ : 0;
27
+ return { isValidated: true, exceedingPositionSizeCollateral };
28
+ }
29
+ exports.validateCounterTrade = validateCounterTrade;
@@ -0,0 +1,23 @@
1
+ import { GlobalTradingVariablesType } from "../../backend/tradingVariables/types";
2
+ import { TradeInfo } from "..";
3
+ import { TradeEffectiveLeverageContext } from "./types";
4
+ /**
5
+ * @dev Builds a complete context for effective leverage calculations
6
+ * @dev Uses the closing price impact context builder as a sub-context
7
+ * @param globalTradingVariables The transformed global trading variables from backend
8
+ * @param collateralIndex The collateral index (1-based)
9
+ * @param pairIndex The pair index
10
+ * @param tradeInfo Trade information including createdBlock
11
+ * @param additionalParams Additional parameters for price impact calculations
12
+ * @returns Complete context ready for getTradeNewEffectiveLeverage
13
+ */
14
+ export declare const buildTradeEffectiveLeverageContext: (globalTradingVariables: GlobalTradingVariablesType, collateralIndex: number, pairIndex: number, tradeInfo: TradeInfo, additionalParams: {
15
+ currentBlock: number;
16
+ contractsVersion?: number;
17
+ isPnlPositive?: boolean;
18
+ userPriceImpact?: {
19
+ cumulVolPriceImpactMultiplier: number;
20
+ fixedSpreadP: number;
21
+ };
22
+ protectionCloseFactorWhitelist?: boolean;
23
+ }) => TradeEffectiveLeverageContext | undefined;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildTradeEffectiveLeverageContext = void 0;
4
+ const __1 = require("..");
5
+ /**
6
+ * @dev Builds a complete context for effective leverage calculations
7
+ * @dev Uses the closing price impact context builder as a sub-context
8
+ * @param globalTradingVariables The transformed global trading variables from backend
9
+ * @param collateralIndex The collateral index (1-based)
10
+ * @param pairIndex The pair index
11
+ * @param tradeInfo Trade information including createdBlock
12
+ * @param additionalParams Additional parameters for price impact calculations
13
+ * @returns Complete context ready for getTradeNewEffectiveLeverage
14
+ */
15
+ const buildTradeEffectiveLeverageContext = (globalTradingVariables, collateralIndex, pairIndex, tradeInfo, additionalParams) => {
16
+ var _a;
17
+ // Build the closing price impact context which we'll use for PnL calculations
18
+ const closingPriceImpactContext = (0, __1.buildTradeClosingPriceImpactContext)(globalTradingVariables, collateralIndex, pairIndex, tradeInfo, additionalParams);
19
+ if (!closingPriceImpactContext) {
20
+ return undefined;
21
+ }
22
+ // Extract base spread from pairs data
23
+ const pairs = globalTradingVariables.pairs;
24
+ const baseSpreadP = ((_a = pairs === null || pairs === void 0 ? void 0 : pairs[pairIndex]) === null || _a === void 0 ? void 0 : _a.spreadP) || 0;
25
+ return {
26
+ closingPriceImpactContext,
27
+ baseSpreadP,
28
+ };
29
+ };
30
+ exports.buildTradeEffectiveLeverageContext = buildTradeEffectiveLeverageContext;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @dev Trade effective leverage calculations
3
+ * @dev Mirrors contract's TradingCommonUtils.getTradeNewEffectiveLeverage
4
+ */
5
+ import { TradeEffectiveLeverageInput, TradeEffectiveLeverageContext, TradeEffectiveLeverageResult } from "./types";
6
+ export type { TradeEffectiveLeverageInput, TradeEffectiveLeverageContext, TradeEffectiveLeverageResult, };
7
+ export { buildTradeEffectiveLeverageContext } from "./builder";
8
+ /**
9
+ * @dev Calculates the effective leverage of a trade accounting for unrealized PnL
10
+ * @dev Effective leverage increases when PnL is negative and decreases when positive
11
+ * @dev Mirrors contract's getTradeNewEffectiveLeverage function
12
+ * @param input Trade parameters including new position values
13
+ * @param context Combined context for calculations
14
+ * @returns Effective leverage and related values
15
+ */
16
+ export declare const getTradeNewEffectiveLeverage: (input: TradeEffectiveLeverageInput, context: TradeEffectiveLeverageContext) => TradeEffectiveLeverageResult;
17
+ /**
18
+ * @dev Simplified version for existing positions (no opening fees)
19
+ * @param input Trade parameters
20
+ * @param context Combined context
21
+ * @returns Effective leverage and related values
22
+ */
23
+ export declare const getTradeEffectiveLeverage: (input: Omit<TradeEffectiveLeverageInput, "openingFeesCollateral">, context: TradeEffectiveLeverageContext) => TradeEffectiveLeverageResult;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTradeEffectiveLeverage = exports.getTradeNewEffectiveLeverage = exports.buildTradeEffectiveLeverageContext = void 0;
4
+ const __1 = require("..");
5
+ var builder_1 = require("./builder");
6
+ Object.defineProperty(exports, "buildTradeEffectiveLeverageContext", { enumerable: true, get: function () { return builder_1.buildTradeEffectiveLeverageContext; } });
7
+ /**
8
+ * @dev Calculates the effective leverage of a trade accounting for unrealized PnL
9
+ * @dev Effective leverage increases when PnL is negative and decreases when positive
10
+ * @dev Mirrors contract's getTradeNewEffectiveLeverage function
11
+ * @param input Trade parameters including new position values
12
+ * @param context Combined context for calculations
13
+ * @returns Effective leverage and related values
14
+ */
15
+ const getTradeNewEffectiveLeverage = (input, context) => {
16
+ const { trade, newOpenPrice, newCollateralAmount, newLeverage, currentPairPrice, openingFeesCollateral, } = input;
17
+ const { closingPriceImpactContext } = context;
18
+ // Calculate new position size
19
+ const newPositionSize = newCollateralAmount * newLeverage;
20
+ // Calculate price impact for closing at current price
21
+ const closingPriceImpact = (0, __1.getTradeClosingPriceImpact)({
22
+ trade: Object.assign(Object.assign({}, trade), { openPrice: newOpenPrice, collateralAmount: newCollateralAmount, leverage: newLeverage }),
23
+ oraclePrice: currentPairPrice,
24
+ positionSizeCollateral: newPositionSize,
25
+ currentPairPrice: currentPairPrice,
26
+ useCumulativeVolPriceImpact: true,
27
+ collateralIndex: trade.collateralIndex,
28
+ pairIndex: trade.pairIndex,
29
+ pairSpreadP: context.baseSpreadP,
30
+ contractsVersion: closingPriceImpactContext.tradeInfo.contractsVersion,
31
+ }, closingPriceImpactContext);
32
+ // Calculate unrealized PnL
33
+ // For longs: (exitPrice - entryPrice) * positionSizeToken
34
+ // For shorts: (entryPrice - exitPrice) * positionSizeToken
35
+ const priceDiff = trade.long
36
+ ? closingPriceImpact.priceAfterImpact - newOpenPrice
37
+ : newOpenPrice - closingPriceImpact.priceAfterImpact;
38
+ const unrealizedPnl = priceDiff * closingPriceImpact.positionSizeToken;
39
+ // Calculate effective collateral (collateral + PnL - fees)
40
+ // Note: fees are subtracted because they reduce the effective collateral
41
+ const effectiveCollateral = newCollateralAmount + unrealizedPnl - openingFeesCollateral;
42
+ // Calculate effective leverage
43
+ // If effective collateral is <= 0, leverage is effectively infinite
44
+ const effectiveLeverage = effectiveCollateral > 0
45
+ ? newPositionSize / effectiveCollateral
46
+ : Number.MAX_SAFE_INTEGER;
47
+ return {
48
+ effectiveLeverage,
49
+ unrealizedPnl,
50
+ effectiveCollateral,
51
+ positionSize: newPositionSize,
52
+ };
53
+ };
54
+ exports.getTradeNewEffectiveLeverage = getTradeNewEffectiveLeverage;
55
+ /**
56
+ * @dev Simplified version for existing positions (no opening fees)
57
+ * @param input Trade parameters
58
+ * @param context Combined context
59
+ * @returns Effective leverage and related values
60
+ */
61
+ const getTradeEffectiveLeverage = (input, context) => {
62
+ return (0, exports.getTradeNewEffectiveLeverage)(Object.assign(Object.assign({}, input), { openingFeesCollateral: 0 }), context);
63
+ };
64
+ exports.getTradeEffectiveLeverage = getTradeEffectiveLeverage;
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./builder";
3
+ export { getTradeNewEffectiveLeverage, getTradeEffectiveLeverage, } from "./getTradeNewEffectiveLeverage";
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getTradeEffectiveLeverage = exports.getTradeNewEffectiveLeverage = void 0;
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./builder"), exports);
20
+ var getTradeNewEffectiveLeverage_1 = require("./getTradeNewEffectiveLeverage");
21
+ Object.defineProperty(exports, "getTradeNewEffectiveLeverage", { enumerable: true, get: function () { return getTradeNewEffectiveLeverage_1.getTradeNewEffectiveLeverage; } });
22
+ Object.defineProperty(exports, "getTradeEffectiveLeverage", { enumerable: true, get: function () { return getTradeNewEffectiveLeverage_1.getTradeEffectiveLeverage; } });
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @dev Types for trade effective leverage calculations
3
+ */
4
+ import { Trade, TradeClosingPriceImpactContext } from "..";
5
+ /**
6
+ * @dev Input parameters for effective leverage calculation
7
+ * @dev Mirrors contract's parameters for getTradeNewEffectiveLeverage
8
+ */
9
+ export type TradeEffectiveLeverageInput = {
10
+ trade: Trade;
11
+ newOpenPrice: number;
12
+ newCollateralAmount: number;
13
+ newLeverage: number;
14
+ currentPairPrice: number;
15
+ openingFeesCollateral: number;
16
+ };
17
+ /**
18
+ * @dev Context for effective leverage calculation
19
+ * Includes closing price impact context for PnL calculations
20
+ */
21
+ export type TradeEffectiveLeverageContext = {
22
+ closingPriceImpactContext: TradeClosingPriceImpactContext;
23
+ baseSpreadP: number;
24
+ };
25
+ /**
26
+ * @dev Result of effective leverage calculation
27
+ */
28
+ export type TradeEffectiveLeverageResult = {
29
+ effectiveLeverage: number;
30
+ unrealizedPnl: number;
31
+ effectiveCollateral: number;
32
+ positionSize: number;
33
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @dev Context builder for borrowing v1 fees
3
+ */
4
+ import { GlobalTradingVariablesType } from "../../../backend/tradingVariables/types";
5
+ import { GetBorrowingFeeContext } from "./index";
6
+ /**
7
+ * @dev Builds borrowing v1 context from global trading variables
8
+ * @dev Returns full array-based context required for v1 borrowing fee calculations
9
+ * @param globalTradingVariables The transformed global trading variables from backend
10
+ * @param collateralIndex Collateral index (1-based)
11
+ * @param currentBlock Current block number
12
+ * @returns Full borrowing context with all pairs and groups or undefined if data not available
13
+ */
14
+ export declare const buildBorrowingV1Context: (globalTradingVariables: GlobalTradingVariablesType, collateralIndex: number, currentBlock: number) => GetBorrowingFeeContext | undefined;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Context builder for borrowing v1 fees
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildBorrowingV1Context = void 0;
7
+ /**
8
+ * @dev Builds borrowing v1 context from global trading variables
9
+ * @dev Returns full array-based context required for v1 borrowing fee calculations
10
+ * @param globalTradingVariables The transformed global trading variables from backend
11
+ * @param collateralIndex Collateral index (1-based)
12
+ * @param currentBlock Current block number
13
+ * @returns Full borrowing context with all pairs and groups or undefined if data not available
14
+ */
15
+ const buildBorrowingV1Context = (globalTradingVariables, collateralIndex, currentBlock) => {
16
+ var _a;
17
+ const collateral = globalTradingVariables.collaterals[collateralIndex - 1];
18
+ if (!(collateral === null || collateral === void 0 ? void 0 : collateral.pairBorrowingFees) || !(collateral === null || collateral === void 0 ? void 0 : collateral.groupBorrowingFees)) {
19
+ return undefined;
20
+ }
21
+ const pairs = collateral.pairBorrowingFees;
22
+ const groups = collateral.groupBorrowingFees;
23
+ if (pairs.length === 0 || groups.length === 0) {
24
+ return undefined;
25
+ }
26
+ return {
27
+ currentBlock,
28
+ pairs,
29
+ groups,
30
+ collateralPriceUsd: ((_a = collateral.prices) === null || _a === void 0 ? void 0 : _a.collateralPriceUsd) || 1,
31
+ };
32
+ };
33
+ exports.buildBorrowingV1Context = buildBorrowingV1Context;
@@ -4,8 +4,24 @@ export type GetBorrowingFeeContext = {
4
4
  currentBlock: number;
5
5
  groups: BorrowingFee.Group[];
6
6
  pairs: BorrowingFee.Pair[];
7
+ collateralPriceUsd: number;
7
8
  };
8
- export declare const getBorrowingFee: (posDai: number, pairIndex: PairIndex, long: boolean, initialAccFees: BorrowingFee.InitialAccFees, context: GetBorrowingFeeContext) => number;
9
+ /**
10
+ * @dev Calculates borrowing fees using v1 model (block-based with groups)
11
+ * @dev Still actively used by markets that haven't migrated to v2
12
+ * @dev Uses dynamic collateral OI - converts OI to USD for fee calculations
13
+ * @param posDai Position size in collateral
14
+ * @param pairIndex Trading pair index (required)
15
+ * @param long Whether position is long
16
+ * @param initialAccFees Initial accumulated fees when trade was opened
17
+ * @param context Context with current block, fee data, and collateral price
18
+ * @returns Borrowing fee in collateral tokens
19
+ */
20
+ export declare const getBorrowingFee: (posDai: number, pairIndex: PairIndex | undefined, long: boolean, initialAccFees: BorrowingFee.InitialAccFees, context: GetBorrowingFeeContext) => number;
21
+ /**
22
+ * @dev This function uses static OI which doesn't reflect current market values
23
+ * @dev The v10 contracts use dynamic OI (beforeV10 + afterV10Token * currentPrice)
24
+ */
9
25
  export declare const withinMaxGroupOi: (pairIndex: PairIndex, long: boolean, positionSizeCollateral: number, context: {
10
26
  groups: BorrowingFee.Group[];
11
27
  pairs: BorrowingFee.Pair[];
@@ -19,6 +35,7 @@ export declare const borrowingFeeUtils: {
19
35
  getPairPendingAccFees: (pairIndex: PairIndex, currentBlock: number, context: {
20
36
  pairs: BorrowingFee.Pair[];
21
37
  openInterest: OpenInterest;
38
+ collateralPriceUsd: number;
22
39
  }) => {
23
40
  accFeeLong: number;
24
41
  accFeeShort: number;
@@ -28,9 +45,11 @@ export declare const borrowingFeeUtils: {
28
45
  getPairPendingAccFee: (pairIndex: PairIndex, currentBlock: number, long: boolean, context: {
29
46
  pairs: BorrowingFee.Pair[];
30
47
  openInterest: OpenInterest;
48
+ collateralPriceUsd: number;
31
49
  }) => number;
32
50
  getGroupPendingAccFees: (groupIndex: number, currentBlock: number, context: {
33
51
  groups: BorrowingFee.Group[];
52
+ collateralPriceUsd: number;
34
53
  }) => {
35
54
  accFeeLong: number;
36
55
  accFeeShort: number;
@@ -39,8 +58,9 @@ export declare const borrowingFeeUtils: {
39
58
  };
40
59
  getGroupPendingAccFee: (groupIndex: number, currentBlock: number, long: boolean, context: {
41
60
  groups: BorrowingFee.Group[];
61
+ collateralPriceUsd: number;
42
62
  }) => number;
43
- getPendingAccFees: (accFeeLong: number, accFeeShort: number, oiLong: number, oiShort: number, feePerBlock: number, currentBlock: number, accLastUpdatedBlock: number, maxOi: number, feeExponent: number, feeCaps?: BorrowingFee.BorrowingFeePerBlockCap) => {
63
+ getPendingAccFees: (accFeeLong: number, accFeeShort: number, oiLong: number, oiShort: number, feePerBlock: number, currentBlock: number, accLastUpdatedBlock: number, maxOi: number, feeExponent: number, feeCaps?: BorrowingFee.BorrowingFeePerBlockCap, collateralPriceUsd?: number) => {
44
64
  accFeeLong: number;
45
65
  accFeeShort: number;
46
66
  deltaLong: number;
@@ -56,3 +76,4 @@ export declare const borrowingFeeUtils: {
56
76
  };
57
77
  export * as BorrowingFee from "./types";
58
78
  export * from "./converter";
79
+ export * from "./builder";