@gainsnetwork/sdk 0.0.0-me-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/lib/backend/globalTrades/index.d.ts +11 -0
  4. package/lib/backend/globalTrades/index.js +69 -0
  5. package/lib/backend/index.d.ts +3 -0
  6. package/lib/backend/index.js +28 -0
  7. package/lib/backend/tradingVariables/backend.types.d.ts +337 -0
  8. package/lib/backend/tradingVariables/backend.types.js +2 -0
  9. package/lib/backend/tradingVariables/converter.d.ts +38 -0
  10. package/lib/backend/tradingVariables/converter.js +359 -0
  11. package/lib/backend/tradingVariables/index.d.ts +5 -0
  12. package/lib/backend/tradingVariables/index.js +98 -0
  13. package/lib/backend/tradingVariables/types.d.ts +115 -0
  14. package/lib/backend/tradingVariables/types.js +14 -0
  15. package/lib/constants.d.ts +483 -0
  16. package/lib/constants.js +516 -0
  17. package/lib/contracts/addresses.d.ts +3 -0
  18. package/lib/contracts/addresses.js +35 -0
  19. package/lib/contracts/addresses.json +266 -0
  20. package/lib/contracts/index.d.ts +14 -0
  21. package/lib/contracts/index.js +92 -0
  22. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +9327 -0
  23. package/lib/contracts/types/generated/GNSMultiCollatDiamond.js +2 -0
  24. package/lib/contracts/types/generated/GToken.d.ts +1917 -0
  25. package/lib/contracts/types/generated/GToken.js +2 -0
  26. package/lib/contracts/types/generated/GTokenOpenPnlFeed.d.ts +557 -0
  27. package/lib/contracts/types/generated/GTokenOpenPnlFeed.js +2 -0
  28. package/lib/contracts/types/generated/common.d.ts +22 -0
  29. package/lib/contracts/types/generated/common.js +2 -0
  30. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +276 -0
  31. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +21557 -0
  32. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.d.ts +59 -0
  33. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.js +765 -0
  34. package/lib/contracts/types/generated/factories/GToken__factory.d.ts +121 -0
  35. package/lib/contracts/types/generated/factories/GToken__factory.js +2867 -0
  36. package/lib/contracts/types/generated/factories/index.d.ts +3 -0
  37. package/lib/contracts/types/generated/factories/index.js +12 -0
  38. package/lib/contracts/types/generated/index.d.ts +7 -0
  39. package/lib/contracts/types/generated/index.js +33 -0
  40. package/lib/contracts/types/index.d.ts +37 -0
  41. package/lib/contracts/types/index.js +30 -0
  42. package/lib/contracts/utils/borrowingFees.d.ts +9 -0
  43. package/lib/contracts/utils/borrowingFees.js +43 -0
  44. package/lib/contracts/utils/index.d.ts +3 -0
  45. package/lib/contracts/utils/index.js +19 -0
  46. package/lib/contracts/utils/openTrades.d.ts +12 -0
  47. package/lib/contracts/utils/openTrades.js +172 -0
  48. package/lib/contracts/utils/pairs.d.ts +18 -0
  49. package/lib/contracts/utils/pairs.js +602 -0
  50. package/lib/index.d.ts +10 -0
  51. package/lib/index.js +30 -0
  52. package/lib/markets/collateral/converter.d.ts +5 -0
  53. package/lib/markets/collateral/converter.js +11 -0
  54. package/lib/markets/collateral/index.d.ts +1 -0
  55. package/lib/markets/collateral/index.js +17 -0
  56. package/lib/markets/collateral/types.d.ts +7 -0
  57. package/lib/markets/collateral/types.js +2 -0
  58. package/lib/markets/commodities.d.ts +1 -0
  59. package/lib/markets/commodities.js +7 -0
  60. package/lib/markets/crypto.d.ts +1 -0
  61. package/lib/markets/crypto.js +6 -0
  62. package/lib/markets/forex.d.ts +3 -0
  63. package/lib/markets/forex.js +8 -0
  64. package/lib/markets/holdingFees/index.d.ts +46 -0
  65. package/lib/markets/holdingFees/index.js +104 -0
  66. package/lib/markets/holdingFees/types.d.ts +23 -0
  67. package/lib/markets/holdingFees/types.js +5 -0
  68. package/lib/markets/index.d.ts +11 -0
  69. package/lib/markets/index.js +27 -0
  70. package/lib/markets/indices.d.ts +1 -0
  71. package/lib/markets/indices.js +6 -0
  72. package/lib/markets/leverage/builder.d.ts +12 -0
  73. package/lib/markets/leverage/builder.js +25 -0
  74. package/lib/markets/leverage/getMarketLeverageRestrictions.d.ts +7 -0
  75. package/lib/markets/leverage/getMarketLeverageRestrictions.js +38 -0
  76. package/lib/markets/leverage/index.d.ts +3 -0
  77. package/lib/markets/leverage/index.js +19 -0
  78. package/lib/markets/leverage/types.d.ts +15 -0
  79. package/lib/markets/leverage/types.js +2 -0
  80. package/lib/markets/oi/converter.d.ts +62 -0
  81. package/lib/markets/oi/converter.js +111 -0
  82. package/lib/markets/oi/index.d.ts +49 -0
  83. package/lib/markets/oi/index.js +77 -0
  84. package/lib/markets/oi/types.d.ts +89 -0
  85. package/lib/markets/oi/types.js +6 -0
  86. package/lib/markets/price/builder.d.ts +25 -0
  87. package/lib/markets/price/builder.js +69 -0
  88. package/lib/markets/price/index.d.ts +7 -0
  89. package/lib/markets/price/index.js +23 -0
  90. package/lib/markets/price/marketPrice.d.ts +13 -0
  91. package/lib/markets/price/marketPrice.js +35 -0
  92. package/lib/markets/price/signedPrices.d.ts +36 -0
  93. package/lib/markets/price/signedPrices.js +181 -0
  94. package/lib/markets/price/types.d.ts +50 -0
  95. package/lib/markets/price/types.js +5 -0
  96. package/lib/markets/schedules/builders.d.ts +7 -0
  97. package/lib/markets/schedules/builders.js +81 -0
  98. package/lib/markets/schedules/checkers.d.ts +7 -0
  99. package/lib/markets/schedules/checkers.js +36 -0
  100. package/lib/markets/schedules/holidays.d.ts +4 -0
  101. package/lib/markets/schedules/holidays.js +77 -0
  102. package/lib/markets/schedules/index.d.ts +9 -0
  103. package/lib/markets/schedules/index.js +45 -0
  104. package/lib/markets/schedules/types.d.ts +43 -0
  105. package/lib/markets/schedules/types.js +37 -0
  106. package/lib/markets/stocks.d.ts +3 -0
  107. package/lib/markets/stocks.js +15 -0
  108. package/lib/pricing/depthBands.d.ts +39 -0
  109. package/lib/pricing/depthBands.js +94 -0
  110. package/lib/pricing/index.d.ts +4 -0
  111. package/lib/pricing/index.js +20 -0
  112. package/lib/trade/counterTrade/index.d.ts +2 -0
  113. package/lib/trade/counterTrade/index.js +18 -0
  114. package/lib/trade/counterTrade/types.d.ts +7 -0
  115. package/lib/trade/counterTrade/types.js +2 -0
  116. package/lib/trade/counterTrade/validateCounterTrade.d.ts +10 -0
  117. package/lib/trade/counterTrade/validateCounterTrade.js +29 -0
  118. package/lib/trade/effectiveLeverage/getTradeNewEffectiveLeverage.d.ts +20 -0
  119. package/lib/trade/effectiveLeverage/getTradeNewEffectiveLeverage.js +42 -0
  120. package/lib/trade/effectiveLeverage/index.d.ts +2 -0
  121. package/lib/trade/effectiveLeverage/index.js +21 -0
  122. package/lib/trade/effectiveLeverage/types.d.ts +30 -0
  123. package/lib/trade/effectiveLeverage/types.js +2 -0
  124. package/lib/trade/fees/borrowing/builder.d.ts +14 -0
  125. package/lib/trade/fees/borrowing/builder.js +33 -0
  126. package/lib/trade/fees/borrowing/converter.d.ts +17 -0
  127. package/lib/trade/fees/borrowing/converter.js +46 -0
  128. package/lib/trade/fees/borrowing/index.d.ts +81 -0
  129. package/lib/trade/fees/borrowing/index.js +259 -0
  130. package/lib/trade/fees/borrowing/types.d.ts +36 -0
  131. package/lib/trade/fees/borrowing/types.js +2 -0
  132. package/lib/trade/fees/borrowingV2/builder.d.ts +6 -0
  133. package/lib/trade/fees/borrowingV2/builder.js +23 -0
  134. package/lib/trade/fees/borrowingV2/converter.d.ts +75 -0
  135. package/lib/trade/fees/borrowingV2/converter.js +132 -0
  136. package/lib/trade/fees/borrowingV2/fetcher.d.ts +76 -0
  137. package/lib/trade/fees/borrowingV2/fetcher.js +179 -0
  138. package/lib/trade/fees/borrowingV2/index.d.ts +48 -0
  139. package/lib/trade/fees/borrowingV2/index.js +112 -0
  140. package/lib/trade/fees/borrowingV2/types.d.ts +95 -0
  141. package/lib/trade/fees/borrowingV2/types.js +5 -0
  142. package/lib/trade/fees/converter.d.ts +48 -0
  143. package/lib/trade/fees/converter.js +114 -0
  144. package/lib/trade/fees/fundingFees/builder.d.ts +9 -0
  145. package/lib/trade/fees/fundingFees/builder.js +38 -0
  146. package/lib/trade/fees/fundingFees/converter.d.ts +102 -0
  147. package/lib/trade/fees/fundingFees/converter.js +196 -0
  148. package/lib/trade/fees/fundingFees/fetcher.d.ts +66 -0
  149. package/lib/trade/fees/fundingFees/fetcher.js +141 -0
  150. package/lib/trade/fees/fundingFees/index.d.ts +124 -0
  151. package/lib/trade/fees/fundingFees/index.js +309 -0
  152. package/lib/trade/fees/fundingFees/pairContext.d.ts +33 -0
  153. package/lib/trade/fees/fundingFees/pairContext.js +17 -0
  154. package/lib/trade/fees/fundingFees/types.d.ts +77 -0
  155. package/lib/trade/fees/fundingFees/types.js +5 -0
  156. package/lib/trade/fees/index.d.ts +11 -0
  157. package/lib/trade/fees/index.js +87 -0
  158. package/lib/trade/fees/tiers/converter.d.ts +64 -0
  159. package/lib/trade/fees/tiers/converter.js +100 -0
  160. package/lib/trade/fees/tiers/index.d.ts +46 -0
  161. package/lib/trade/fees/tiers/index.js +135 -0
  162. package/lib/trade/fees/tiers/types.d.ts +22 -0
  163. package/lib/trade/fees/tiers/types.js +8 -0
  164. package/lib/trade/fees/trading/builder.d.ts +19 -0
  165. package/lib/trade/fees/trading/builder.js +21 -0
  166. package/lib/trade/fees/trading/converter.d.ts +32 -0
  167. package/lib/trade/fees/trading/converter.js +47 -0
  168. package/lib/trade/fees/trading/index.d.ts +62 -0
  169. package/lib/trade/fees/trading/index.js +157 -0
  170. package/lib/trade/fees/trading/types.d.ts +46 -0
  171. package/lib/trade/fees/trading/types.js +5 -0
  172. package/lib/trade/index.d.ts +10 -0
  173. package/lib/trade/index.js +26 -0
  174. package/lib/trade/liquidation/builder.d.ts +25 -0
  175. package/lib/trade/liquidation/builder.js +58 -0
  176. package/lib/trade/liquidation/converter.d.ts +23 -0
  177. package/lib/trade/liquidation/converter.js +46 -0
  178. package/lib/trade/liquidation/index.d.ts +29 -0
  179. package/lib/trade/liquidation/index.js +216 -0
  180. package/lib/trade/liquidation/types.d.ts +38 -0
  181. package/lib/trade/liquidation/types.js +2 -0
  182. package/lib/trade/oiWindows.d.ts +3 -0
  183. package/lib/trade/oiWindows.js +19 -0
  184. package/lib/trade/pnl/builder.d.ts +16 -0
  185. package/lib/trade/pnl/builder.js +43 -0
  186. package/lib/trade/pnl/converter.d.ts +47 -0
  187. package/lib/trade/pnl/converter.js +72 -0
  188. package/lib/trade/pnl/index.d.ts +91 -0
  189. package/lib/trade/pnl/index.js +301 -0
  190. package/lib/trade/pnl/types.d.ts +79 -0
  191. package/lib/trade/pnl/types.js +5 -0
  192. package/lib/trade/priceImpact/close/builder.d.ts +23 -0
  193. package/lib/trade/priceImpact/close/builder.js +44 -0
  194. package/lib/trade/priceImpact/close/index.d.ts +22 -0
  195. package/lib/trade/priceImpact/close/index.js +137 -0
  196. package/lib/trade/priceImpact/close/types.d.ts +47 -0
  197. package/lib/trade/priceImpact/close/types.js +5 -0
  198. package/lib/trade/priceImpact/cumulVol/builder.d.ts +22 -0
  199. package/lib/trade/priceImpact/cumulVol/builder.js +53 -0
  200. package/lib/trade/priceImpact/cumulVol/converter.d.ts +94 -0
  201. package/lib/trade/priceImpact/cumulVol/converter.js +155 -0
  202. package/lib/trade/priceImpact/cumulVol/index.d.ts +109 -0
  203. package/lib/trade/priceImpact/cumulVol/index.js +316 -0
  204. package/lib/trade/priceImpact/cumulVol/types.d.ts +11 -0
  205. package/lib/trade/priceImpact/cumulVol/types.js +2 -0
  206. package/lib/trade/priceImpact/index.d.ts +21 -0
  207. package/lib/trade/priceImpact/index.js +79 -0
  208. package/lib/trade/priceImpact/open/builder.d.ts +21 -0
  209. package/lib/trade/priceImpact/open/builder.js +42 -0
  210. package/lib/trade/priceImpact/open/index.d.ts +23 -0
  211. package/lib/trade/priceImpact/open/index.js +82 -0
  212. package/lib/trade/priceImpact/open/types.d.ts +45 -0
  213. package/lib/trade/priceImpact/open/types.js +5 -0
  214. package/lib/trade/priceImpact/skew/builder.d.ts +12 -0
  215. package/lib/trade/priceImpact/skew/builder.js +27 -0
  216. package/lib/trade/priceImpact/skew/converter.d.ts +46 -0
  217. package/lib/trade/priceImpact/skew/converter.js +81 -0
  218. package/lib/trade/priceImpact/skew/fetcher.d.ts +60 -0
  219. package/lib/trade/priceImpact/skew/fetcher.js +160 -0
  220. package/lib/trade/priceImpact/skew/index.d.ts +53 -0
  221. package/lib/trade/priceImpact/skew/index.js +148 -0
  222. package/lib/trade/priceImpact/skew/types.d.ts +44 -0
  223. package/lib/trade/priceImpact/skew/types.js +5 -0
  224. package/lib/trade/spread.d.ts +5 -0
  225. package/lib/trade/spread.js +19 -0
  226. package/lib/trade/types.d.ts +777 -0
  227. package/lib/trade/types.js +478 -0
  228. package/lib/trade/utils.d.ts +18 -0
  229. package/lib/trade/utils.js +30 -0
  230. package/lib/utils/index.d.ts +1 -0
  231. package/lib/utils/index.js +17 -0
  232. package/lib/utils/packing.d.ts +2 -0
  233. package/lib/utils/packing.js +39 -0
  234. package/lib/vault/index.d.ts +10 -0
  235. package/lib/vault/index.js +10 -0
  236. package/package.json +106 -0
@@ -0,0 +1 @@
1
+ export * from "./types";
@@ -0,0 +1,17 @@
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);
@@ -0,0 +1,7 @@
1
+ export type CollateralConfig = {
2
+ collateral: string;
3
+ isActive: boolean;
4
+ precision: number;
5
+ precisionDelta: number;
6
+ decimals?: number;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export declare const isCommoditiesOpen: (dateToCheck: Date) => boolean;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCommoditiesOpen = void 0;
4
+ // @ts-ignore-file
5
+ const schedules_1 = require("./schedules");
6
+ const isCommoditiesOpen = (dateToCheck) => (0, schedules_1.isOpenAt)('commodities', dateToCheck);
7
+ exports.isCommoditiesOpen = isCommoditiesOpen;
@@ -0,0 +1 @@
1
+ export declare const isCryptoOpen: (dateToCheck: Date) => boolean;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCryptoOpen = void 0;
4
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
+ const isCryptoOpen = (dateToCheck) => true;
6
+ exports.isCryptoOpen = isCryptoOpen;
@@ -0,0 +1,3 @@
1
+ import { Pair } from "src/trade";
2
+ export declare const isForexOpen: (dateToCheck: Date) => boolean;
3
+ export declare const isForexLowLiquidity: (timestampToCheck: number, pair?: Pair) => boolean;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isForexLowLiquidity = exports.isForexOpen = void 0;
4
+ const schedules_1 = require("./schedules");
5
+ const isForexOpen = (dateToCheck) => (0, schedules_1.isOpenAt)('forex', dateToCheck);
6
+ exports.isForexOpen = isForexOpen;
7
+ const isForexLowLiquidity = (timestampToCheck, pair) => (0, schedules_1.isLowLiquidityAt)('forex', new Date(timestampToCheck), pair?.groupIndex !== undefined ? { pairGroupIndex: +pair.groupIndex } : undefined);
8
+ exports.isForexLowLiquidity = isForexLowLiquidity;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @dev Holding fees calculation utilities for v10+ markets
3
+ * @dev Combines funding fees and borrowing v2 fees
4
+ */
5
+ import { FundingFeeParams, PairFundingFeeData, PairOiAfterV10 } from "../../trade/fees/fundingFees/types";
6
+ import { BorrowingFeeParams, PairBorrowingFeeData } from "../../trade/fees/borrowingV2/types";
7
+ export type HoldingFeeRates = {
8
+ longHourlyRate: number;
9
+ shortHourlyRate: number;
10
+ fundingFeeLongHourlyRate: number;
11
+ fundingFeeShortHourlyRate: number;
12
+ borrowingFeeHourlyRate: number;
13
+ currentFundingRatePerSecondP: number;
14
+ currentBorrowingRatePerSecondP: number;
15
+ };
16
+ export type GetPairHoldingFeeRatesInput = {
17
+ fundingParams: FundingFeeParams;
18
+ fundingData: PairFundingFeeData;
19
+ pairOiToken: PairOiAfterV10;
20
+ netExposureToken: number;
21
+ netExposureUsd: number;
22
+ borrowingParams: BorrowingFeeParams | null;
23
+ borrowingData: PairBorrowingFeeData | null;
24
+ currentPairPrice: number;
25
+ currentTimestamp: number;
26
+ };
27
+ /**
28
+ * @dev Calculates current holding fee rates per hour for display
29
+ * @param input Input parameters for calculation
30
+ * @returns Holding fee rates per hour with breakdown
31
+ */
32
+ export declare const getPairHoldingFeeRates: (input: GetPairHoldingFeeRatesInput) => HoldingFeeRates;
33
+ /**
34
+ * @dev Converts a per-second rate to annual percentage rate (APR)
35
+ * @param ratePerSecond Rate per second
36
+ * @returns Annual percentage rate
37
+ */
38
+ export declare const convertRatePerSecondToAPR: (ratePerSecond: number) => number;
39
+ /**
40
+ * @dev Formats a holding fee rate for display
41
+ * @param rate Hourly rate (can be negative)
42
+ * @param decimals Number of decimal places
43
+ * @returns Formatted string with sign
44
+ */
45
+ export declare const formatHoldingFeeRate: (rate: number, decimals?: number) => string;
46
+ export * as HoldingFees from "./types";
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Holding fees calculation utilities for v10+ markets
4
+ * @dev Combines funding fees and borrowing v2 fees
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.HoldingFees = exports.formatHoldingFeeRate = exports.convertRatePerSecondToAPR = exports.getPairHoldingFeeRates = void 0;
31
+ const fundingFees_1 = require("../../trade/fees/fundingFees");
32
+ const SECONDS_PER_HOUR = 3600;
33
+ const SECONDS_PER_YEAR = 365 * 24 * 60 * 60;
34
+ const PERCENTAGE_PRECISION = 100;
35
+ /**
36
+ * @dev Calculates current holding fee rates per hour for display
37
+ * @param input Input parameters for calculation
38
+ * @returns Holding fee rates per hour with breakdown
39
+ */
40
+ const getPairHoldingFeeRates = (input) => {
41
+ const { fundingParams, fundingData, pairOiToken, netExposureToken, netExposureUsd, borrowingParams, borrowingData, currentPairPrice, currentTimestamp, } = input;
42
+ // Calculate funding fee rates
43
+ let fundingFeeLongHourlyRate = 0;
44
+ let fundingFeeShortHourlyRate = 0;
45
+ let currentFundingRatePerSecondP = 0;
46
+ if (fundingParams.fundingFeesEnabled) {
47
+ // Get current funding rate
48
+ const pendingFunding = (0, fundingFees_1.getPairPendingAccFundingFees)(fundingParams, fundingData, currentPairPrice, pairOiToken, netExposureToken, netExposureUsd, currentTimestamp);
49
+ currentFundingRatePerSecondP = pendingFunding.currentFundingRatePerSecondP;
50
+ // Get APR multipliers
51
+ const { longAprMultiplier, shortAprMultiplier } = (0, fundingFees_1.getLongShortAprMultiplier)(currentFundingRatePerSecondP, pairOiToken.oiLongToken, pairOiToken.oiShortToken, fundingParams.aprMultiplierEnabled);
52
+ // Calculate hourly rates
53
+ // Funding rate * seconds per hour * APR multiplier / 100
54
+ const baseHourlyRate = (currentFundingRatePerSecondP * SECONDS_PER_HOUR) / PERCENTAGE_PRECISION;
55
+ // Long side pays when rate is positive, earns when negative
56
+ fundingFeeLongHourlyRate = baseHourlyRate * longAprMultiplier;
57
+ // Short side is opposite
58
+ fundingFeeShortHourlyRate = -baseHourlyRate * shortAprMultiplier;
59
+ }
60
+ // Calculate borrowing v2 rates
61
+ let borrowingFeeHourlyRate = 0;
62
+ let currentBorrowingRatePerSecondP = 0;
63
+ if (borrowingParams && borrowingData) {
64
+ currentBorrowingRatePerSecondP = borrowingParams.borrowingRatePerSecondP;
65
+ // Borrowing rate * seconds per hour / 100
66
+ borrowingFeeHourlyRate =
67
+ (currentBorrowingRatePerSecondP * SECONDS_PER_HOUR) /
68
+ PERCENTAGE_PRECISION;
69
+ }
70
+ // Total holding fees (funding can be negative/positive, borrowing always positive cost)
71
+ const longHourlyRate = fundingFeeLongHourlyRate + borrowingFeeHourlyRate;
72
+ const shortHourlyRate = fundingFeeShortHourlyRate + borrowingFeeHourlyRate;
73
+ return {
74
+ longHourlyRate,
75
+ shortHourlyRate,
76
+ fundingFeeLongHourlyRate,
77
+ fundingFeeShortHourlyRate,
78
+ borrowingFeeHourlyRate,
79
+ currentFundingRatePerSecondP,
80
+ currentBorrowingRatePerSecondP,
81
+ };
82
+ };
83
+ exports.getPairHoldingFeeRates = getPairHoldingFeeRates;
84
+ /**
85
+ * @dev Converts a per-second rate to annual percentage rate (APR)
86
+ * @param ratePerSecond Rate per second
87
+ * @returns Annual percentage rate
88
+ */
89
+ const convertRatePerSecondToAPR = (ratePerSecond) => {
90
+ return ratePerSecond * SECONDS_PER_YEAR * PERCENTAGE_PRECISION;
91
+ };
92
+ exports.convertRatePerSecondToAPR = convertRatePerSecondToAPR;
93
+ /**
94
+ * @dev Formats a holding fee rate for display
95
+ * @param rate Hourly rate (can be negative)
96
+ * @param decimals Number of decimal places
97
+ * @returns Formatted string with sign
98
+ */
99
+ const formatHoldingFeeRate = (rate, decimals = 4) => {
100
+ const sign = rate > 0 ? "+" : "";
101
+ return `${sign}${rate.toFixed(decimals)}%`;
102
+ };
103
+ exports.formatHoldingFeeRate = formatHoldingFeeRate;
104
+ exports.HoldingFees = __importStar(require("./types"));
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @dev Type definitions for holding fees (funding + borrowing v2)
3
+ */
4
+ export interface HoldingFeeRates {
5
+ longHourlyRate: number;
6
+ shortHourlyRate: number;
7
+ fundingFeeLongHourlyRate: number;
8
+ fundingFeeShortHourlyRate: number;
9
+ borrowingFeeHourlyRate: number;
10
+ currentFundingRatePerSecondP: number;
11
+ currentBorrowingRatePerSecondP: number;
12
+ }
13
+ export interface GetPairHoldingFeeRatesInput {
14
+ fundingParams: import("../../trade/fees/fundingFees/types").FundingFeeParams;
15
+ fundingData: import("../../trade/fees/fundingFees/types").PairFundingFeeData;
16
+ pairOiToken: import("../../trade/fees/fundingFees/types").PairOiAfterV10;
17
+ netExposureToken: number;
18
+ netExposureUsd: number;
19
+ borrowingParams: import("../../trade/fees/borrowingV2/types").BorrowingFeeParams | null;
20
+ borrowingData: import("../../trade/fees/borrowingV2/types").PairBorrowingFeeData | null;
21
+ currentPairPrice: number;
22
+ currentTimestamp: number;
23
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Type definitions for holding fees (funding + borrowing v2)
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,11 @@
1
+ export * from "./crypto";
2
+ export * from "./forex";
3
+ export * from "./stocks";
4
+ export * from "./indices";
5
+ export * from "./commodities";
6
+ export * from "./schedules";
7
+ export * from "./oi";
8
+ export * from "./collateral";
9
+ export * from "./price";
10
+ export * from "./holdingFees";
11
+ export * from "./leverage";
@@ -0,0 +1,27 @@
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("./crypto"), exports);
18
+ __exportStar(require("./forex"), exports);
19
+ __exportStar(require("./stocks"), exports);
20
+ __exportStar(require("./indices"), exports);
21
+ __exportStar(require("./commodities"), exports);
22
+ __exportStar(require("./schedules"), exports);
23
+ __exportStar(require("./oi"), exports);
24
+ __exportStar(require("./collateral"), exports);
25
+ __exportStar(require("./price"), exports);
26
+ __exportStar(require("./holdingFees"), exports);
27
+ __exportStar(require("./leverage"), exports);
@@ -0,0 +1 @@
1
+ export declare const isIndicesOpen: (dateToCheck: Date) => boolean;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isIndicesOpen = void 0;
4
+ const schedules_1 = require("./schedules");
5
+ const isIndicesOpen = (dateToCheck) => (0, schedules_1.isOpenAt)('indices', dateToCheck);
6
+ exports.isIndicesOpen = isIndicesOpen;
@@ -0,0 +1,12 @@
1
+ import { GlobalTradingVariablesType } from "../../backend/tradingVariables/types";
2
+ import { GetMarketLeverageRestrictionsContext } from "./types";
3
+ /**
4
+ * Builds the context needed for getMarketLeverageRestrictions from global trading variables
5
+ * @param globalTradingVariables Global trading variables containing pairs, groups, etc.
6
+ * @param pairIndex The index of the trading pair
7
+ * @param pairMaxLeverages Map of pair-specific max leverage overrides
8
+ * @returns Context for leverage restrictions calculation
9
+ */
10
+ export declare const buildMarketLeverageRestrictionsContext: (globalTradingVariables: GlobalTradingVariablesType, pairIndex: number, pairMaxLeverages?: {
11
+ [key: number]: number;
12
+ } | undefined) => GetMarketLeverageRestrictionsContext;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildMarketLeverageRestrictionsContext = void 0;
4
+ /**
5
+ * Builds the context needed for getMarketLeverageRestrictions from global trading variables
6
+ * @param globalTradingVariables Global trading variables containing pairs, groups, etc.
7
+ * @param pairIndex The index of the trading pair
8
+ * @param pairMaxLeverages Map of pair-specific max leverage overrides
9
+ * @returns Context for leverage restrictions calculation
10
+ */
11
+ const buildMarketLeverageRestrictionsContext = (globalTradingVariables, pairIndex, pairMaxLeverages) => {
12
+ const { pairs, groups, counterTradeSettings } = globalTradingVariables;
13
+ if (!pairs || !groups || !pairs[pairIndex]) {
14
+ throw new Error("Invalid global trading variables or pair index");
15
+ }
16
+ const pair = pairs[pairIndex];
17
+ const group = groups[pair.groupIndex];
18
+ return {
19
+ groupMinLeverage: group.minLeverage,
20
+ groupMaxLeverage: group.maxLeverage,
21
+ pairMaxLeverage: pairMaxLeverages?.[pairIndex],
22
+ counterTradeSettings: counterTradeSettings?.[pairIndex],
23
+ };
24
+ };
25
+ exports.buildMarketLeverageRestrictionsContext = buildMarketLeverageRestrictionsContext;
@@ -0,0 +1,7 @@
1
+ import { GetMarketLeverageRestrictionsContext, MarketLeverageRestrictions } from "./types";
2
+ /**
3
+ * Gets the leverage restrictions for a trading pair, including both regular and counter trade limits
4
+ * @param context Context containing group limits, pair overrides, and counter trade settings
5
+ * @returns Object with regular and counter trade leverage restrictions
6
+ */
7
+ export declare const getMarketLeverageRestrictions: (context: GetMarketLeverageRestrictionsContext) => MarketLeverageRestrictions;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMarketLeverageRestrictions = void 0;
4
+ /**
5
+ * Gets the leverage restrictions for a trading pair, including both regular and counter trade limits
6
+ * @param context Context containing group limits, pair overrides, and counter trade settings
7
+ * @returns Object with regular and counter trade leverage restrictions
8
+ */
9
+ const getMarketLeverageRestrictions = (context) => {
10
+ const { groupMinLeverage, groupMaxLeverage, pairMaxLeverage, counterTradeSettings, } = context;
11
+ // Calculate regular trade leverage limits
12
+ let regularMin = groupMinLeverage;
13
+ let regularMax = pairMaxLeverage === undefined || pairMaxLeverage === 0
14
+ ? groupMaxLeverage
15
+ : pairMaxLeverage;
16
+ // If max is less than min, set both to 0 (pair is effectively disabled)
17
+ if (regularMax < regularMin) {
18
+ regularMin = 0;
19
+ regularMax = 0;
20
+ }
21
+ // Calculate counter trade leverage limits if settings exist
22
+ let counterTradeLimits = null;
23
+ if (counterTradeSettings) {
24
+ // Counter trades use the group's min leverage but have their own max leverage
25
+ counterTradeLimits = {
26
+ min: groupMinLeverage,
27
+ max: counterTradeSettings.maxLeverage,
28
+ };
29
+ }
30
+ return {
31
+ regular: {
32
+ min: regularMin,
33
+ max: regularMax,
34
+ },
35
+ counterTrade: counterTradeLimits,
36
+ };
37
+ };
38
+ exports.getMarketLeverageRestrictions = getMarketLeverageRestrictions;
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./getMarketLeverageRestrictions";
3
+ export * from "./builder";
@@ -0,0 +1,19 @@
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("./getMarketLeverageRestrictions"), exports);
19
+ __exportStar(require("./builder"), exports);
@@ -0,0 +1,15 @@
1
+ import { CounterTradeSettings } from "../../trade/types";
2
+ export type LeverageRestrictions = {
3
+ min: number;
4
+ max: number;
5
+ };
6
+ export type MarketLeverageRestrictions = {
7
+ regular: LeverageRestrictions;
8
+ counterTrade: LeverageRestrictions | null;
9
+ };
10
+ export type GetMarketLeverageRestrictionsContext = {
11
+ groupMinLeverage: number;
12
+ groupMaxLeverage: number;
13
+ pairMaxLeverage?: number;
14
+ counterTradeSettings?: CounterTradeSettings;
15
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @dev Converters for OI data between contract and SDK formats
3
+ * @dev Handles the three OI storage systems and precision conversions
4
+ */
5
+ import { IBorrowingFees, IPriceImpact } from "../../contracts/types/generated/GNSMultiCollatDiamond";
6
+ import { UnifiedPairOi, ComputedOi } from "./types";
7
+ /**
8
+ * @dev Converts pre-v10 OI from contract format
9
+ * @param contractOi Contract OpenInterest struct from BorrowingFeesStorage
10
+ * @returns Normalized OI with long/short values
11
+ */
12
+ export declare const convertBeforeV10Collateral: (contractOi: IBorrowingFees.OpenInterestStructOutput) => {
13
+ long: number;
14
+ short: number;
15
+ };
16
+ /**
17
+ * @dev Converts post-v10 collateral OI from contract format
18
+ * @param contractOi Contract PairOiCollateral struct
19
+ * @param precision Collateral precision for conversion
20
+ * @returns Normalized OI with long/short values
21
+ */
22
+ export declare const convertCollateralOi: (contractOi: IPriceImpact.PairOiCollateralStructOutput, precision: number) => {
23
+ long: number;
24
+ short: number;
25
+ };
26
+ /**
27
+ * @dev Converts post-v10 token OI from contract format
28
+ * @param contractOi Contract PairOiToken struct
29
+ * @returns Normalized OI with long/short values (1e18 precision)
30
+ */
31
+ export declare const convertTokenOi: (contractOi: IPriceImpact.PairOiTokenStructOutput) => {
32
+ long: number;
33
+ short: number;
34
+ };
35
+ /**
36
+ * @dev Converts all OI data for a pair into unified structure
37
+ * @param beforeV10 Pre-v10 OI from BorrowingFeesStorage
38
+ * @param afterV10Collateral Post-v10 collateral OI from PriceImpactStorage
39
+ * @param afterV10Token Post-v10 token OI from PriceImpactStorage
40
+ * @param maxOi Maximum OI allowed (from BorrowingFeesStorage)
41
+ * @param collateralPrecision Precision for collateral conversions
42
+ * @returns Unified PairOi structure
43
+ */
44
+ export declare const convertPairOi: (beforeV10: IBorrowingFees.OpenInterestStructOutput, afterV10Collateral: IPriceImpact.PairOiCollateralStructOutput, afterV10Token: IPriceImpact.PairOiTokenStructOutput, collateralPrecision: number) => UnifiedPairOi;
45
+ /**
46
+ * @dev Batch converter for multiple pairs
47
+ * @param pairs Array of OI data for multiple pairs
48
+ * @param collateralPrecision Precision for collateral conversions
49
+ * @returns Array of unified PairOi structures
50
+ */
51
+ export declare const convertPairOiArray: (pairs: Array<{
52
+ beforeV10: IBorrowingFees.OpenInterestStructOutput;
53
+ collateral: IPriceImpact.PairOiCollateralStructOutput;
54
+ token: IPriceImpact.PairOiTokenStructOutput;
55
+ }>, collateralPrecision: number) => UnifiedPairOi[];
56
+ /**
57
+ * @dev Computes derived OI values from unified structure
58
+ * @param pairOi Unified pair OI data
59
+ * @param tokenPriceCollateral Current token price in collateral units
60
+ * @returns Computed values including total OI and skew
61
+ */
62
+ export declare const computeOiValues: (pairOi: UnifiedPairOi, tokenPriceCollateral: number) => ComputedOi;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * @dev Converters for OI data between contract and SDK formats
4
+ * @dev Handles the three OI storage systems and precision conversions
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.computeOiValues = exports.convertPairOiArray = exports.convertPairOi = exports.convertTokenOi = exports.convertCollateralOi = exports.convertBeforeV10Collateral = void 0;
8
+ /**
9
+ * @dev Converts pre-v10 OI from contract format
10
+ * @param contractOi Contract OpenInterest struct from BorrowingFeesStorage
11
+ * @returns Normalized OI with long/short values
12
+ */
13
+ const convertBeforeV10Collateral = (contractOi) => {
14
+ return {
15
+ long: Number(contractOi.long) / 1e10,
16
+ short: Number(contractOi.short) / 1e10,
17
+ };
18
+ };
19
+ exports.convertBeforeV10Collateral = convertBeforeV10Collateral;
20
+ /**
21
+ * @dev Converts post-v10 collateral OI from contract format
22
+ * @param contractOi Contract PairOiCollateral struct
23
+ * @param precision Collateral precision for conversion
24
+ * @returns Normalized OI with long/short values
25
+ */
26
+ const convertCollateralOi = (contractOi, precision) => {
27
+ return {
28
+ long: Number(contractOi.oiLongCollateral) / precision,
29
+ short: Number(contractOi.oiShortCollateral) / precision,
30
+ };
31
+ };
32
+ exports.convertCollateralOi = convertCollateralOi;
33
+ /**
34
+ * @dev Converts post-v10 token OI from contract format
35
+ * @param contractOi Contract PairOiToken struct
36
+ * @returns Normalized OI with long/short values (1e18 precision)
37
+ */
38
+ const convertTokenOi = (contractOi) => {
39
+ return {
40
+ long: Number(contractOi.oiLongToken) / 1e18,
41
+ short: Number(contractOi.oiShortToken) / 1e18,
42
+ };
43
+ };
44
+ exports.convertTokenOi = convertTokenOi;
45
+ /**
46
+ * @dev Converts all OI data for a pair into unified structure
47
+ * @param beforeV10 Pre-v10 OI from BorrowingFeesStorage
48
+ * @param afterV10Collateral Post-v10 collateral OI from PriceImpactStorage
49
+ * @param afterV10Token Post-v10 token OI from PriceImpactStorage
50
+ * @param maxOi Maximum OI allowed (from BorrowingFeesStorage)
51
+ * @param collateralPrecision Precision for collateral conversions
52
+ * @returns Unified PairOi structure
53
+ */
54
+ const convertPairOi = (beforeV10, afterV10Collateral, afterV10Token, collateralPrecision) => {
55
+ return {
56
+ maxCollateral: Number(beforeV10.max) / 1e10,
57
+ beforeV10Collateral: (0, exports.convertBeforeV10Collateral)(beforeV10),
58
+ collateral: (0, exports.convertCollateralOi)(afterV10Collateral, collateralPrecision),
59
+ token: (0, exports.convertTokenOi)(afterV10Token),
60
+ };
61
+ };
62
+ exports.convertPairOi = convertPairOi;
63
+ /**
64
+ * @dev Batch converter for multiple pairs
65
+ * @param pairs Array of OI data for multiple pairs
66
+ * @param collateralPrecision Precision for collateral conversions
67
+ * @returns Array of unified PairOi structures
68
+ */
69
+ const convertPairOiArray = (pairs, collateralPrecision) => {
70
+ return pairs.map(p => (0, exports.convertPairOi)(p.beforeV10, p.collateral, p.token, collateralPrecision));
71
+ };
72
+ exports.convertPairOiArray = convertPairOiArray;
73
+ /**
74
+ * @dev Computes derived OI values from unified structure
75
+ * @param pairOi Unified pair OI data
76
+ * @param tokenPriceCollateral Current token price in collateral units
77
+ * @returns Computed values including total OI and skew
78
+ */
79
+ const computeOiValues = (pairOi, tokenPriceCollateral) => {
80
+ // Static total (used for admin operations)
81
+ const totalStaticLong = pairOi.beforeV10Collateral.long + pairOi.collateral.long;
82
+ const totalStaticShort = pairOi.beforeV10Collateral.short + pairOi.collateral.short;
83
+ // Dynamic total (used for real-time calculations)
84
+ const tokenLongCollateral = pairOi.token.long * tokenPriceCollateral;
85
+ const tokenShortCollateral = pairOi.token.short * tokenPriceCollateral;
86
+ const totalDynamicLong = pairOi.beforeV10Collateral.long + tokenLongCollateral;
87
+ const totalDynamicShort = pairOi.beforeV10Collateral.short + tokenShortCollateral;
88
+ // Skew (v10+ only, in tokens)
89
+ const skewToken = pairOi.token.long - pairOi.token.short;
90
+ return {
91
+ totalStaticCollateral: {
92
+ long: totalStaticLong,
93
+ short: totalStaticShort,
94
+ },
95
+ totalDynamicCollateral: {
96
+ long: totalDynamicLong,
97
+ short: totalDynamicShort,
98
+ },
99
+ // v10-only values for funding fee markets
100
+ v10StaticCollateral: {
101
+ long: pairOi.collateral.long,
102
+ short: pairOi.collateral.short,
103
+ },
104
+ v10DynamicCollateral: {
105
+ long: tokenLongCollateral,
106
+ short: tokenShortCollateral,
107
+ },
108
+ skewToken,
109
+ };
110
+ };
111
+ exports.computeOiValues = computeOiValues;