@gainsnetwork/sdk 0.0.0-v10.rc2 → 0.0.0-v10.rc21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/backend/globalTrades/index.d.ts +11 -0
- package/lib/backend/globalTrades/index.js +69 -0
- package/lib/backend/index.d.ts +3 -0
- package/lib/backend/index.js +28 -0
- package/lib/backend/tradingVariables/backend.types.d.ts +318 -0
- package/lib/backend/tradingVariables/backend.types.js +2 -0
- package/lib/backend/tradingVariables/converter.d.ts +34 -0
- package/lib/backend/tradingVariables/converter.js +338 -0
- package/lib/backend/tradingVariables/index.d.ts +5 -0
- package/lib/backend/tradingVariables/index.js +96 -0
- package/lib/backend/tradingVariables/types.d.ts +113 -0
- package/lib/backend/tradingVariables/types.js +14 -0
- package/lib/constants.d.ts +20 -0
- package/lib/constants.js +24 -3
- package/lib/contracts/addresses.json +20 -0
- package/lib/contracts/index.js +3 -1
- package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +1911 -0
- package/lib/contracts/types/generated/GFarmTradingStorageV5.js +2 -0
- package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +1067 -0
- package/lib/contracts/types/generated/GNSBorrowingFees.js +2 -0
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.d.ts +979 -0
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.js +2 -0
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +1058 -0
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +2 -0
- package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +7 -20
- package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +533 -0
- package/lib/contracts/types/generated/GNSNftRewardsV6.js +2 -0
- package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +613 -0
- package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +2 -0
- package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +911 -0
- package/lib/contracts/types/generated/GNSPairInfosV6_1.js +2 -0
- package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +660 -0
- package/lib/contracts/types/generated/GNSPairsStorageV6.js +2 -0
- package/lib/contracts/types/generated/GNSTrading.d.ts +758 -0
- package/lib/contracts/types/generated/GNSTrading.js +2 -0
- package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +875 -0
- package/lib/contracts/types/generated/GNSTradingCallbacks.js +2 -0
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.d.ts +806 -0
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.js +2 -0
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +821 -0
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +2 -0
- package/lib/contracts/types/generated/GNSTradingStorage.d.ts +1387 -0
- package/lib/contracts/types/generated/GNSTradingStorage.js +2 -0
- package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +1838 -0
- package/lib/contracts/types/generated/GTokenV6_3_2.js +2 -0
- package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -0
- package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -0
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.d.ts +88 -0
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.js +1654 -0
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +113 -0
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +1742 -0
- package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +124 -0
- package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +1784 -0
- package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +7 -16
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -0
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -0
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -0
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -0
- package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +98 -0
- package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +1485 -0
- package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +117 -0
- package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +1265 -0
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.d.ts +82 -0
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.js +1273 -0
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +82 -0
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +1326 -0
- package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +113 -0
- package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +1428 -0
- package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +96 -0
- package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +2241 -0
- package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +95 -0
- package/lib/contracts/types/generated/factories/GNSTrading__factory.js +1071 -0
- package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +110 -0
- package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +2682 -0
- package/lib/contracts/types/generated/factories/GToken__factory.d.ts +7 -0
- package/lib/contracts/types/generated/factories/GToken__factory.js +4 -0
- package/lib/contracts/types/index.d.ts +2 -1
- package/lib/contracts/types/index.js +1 -0
- package/lib/contracts/utils/index.d.ts +0 -3
- package/lib/contracts/utils/index.js +0 -3
- package/lib/contracts/utils/openTrades.js +14 -30
- package/lib/contracts/utils/pairs.js +20 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +5 -0
- package/lib/markets/collateral/converter.d.ts +5 -0
- package/lib/markets/collateral/converter.js +11 -0
- package/lib/markets/collateral/index.d.ts +1 -0
- package/lib/markets/collateral/index.js +17 -0
- package/lib/markets/collateral/types.d.ts +7 -0
- package/lib/markets/collateral/types.js +2 -0
- package/lib/markets/holdingFees/index.d.ts +46 -0
- package/lib/markets/holdingFees/index.js +105 -0
- package/lib/markets/holdingFees/types.d.ts +23 -0
- package/lib/markets/holdingFees/types.js +5 -0
- package/lib/markets/index.d.ts +5 -0
- package/lib/markets/index.js +5 -0
- package/lib/markets/leverage/builder.d.ts +12 -0
- package/lib/markets/leverage/builder.js +25 -0
- package/lib/markets/leverage/getMarketLeverageRestrictions.d.ts +7 -0
- package/lib/markets/leverage/getMarketLeverageRestrictions.js +38 -0
- package/lib/markets/leverage/index.d.ts +3 -0
- package/lib/markets/leverage/index.js +19 -0
- package/lib/markets/leverage/types.d.ts +15 -0
- package/lib/markets/leverage/types.js +2 -0
- package/lib/markets/oi/converter.d.ts +62 -0
- package/lib/markets/oi/converter.js +102 -0
- package/lib/markets/oi/fetcher.d.ts +58 -0
- package/lib/markets/oi/fetcher.js +181 -0
- package/lib/markets/oi/index.d.ts +49 -0
- package/lib/markets/oi/index.js +77 -0
- package/lib/markets/oi/types.d.ts +73 -0
- package/lib/markets/oi/types.js +6 -0
- package/lib/markets/oi/validation.d.ts +80 -0
- package/lib/markets/oi/validation.js +172 -0
- package/lib/markets/price/builder.d.ts +25 -0
- package/lib/markets/price/builder.js +69 -0
- package/lib/markets/price/index.d.ts +6 -0
- package/lib/markets/price/index.js +22 -0
- package/lib/markets/price/marketPrice.d.ts +12 -0
- package/lib/markets/price/marketPrice.js +34 -0
- package/lib/markets/price/types.d.ts +23 -0
- package/lib/markets/price/types.js +5 -0
- package/lib/trade/counterTrade/index.d.ts +2 -0
- package/lib/trade/counterTrade/index.js +18 -0
- package/lib/trade/counterTrade/types.d.ts +7 -0
- package/lib/trade/counterTrade/types.js +2 -0
- package/lib/trade/counterTrade/validateCounterTrade.d.ts +10 -0
- package/lib/trade/counterTrade/validateCounterTrade.js +29 -0
- package/lib/trade/effectiveLeverage/builder.d.ts +23 -0
- package/lib/trade/effectiveLeverage/builder.js +30 -0
- package/lib/trade/effectiveLeverage/getTradeNewEffectiveLeverage.d.ts +23 -0
- package/lib/trade/effectiveLeverage/getTradeNewEffectiveLeverage.js +64 -0
- package/lib/trade/effectiveLeverage/index.d.ts +3 -0
- package/lib/trade/effectiveLeverage/index.js +22 -0
- package/lib/trade/effectiveLeverage/types.d.ts +33 -0
- package/lib/trade/effectiveLeverage/types.js +2 -0
- package/lib/trade/fees/borrowing/builder.d.ts +14 -0
- package/lib/trade/fees/borrowing/builder.js +33 -0
- package/lib/trade/fees/borrowing/index.d.ts +15 -4
- package/lib/trade/fees/borrowing/index.js +42 -18
- package/lib/trade/fees/borrowingV2/builder.d.ts +6 -0
- package/lib/trade/fees/borrowingV2/builder.js +24 -0
- package/lib/trade/fees/borrowingV2/converter.d.ts +12 -3
- package/lib/trade/fees/borrowingV2/converter.js +29 -18
- package/lib/{contracts/fetch/fees/borrowingFeesV2.d.ts → trade/fees/borrowingV2/fetcher.d.ts} +2 -3
- package/lib/{contracts/fetch/fees/borrowingFeesV2.js → trade/fees/borrowingV2/fetcher.js} +6 -14
- package/lib/trade/fees/borrowingV2/index.d.ts +6 -17
- package/lib/trade/fees/borrowingV2/index.js +10 -37
- package/lib/trade/fees/borrowingV2/types.d.ts +22 -6
- package/lib/trade/fees/converter.d.ts +48 -0
- package/lib/trade/fees/converter.js +114 -0
- package/lib/trade/fees/fundingFees/builder.d.ts +9 -0
- package/lib/trade/fees/fundingFees/builder.js +35 -0
- package/lib/{contracts/fetch/fees/fundingFees.d.ts → trade/fees/fundingFees/fetcher.d.ts} +2 -2
- package/lib/trade/fees/fundingFees/index.d.ts +28 -39
- package/lib/trade/fees/fundingFees/index.js +33 -46
- package/lib/trade/fees/fundingFees/pairContext.d.ts +33 -0
- package/lib/trade/fees/fundingFees/pairContext.js +17 -0
- package/lib/trade/fees/holdingFees/index.d.ts +46 -0
- package/lib/trade/fees/holdingFees/index.js +105 -0
- package/lib/trade/fees/holdingFees/types.d.ts +23 -0
- package/lib/trade/fees/holdingFees/types.js +5 -0
- package/lib/trade/fees/index.d.ts +4 -2
- package/lib/trade/fees/index.js +45 -36
- package/lib/trade/fees/tiers/converter.d.ts +54 -0
- package/lib/trade/fees/tiers/converter.js +81 -0
- package/lib/trade/fees/tiers/index.d.ts +1 -0
- package/lib/trade/fees/tiers/index.js +1 -0
- package/lib/trade/fees/trading/builder.d.ts +18 -0
- package/lib/trade/fees/trading/builder.js +20 -0
- package/lib/trade/fees/trading/converter.d.ts +2 -0
- package/lib/trade/fees/trading/converter.js +5 -1
- package/lib/trade/fees/trading/holdingFees.d.ts +28 -0
- package/lib/trade/fees/trading/holdingFees.js +66 -0
- package/lib/trade/fees/trading/holdingFeesStructured.d.ts +28 -0
- package/lib/trade/fees/trading/holdingFeesStructured.js +66 -0
- package/lib/trade/fees/trading/index.d.ts +30 -2
- package/lib/trade/fees/trading/index.js +52 -1
- package/lib/trade/fees/trading/types.d.ts +9 -0
- package/lib/trade/index.d.ts +3 -1
- package/lib/trade/index.js +3 -1
- package/lib/trade/liquidation/builder.d.ts +25 -0
- package/lib/trade/liquidation/builder.js +59 -0
- package/lib/trade/liquidation/converter.d.ts +23 -0
- package/lib/trade/liquidation/converter.js +46 -0
- package/lib/trade/liquidation/index.d.ts +16 -0
- package/lib/trade/liquidation/index.js +123 -0
- package/lib/trade/liquidation/types.d.ts +42 -0
- package/lib/trade/liquidation/types.js +2 -0
- package/lib/trade/pnl/builder.d.ts +16 -0
- package/lib/trade/pnl/builder.js +44 -0
- package/lib/trade/pnl/converter.d.ts +47 -0
- package/lib/trade/pnl/converter.js +72 -0
- package/lib/trade/pnl/index.d.ts +88 -0
- package/lib/trade/pnl/index.js +286 -0
- package/lib/trade/pnl/types.d.ts +75 -0
- package/lib/trade/pnl/types.js +5 -0
- package/lib/trade/priceImpact/close/builder.d.ts +23 -0
- package/lib/trade/priceImpact/close/builder.js +45 -0
- package/lib/trade/priceImpact/close/index.d.ts +22 -0
- package/lib/trade/priceImpact/close/index.js +119 -0
- package/lib/trade/priceImpact/close/types.d.ts +44 -0
- package/lib/trade/priceImpact/close/types.js +5 -0
- package/lib/trade/priceImpact/cumulVol/builder.d.ts +22 -0
- package/lib/trade/priceImpact/cumulVol/builder.js +43 -0
- package/lib/trade/priceImpact/cumulVol/converter.d.ts +31 -0
- package/lib/trade/priceImpact/cumulVol/converter.js +59 -0
- package/lib/trade/priceImpact/cumulVol/index.d.ts +108 -0
- package/lib/trade/priceImpact/cumulVol/index.js +235 -0
- package/lib/trade/priceImpact/index.d.ts +18 -5
- package/lib/trade/priceImpact/index.js +57 -10
- package/lib/trade/priceImpact/open/builder.d.ts +21 -0
- package/lib/trade/priceImpact/open/builder.js +43 -0
- package/lib/trade/priceImpact/open/index.d.ts +23 -0
- package/lib/trade/priceImpact/open/index.js +74 -0
- package/lib/trade/priceImpact/open/types.d.ts +41 -0
- package/lib/trade/priceImpact/open/types.js +5 -0
- package/lib/trade/priceImpact/skew/builder.d.ts +12 -0
- package/lib/trade/priceImpact/skew/builder.js +28 -0
- package/lib/trade/priceImpact/skew/converter.d.ts +11 -42
- package/lib/trade/priceImpact/skew/converter.js +19 -109
- package/lib/{contracts/fetch/priceImpact/skew.d.ts → trade/priceImpact/skew/fetcher.d.ts} +9 -12
- package/lib/{contracts/fetch/priceImpact/skew.js → trade/priceImpact/skew/fetcher.js} +23 -22
- package/lib/trade/priceImpact/skew/index.d.ts +11 -15
- package/lib/trade/priceImpact/skew/index.js +22 -54
- package/lib/trade/priceImpact/skew/types.d.ts +2 -15
- package/lib/trade/spread.d.ts +5 -18
- package/lib/trade/spread.js +17 -106
- package/lib/trade/types.d.ts +30 -8
- package/lib/trade/types.js +20 -0
- package/lib/vault/index.d.ts +3 -1
- package/lib/vault/index.js +2 -2
- package/package.json +2 -2
- package/lib/trade/liquidation.d.ts +0 -42
- package/lib/trade/liquidation.js +0 -140
- package/lib/trade/pnl.d.ts +0 -10
- package/lib/trade/pnl.js +0 -38
- /package/lib/{contracts/fetch/fees/fundingFees.js → trade/fees/fundingFees/fetcher.js} +0 -0
|
@@ -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,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,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,102 @@
|
|
|
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
|
+
skewToken,
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
exports.computeOiValues = computeOiValues;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Fetchers for retrieving OI data from contracts
|
|
3
|
+
* @dev Consolidates the three OI storage systems into unified format
|
|
4
|
+
*/
|
|
5
|
+
import { ethers } from "ethers";
|
|
6
|
+
import { ChainId } from "../../contracts/types";
|
|
7
|
+
import { UnifiedPairOi } from "./types";
|
|
8
|
+
/**
|
|
9
|
+
* @dev Fetches all OI data for a single pair
|
|
10
|
+
* @param chainId Target chain
|
|
11
|
+
* @param collateralIndex Collateral type
|
|
12
|
+
* @param pairIndex Trading pair
|
|
13
|
+
* @param signer Ethers signer
|
|
14
|
+
* @returns Unified PairOi structure with all OI data
|
|
15
|
+
*/
|
|
16
|
+
export declare function fetchPairOi(chainId: ChainId, collateralIndex: number, pairIndex: number, signer: ethers.Signer): Promise<UnifiedPairOi>;
|
|
17
|
+
/**
|
|
18
|
+
* @dev Fetches OI data for multiple pairs efficiently
|
|
19
|
+
* @param chainId Target chain
|
|
20
|
+
* @param collateralIndex Collateral type
|
|
21
|
+
* @param pairIndices Array of trading pairs
|
|
22
|
+
* @param signer Ethers signer
|
|
23
|
+
* @returns Array of unified PairOi structures
|
|
24
|
+
*/
|
|
25
|
+
export declare function fetchMultiplePairOi(chainId: ChainId, collateralIndex: number, pairIndices: number[], signer: ethers.Signer): Promise<UnifiedPairOi[]>;
|
|
26
|
+
/**
|
|
27
|
+
* @dev Creates OI context for fee calculations
|
|
28
|
+
* @param chainId Target chain
|
|
29
|
+
* @param collateralIndex Collateral type
|
|
30
|
+
* @param pairIndex Trading pair
|
|
31
|
+
* @param signer Ethers signer
|
|
32
|
+
* @returns OI data formatted for SDK calculations
|
|
33
|
+
*/
|
|
34
|
+
export declare function createOiContext(chainId: ChainId, collateralIndex: number, pairIndex: number, signer: ethers.Signer): Promise<{
|
|
35
|
+
pairOi: UnifiedPairOi;
|
|
36
|
+
currentPrice: number;
|
|
37
|
+
computed: {
|
|
38
|
+
totalDynamicOi: {
|
|
39
|
+
long: number;
|
|
40
|
+
short: number;
|
|
41
|
+
};
|
|
42
|
+
totalStaticOi: {
|
|
43
|
+
long: number;
|
|
44
|
+
short: number;
|
|
45
|
+
};
|
|
46
|
+
skew: number;
|
|
47
|
+
};
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* @dev Fetches only the OI data needed for specific use cases
|
|
51
|
+
* @param chainId Target chain
|
|
52
|
+
* @param collateralIndex Collateral type
|
|
53
|
+
* @param pairIndex Trading pair
|
|
54
|
+
* @param useCase Which OI systems to fetch
|
|
55
|
+
* @param signer Ethers signer
|
|
56
|
+
* @returns Partial OI data based on use case
|
|
57
|
+
*/
|
|
58
|
+
export declare function fetchOiForUseCase(chainId: ChainId, collateralIndex: number, pairIndex: number, useCase: "skew" | "funding" | "borrowingV1" | "limits", signer: ethers.Signer): Promise<Partial<UnifiedPairOi>>;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Fetchers for retrieving OI data from contracts
|
|
4
|
+
* @dev Consolidates the three OI storage systems into unified format
|
|
5
|
+
*/
|
|
6
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
9
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
11
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
12
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.fetchOiForUseCase = exports.createOiContext = exports.fetchMultiplePairOi = exports.fetchPairOi = void 0;
|
|
17
|
+
const ethers_1 = require("ethers");
|
|
18
|
+
const contracts_1 = require("../../contracts");
|
|
19
|
+
const generated_1 = require("../../contracts/types/generated");
|
|
20
|
+
const converter_1 = require("./converter");
|
|
21
|
+
/**
|
|
22
|
+
* @dev Fetches all OI data for a single pair
|
|
23
|
+
* @param chainId Target chain
|
|
24
|
+
* @param collateralIndex Collateral type
|
|
25
|
+
* @param pairIndex Trading pair
|
|
26
|
+
* @param signer Ethers signer
|
|
27
|
+
* @returns Unified PairOi structure with all OI data
|
|
28
|
+
*/
|
|
29
|
+
function fetchPairOi(chainId, collateralIndex, pairIndex, signer) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const addresses = (0, contracts_1.getContractAddressesForChain)(chainId);
|
|
32
|
+
const diamond = generated_1.GNSMultiCollatDiamond__factory.connect(addresses.gnsMultiCollatDiamond, signer);
|
|
33
|
+
// Fetch all three OI types in parallel
|
|
34
|
+
const [beforeV10Raw, afterV10Collateral, afterV10Token, maxOi, collateral] = yield Promise.all([
|
|
35
|
+
diamond.getPairOisBeforeV10Collateral(collateralIndex, pairIndex),
|
|
36
|
+
diamond.getPairOiAfterV10Collateral(collateralIndex, pairIndex),
|
|
37
|
+
diamond.getPairOiAfterV10Token(collateralIndex, pairIndex),
|
|
38
|
+
diamond.getPairMaxOi(collateralIndex, pairIndex),
|
|
39
|
+
diamond.getCollateral(collateralIndex),
|
|
40
|
+
]);
|
|
41
|
+
// Convert the beforeV10 format to match expected structure
|
|
42
|
+
const beforeV10 = {
|
|
43
|
+
long: beforeV10Raw.longOi,
|
|
44
|
+
short: beforeV10Raw.shortOi,
|
|
45
|
+
max: maxOi,
|
|
46
|
+
__placeholder: ethers_1.ethers.BigNumber.from(0),
|
|
47
|
+
};
|
|
48
|
+
return (0, converter_1.convertPairOi)(beforeV10, afterV10Collateral, afterV10Token, Number(collateral.precision));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
exports.fetchPairOi = fetchPairOi;
|
|
52
|
+
/**
|
|
53
|
+
* @dev Fetches OI data for multiple pairs efficiently
|
|
54
|
+
* @param chainId Target chain
|
|
55
|
+
* @param collateralIndex Collateral type
|
|
56
|
+
* @param pairIndices Array of trading pairs
|
|
57
|
+
* @param signer Ethers signer
|
|
58
|
+
* @returns Array of unified PairOi structures
|
|
59
|
+
*/
|
|
60
|
+
function fetchMultiplePairOi(chainId, collateralIndex, pairIndices, signer) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const addresses = (0, contracts_1.getContractAddressesForChain)(chainId);
|
|
63
|
+
const diamond = generated_1.GNSMultiCollatDiamond__factory.connect(addresses.gnsMultiCollatDiamond, signer);
|
|
64
|
+
// Get collateral precision once
|
|
65
|
+
const collateral = yield diamond.getCollateral(collateralIndex);
|
|
66
|
+
const precision = Number(collateral.precision);
|
|
67
|
+
// Batch fetch all OI data
|
|
68
|
+
const promises = pairIndices.map((pairIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
const [beforeV10Raw, afterV10Collateral, afterV10Token, maxOi] = yield Promise.all([
|
|
70
|
+
diamond.getPairOisBeforeV10Collateral(collateralIndex, pairIndex),
|
|
71
|
+
diamond.getPairOiAfterV10Collateral(collateralIndex, pairIndex),
|
|
72
|
+
diamond.getPairOiAfterV10Token(collateralIndex, pairIndex),
|
|
73
|
+
diamond.getPairMaxOi(collateralIndex, pairIndex),
|
|
74
|
+
]);
|
|
75
|
+
// Convert the beforeV10 format to match expected structure
|
|
76
|
+
const beforeV10 = {
|
|
77
|
+
long: beforeV10Raw.longOi,
|
|
78
|
+
short: beforeV10Raw.shortOi,
|
|
79
|
+
max: maxOi,
|
|
80
|
+
__placeholder: ethers_1.ethers.BigNumber.from(0),
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
beforeV10: beforeV10,
|
|
84
|
+
collateral: afterV10Collateral,
|
|
85
|
+
token: afterV10Token,
|
|
86
|
+
};
|
|
87
|
+
}));
|
|
88
|
+
const results = yield Promise.all(promises);
|
|
89
|
+
return (0, converter_1.convertPairOiArray)(results, precision);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
exports.fetchMultiplePairOi = fetchMultiplePairOi;
|
|
93
|
+
/**
|
|
94
|
+
* @dev Creates OI context for fee calculations
|
|
95
|
+
* @param chainId Target chain
|
|
96
|
+
* @param collateralIndex Collateral type
|
|
97
|
+
* @param pairIndex Trading pair
|
|
98
|
+
* @param signer Ethers signer
|
|
99
|
+
* @returns OI data formatted for SDK calculations
|
|
100
|
+
*/
|
|
101
|
+
function createOiContext(chainId, collateralIndex, pairIndex, signer) {
|
|
102
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
// Fetch OI data
|
|
104
|
+
const pairOi = yield fetchPairOi(chainId, collateralIndex, pairIndex, signer);
|
|
105
|
+
// For now, use a placeholder price - in real usage, this would come from price feeds
|
|
106
|
+
// The actual price should be fetched from the price aggregator or oracle
|
|
107
|
+
const currentPrice = 1; // Placeholder - replace with actual price fetching
|
|
108
|
+
// Compute derived values
|
|
109
|
+
const totalDynamicOi = {
|
|
110
|
+
long: pairOi.beforeV10Collateral.long + pairOi.token.long * currentPrice,
|
|
111
|
+
short: pairOi.beforeV10Collateral.short + pairOi.token.short * currentPrice,
|
|
112
|
+
};
|
|
113
|
+
const totalStaticOi = {
|
|
114
|
+
long: pairOi.beforeV10Collateral.long + pairOi.collateral.long,
|
|
115
|
+
short: pairOi.beforeV10Collateral.short + pairOi.collateral.short,
|
|
116
|
+
};
|
|
117
|
+
const skew = pairOi.token.long - pairOi.token.short;
|
|
118
|
+
return {
|
|
119
|
+
pairOi,
|
|
120
|
+
currentPrice,
|
|
121
|
+
computed: {
|
|
122
|
+
totalDynamicOi,
|
|
123
|
+
totalStaticOi,
|
|
124
|
+
skew,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
exports.createOiContext = createOiContext;
|
|
130
|
+
/**
|
|
131
|
+
* @dev Fetches only the OI data needed for specific use cases
|
|
132
|
+
* @param chainId Target chain
|
|
133
|
+
* @param collateralIndex Collateral type
|
|
134
|
+
* @param pairIndex Trading pair
|
|
135
|
+
* @param useCase Which OI systems to fetch
|
|
136
|
+
* @param signer Ethers signer
|
|
137
|
+
* @returns Partial OI data based on use case
|
|
138
|
+
*/
|
|
139
|
+
function fetchOiForUseCase(chainId, collateralIndex, pairIndex, useCase, signer) {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
const addresses = (0, contracts_1.getContractAddressesForChain)(chainId);
|
|
142
|
+
const diamond = generated_1.GNSMultiCollatDiamond__factory.connect(addresses.gnsMultiCollatDiamond, signer);
|
|
143
|
+
switch (useCase) {
|
|
144
|
+
case "skew":
|
|
145
|
+
case "funding": {
|
|
146
|
+
// Only need token OI
|
|
147
|
+
const tokenOi = yield diamond.getPairOiAfterV10Token(collateralIndex, pairIndex);
|
|
148
|
+
return {
|
|
149
|
+
token: (0, converter_1.convertTokenOi)(tokenOi),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
case "borrowingV1": {
|
|
153
|
+
// Need beforeV10 and token (for dynamic calculation)
|
|
154
|
+
const [beforeV10Raw, tokenOi, collateral, maxOi] = yield Promise.all([
|
|
155
|
+
diamond.getPairOisBeforeV10Collateral(collateralIndex, pairIndex),
|
|
156
|
+
diamond.getPairOiAfterV10Token(collateralIndex, pairIndex),
|
|
157
|
+
diamond.getCollateral(collateralIndex),
|
|
158
|
+
diamond.getPairMaxOi(collateralIndex, pairIndex),
|
|
159
|
+
]);
|
|
160
|
+
// Convert the beforeV10 format to match expected structure
|
|
161
|
+
const beforeV10 = {
|
|
162
|
+
long: beforeV10Raw.longOi,
|
|
163
|
+
short: beforeV10Raw.shortOi,
|
|
164
|
+
max: maxOi,
|
|
165
|
+
__placeholder: ethers_1.ethers.BigNumber.from(0),
|
|
166
|
+
};
|
|
167
|
+
return {
|
|
168
|
+
beforeV10Collateral: (0, converter_1.convertBeforeV10Collateral)(beforeV10, Number(collateral.precision)),
|
|
169
|
+
token: (0, converter_1.convertTokenOi)(tokenOi),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
case "limits": {
|
|
173
|
+
// Need all OI for limit checks
|
|
174
|
+
return fetchPairOi(chainId, collateralIndex, pairIndex, signer);
|
|
175
|
+
}
|
|
176
|
+
default:
|
|
177
|
+
throw new Error(`Unknown use case: ${String(useCase)}`);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
exports.fetchOiForUseCase = fetchOiForUseCase;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Main export file for OI module
|
|
3
|
+
* @dev Provides unified Open Interest management functionality
|
|
4
|
+
*/
|
|
5
|
+
import { GenericPairOiContext } from "./types";
|
|
6
|
+
export declare const getPairTotalOisCollateral: (pairIndex: number, context: GenericPairOiContext) => {
|
|
7
|
+
long: number;
|
|
8
|
+
short: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @dev Returns pair total dynamic open interest (before v10 + after v10) in collateral tokens
|
|
12
|
+
* @param pairIndex index of pair
|
|
13
|
+
* @param context contains UnifiedPairOi array and current pair price
|
|
14
|
+
* @returns dynamic OI for long and short sides in collateral precision
|
|
15
|
+
*/
|
|
16
|
+
export declare const getPairTotalOisDynamicCollateral: (pairIndex: number, context: GenericPairOiContext & {
|
|
17
|
+
currentPairPrice: number;
|
|
18
|
+
}) => {
|
|
19
|
+
long: number;
|
|
20
|
+
short: number;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @dev Returns pair total dynamic open interest (before v10 + after v10) in collateral tokens on one side only
|
|
24
|
+
* @param pairIndex index of pair
|
|
25
|
+
* @param long true if long, false if short
|
|
26
|
+
* @param context contains UnifiedPairOi array and current pair price
|
|
27
|
+
* @returns dynamic OI for the specified side in collateral precision
|
|
28
|
+
*/
|
|
29
|
+
export declare const getPairTotalOiDynamicCollateral: (pairIndex: number, long: boolean, context: GenericPairOiContext & {
|
|
30
|
+
currentPairPrice: number;
|
|
31
|
+
}) => number;
|
|
32
|
+
/**
|
|
33
|
+
* @dev Returns pair open interest skew (v10 only) in tokens
|
|
34
|
+
* @param pairIndex index of pair
|
|
35
|
+
* @param context contains UnifiedPairOi array
|
|
36
|
+
* @returns skew in token amount (positive = more longs, negative = more shorts)
|
|
37
|
+
*/
|
|
38
|
+
export declare const getPairV10OiTokenSkewCollateral: (pairIndex: number, context: GenericPairOiContext) => number;
|
|
39
|
+
/**
|
|
40
|
+
* @dev Returns pair dynamic skew (v10 only) in collateral tokens
|
|
41
|
+
* @param pairIndex index of pair
|
|
42
|
+
* @param context contains UnifiedPairOi array and current pair price
|
|
43
|
+
* @returns dynamic skew in collateral precision
|
|
44
|
+
*/
|
|
45
|
+
export declare const getPairV10OiDynamicSkewCollateral: (pairIndex: number, context: GenericPairOiContext & {
|
|
46
|
+
currentPairPrice: number;
|
|
47
|
+
}) => number;
|
|
48
|
+
export { UnifiedPairOi, GroupOi, ComputedOi } from "./types";
|
|
49
|
+
export { convertBeforeV10Collateral, convertCollateralOi, convertTokenOi, convertPairOi, convertPairOiArray, computeOiValues, } from "./converter";
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Main export file for OI module
|
|
4
|
+
* @dev Provides unified Open Interest management functionality
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.computeOiValues = exports.convertPairOiArray = exports.convertPairOi = exports.convertTokenOi = exports.convertCollateralOi = exports.convertBeforeV10Collateral = exports.getPairV10OiDynamicSkewCollateral = exports.getPairV10OiTokenSkewCollateral = exports.getPairTotalOiDynamicCollateral = exports.getPairTotalOisDynamicCollateral = exports.getPairTotalOisCollateral = void 0;
|
|
8
|
+
const getPairTotalOisCollateral = (pairIndex, context) => {
|
|
9
|
+
return {
|
|
10
|
+
long: context.pairOis[pairIndex].beforeV10Collateral.long +
|
|
11
|
+
context.pairOis[pairIndex].collateral.long,
|
|
12
|
+
short: context.pairOis[pairIndex].beforeV10Collateral.short +
|
|
13
|
+
context.pairOis[pairIndex].collateral.short,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
exports.getPairTotalOisCollateral = getPairTotalOisCollateral;
|
|
17
|
+
/**
|
|
18
|
+
* @dev Returns pair total dynamic open interest (before v10 + after v10) in collateral tokens
|
|
19
|
+
* @param pairIndex index of pair
|
|
20
|
+
* @param context contains UnifiedPairOi array and current pair price
|
|
21
|
+
* @returns dynamic OI for long and short sides in collateral precision
|
|
22
|
+
*/
|
|
23
|
+
const getPairTotalOisDynamicCollateral = (pairIndex, context) => {
|
|
24
|
+
const pairOi = context.pairOis[pairIndex];
|
|
25
|
+
// We have to use the initial collateral OIs for pre-v10 trades because we don't have OIs in token amount
|
|
26
|
+
const oiLongCollateralDynamicAfterV10 = pairOi.beforeV10Collateral.long +
|
|
27
|
+
pairOi.token.long * context.currentPairPrice;
|
|
28
|
+
const oiShortCollateralDynamicAfterV10 = pairOi.beforeV10Collateral.short +
|
|
29
|
+
pairOi.token.short * context.currentPairPrice;
|
|
30
|
+
return {
|
|
31
|
+
long: oiLongCollateralDynamicAfterV10,
|
|
32
|
+
short: oiShortCollateralDynamicAfterV10,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
exports.getPairTotalOisDynamicCollateral = getPairTotalOisDynamicCollateral;
|
|
36
|
+
/**
|
|
37
|
+
* @dev Returns pair total dynamic open interest (before v10 + after v10) in collateral tokens on one side only
|
|
38
|
+
* @param pairIndex index of pair
|
|
39
|
+
* @param long true if long, false if short
|
|
40
|
+
* @param context contains UnifiedPairOi array and current pair price
|
|
41
|
+
* @returns dynamic OI for the specified side in collateral precision
|
|
42
|
+
*/
|
|
43
|
+
const getPairTotalOiDynamicCollateral = (pairIndex, long, context) => {
|
|
44
|
+
const dynamicOis = (0, exports.getPairTotalOisDynamicCollateral)(pairIndex, context);
|
|
45
|
+
return long ? dynamicOis.long : dynamicOis.short;
|
|
46
|
+
};
|
|
47
|
+
exports.getPairTotalOiDynamicCollateral = getPairTotalOiDynamicCollateral;
|
|
48
|
+
/**
|
|
49
|
+
* @dev Returns pair open interest skew (v10 only) in tokens
|
|
50
|
+
* @param pairIndex index of pair
|
|
51
|
+
* @param context contains UnifiedPairOi array
|
|
52
|
+
* @returns skew in token amount (positive = more longs, negative = more shorts)
|
|
53
|
+
*/
|
|
54
|
+
const getPairV10OiTokenSkewCollateral = (pairIndex, context) => {
|
|
55
|
+
const pairOi = context.pairOis[pairIndex];
|
|
56
|
+
return pairOi.token.long - pairOi.token.short;
|
|
57
|
+
};
|
|
58
|
+
exports.getPairV10OiTokenSkewCollateral = getPairV10OiTokenSkewCollateral;
|
|
59
|
+
/**
|
|
60
|
+
* @dev Returns pair dynamic skew (v10 only) in collateral tokens
|
|
61
|
+
* @param pairIndex index of pair
|
|
62
|
+
* @param context contains UnifiedPairOi array and current pair price
|
|
63
|
+
* @returns dynamic skew in collateral precision
|
|
64
|
+
*/
|
|
65
|
+
const getPairV10OiDynamicSkewCollateral = (pairIndex, context) => {
|
|
66
|
+
return ((0, exports.getPairV10OiTokenSkewCollateral)(pairIndex, context) *
|
|
67
|
+
context.currentPairPrice);
|
|
68
|
+
};
|
|
69
|
+
exports.getPairV10OiDynamicSkewCollateral = getPairV10OiDynamicSkewCollateral;
|
|
70
|
+
// Converters
|
|
71
|
+
var converter_1 = require("./converter");
|
|
72
|
+
Object.defineProperty(exports, "convertBeforeV10Collateral", { enumerable: true, get: function () { return converter_1.convertBeforeV10Collateral; } });
|
|
73
|
+
Object.defineProperty(exports, "convertCollateralOi", { enumerable: true, get: function () { return converter_1.convertCollateralOi; } });
|
|
74
|
+
Object.defineProperty(exports, "convertTokenOi", { enumerable: true, get: function () { return converter_1.convertTokenOi; } });
|
|
75
|
+
Object.defineProperty(exports, "convertPairOi", { enumerable: true, get: function () { return converter_1.convertPairOi; } });
|
|
76
|
+
Object.defineProperty(exports, "convertPairOiArray", { enumerable: true, get: function () { return converter_1.convertPairOiArray; } });
|
|
77
|
+
Object.defineProperty(exports, "computeOiValues", { enumerable: true, get: function () { return converter_1.computeOiValues; } });
|