@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.
- package/README.md +2 -2
- 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 +0 -3
- package/lib/constants.js +7 -9
- 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 +2134 -293
- 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/GToken.d.ts +78 -107
- 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.d.ts +90 -53
- package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +4496 -430
- 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 +69 -142
- package/lib/contracts/types/index.d.ts +2 -1
- package/lib/contracts/types/index.js +1 -0
- package/lib/contracts/utils/openTrades.d.ts +1 -0
- package/lib/contracts/utils/openTrades.js +94 -56
- package/lib/contracts/utils/pairs.js +0 -3
- 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 +13 -0
- package/lib/markets/price/marketPrice.js +35 -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 +23 -2
- package/lib/trade/fees/borrowing/index.js +50 -16
- 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 +75 -0
- package/lib/trade/fees/borrowingV2/converter.js +132 -0
- package/lib/trade/fees/borrowingV2/fetcher.d.ts +75 -0
- package/lib/trade/fees/borrowingV2/fetcher.js +185 -0
- package/lib/trade/fees/borrowingV2/index.d.ts +48 -0
- package/lib/trade/fees/borrowingV2/index.js +112 -0
- package/lib/trade/fees/borrowingV2/types.d.ts +95 -0
- package/lib/trade/fees/borrowingV2/types.js +5 -0
- 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/trade/fees/fundingFees/converter.d.ts +102 -0
- package/lib/trade/fees/fundingFees/converter.js +196 -0
- package/lib/trade/fees/fundingFees/fetcher.d.ts +66 -0
- package/lib/trade/fees/fundingFees/fetcher.js +150 -0
- package/lib/trade/fees/fundingFees/index.d.ts +124 -0
- package/lib/trade/fees/fundingFees/index.js +309 -0
- package/lib/trade/fees/fundingFees/pairContext.d.ts +33 -0
- package/lib/trade/fees/fundingFees/pairContext.js +17 -0
- package/lib/trade/fees/fundingFees/types.d.ts +77 -0
- package/lib/trade/fees/fundingFees/types.js +5 -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 +8 -2
- package/lib/trade/fees/index.js +67 -16
- 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 +18 -0
- package/lib/trade/fees/tiers/index.js +45 -1
- 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 +32 -0
- package/lib/trade/fees/trading/converter.js +47 -0
- 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 +62 -0
- package/lib/trade/fees/trading/index.js +155 -0
- package/lib/trade/fees/trading/types.d.ts +48 -0
- package/lib/trade/fees/trading/types.js +5 -0
- package/lib/trade/index.d.ts +5 -2
- package/lib/trade/index.js +5 -2
- 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 +29 -0
- package/lib/trade/liquidation/index.js +218 -0
- package/lib/trade/liquidation/types.d.ts +43 -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 +89 -0
- package/lib/trade/pnl/index.js +302 -0
- package/lib/trade/pnl/types.d.ts +79 -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 +134 -0
- package/lib/trade/priceImpact/close/types.d.ts +47 -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 +21 -0
- package/lib/trade/priceImpact/index.js +79 -0
- 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 +78 -0
- package/lib/trade/priceImpact/open/types.d.ts +44 -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 +46 -0
- package/lib/trade/priceImpact/skew/converter.js +81 -0
- package/lib/trade/priceImpact/skew/fetcher.d.ts +60 -0
- package/lib/trade/priceImpact/skew/fetcher.js +169 -0
- package/lib/trade/priceImpact/skew/index.d.ts +53 -0
- package/lib/trade/priceImpact/skew/index.js +148 -0
- package/lib/trade/priceImpact/skew/types.d.ts +44 -0
- package/lib/trade/priceImpact/skew/types.js +5 -0
- package/lib/trade/spread.d.ts +5 -18
- package/lib/trade/spread.js +17 -106
- package/lib/trade/types.d.ts +109 -12
- package/lib/trade/types.js +0 -3
- package/lib/trade/utils.d.ts +18 -0
- package/lib/trade/utils.js +30 -0
- package/lib/vault/index.d.ts +3 -1
- package/lib/vault/index.js +2 -2
- package/package.json +2 -1
- package/lib/trade/liquidation.d.ts +0 -12
- package/lib/trade/liquidation.js +0 -55
- package/lib/trade/pnl.d.ts +0 -10
- 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,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,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,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,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,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
|
-
|
|
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";
|