@gainsnetwork/sdk 0.0.0-v10.rc3 → 0.0.0-v10.rc5
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/index.d.ts +1 -0
- package/lib/backend/index.js +10 -0
- package/lib/backend/tradingVariables/backend.types.d.ts +5 -0
- package/lib/backend/tradingVariables/converter.d.ts +2 -1
- package/lib/backend/tradingVariables/converter.js +2 -1
- package/lib/backend/tradingVariables/index.d.ts +2 -0
- package/lib/backend/tradingVariables/index.js +18 -0
- package/lib/backend/tradingVariables/types.d.ts +2 -1
- package/lib/constants.d.ts +10 -0
- package/lib/constants.js +11 -1
- package/lib/contracts/utils/pairs.js +10 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -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 +3 -2
- package/lib/trade/fees/borrowing/index.js +13 -4
- 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/trade/fees/borrowingV2/fetcher.js +5 -13
- package/lib/trade/fees/borrowingV2/index.d.ts +5 -17
- package/lib/trade/fees/borrowingV2/index.js +9 -37
- package/lib/trade/fees/borrowingV2/types.d.ts +22 -6
- package/lib/trade/fees/fundingFees/builder.d.ts +9 -0
- package/lib/trade/fees/fundingFees/builder.js +35 -0
- package/lib/trade/fees/fundingFees/index.d.ts +12 -2
- package/lib/trade/fees/fundingFees/index.js +23 -3
- package/lib/trade/fees/fundingFees/pairContext.d.ts +33 -0
- package/lib/trade/fees/fundingFees/pairContext.js +17 -0
- package/lib/trade/fees/index.d.ts +1 -1
- package/lib/trade/fees/index.js +2 -3
- 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 +19 -11
- package/lib/trade/fees/trading/index.js +29 -21
- package/lib/trade/liquidation/builder.d.ts +25 -0
- package/lib/trade/liquidation/builder.js +59 -0
- package/lib/trade/liquidation/index.d.ts +7 -22
- package/lib/trade/liquidation/index.js +41 -105
- package/lib/trade/liquidation/types.d.ts +37 -39
- package/lib/trade/pnl/builder.d.ts +16 -0
- package/lib/trade/pnl/builder.js +44 -0
- package/lib/trade/pnl/index.d.ts +21 -30
- package/lib/trade/pnl/index.js +119 -50
- package/lib/trade/pnl/types.d.ts +26 -36
- package/lib/trade/types.d.ts +11 -1
- package/lib/trade/types.js +10 -0
- package/package.json +1 -1
- package/lib/contracts/fetch/fees/borrowingFeesV2.d.ts +0 -75
- package/lib/contracts/fetch/fees/borrowingFeesV2.js +0 -193
- package/lib/contracts/fetch/fees/fundingFees.d.ts +0 -66
- package/lib/contracts/fetch/fees/fundingFees.js +0 -150
- package/lib/contracts/fetch/priceImpact/skew.d.ts +0 -63
- package/lib/contracts/fetch/priceImpact/skew.js +0 -168
- 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
|
@@ -39,6 +39,7 @@ export type TradeInitialAccFees = {
|
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
41
41
|
* @dev Context required for borrowing v2 fee calculations
|
|
42
|
+
* @dev Context is already scoped to a specific collateral
|
|
42
43
|
*/
|
|
43
44
|
export type GetBorrowingFeeV2Context = {
|
|
44
45
|
/**
|
|
@@ -47,20 +48,36 @@ export type GetBorrowingFeeV2Context = {
|
|
|
47
48
|
currentTimestamp?: number;
|
|
48
49
|
/**
|
|
49
50
|
* @dev Borrowing fee parameters for pairs
|
|
50
|
-
* @dev Indexed by: params[
|
|
51
|
+
* @dev Indexed by: params[pairIndex]
|
|
51
52
|
*/
|
|
52
|
-
borrowingParams: Record<number,
|
|
53
|
+
borrowingParams: Record<number, BorrowingFeeParams>;
|
|
53
54
|
/**
|
|
54
55
|
* @dev Borrowing fee data for pairs
|
|
55
|
-
* @dev Indexed by: data[
|
|
56
|
+
* @dev Indexed by: data[pairIndex]
|
|
56
57
|
*/
|
|
57
|
-
borrowingData: Record<number,
|
|
58
|
+
borrowingData: Record<number, PairBorrowingFeeData>;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* @dev Context for pair-specific borrowing v2 fee calculations
|
|
62
|
+
*/
|
|
63
|
+
export type GetPairBorrowingFeeV2Context = {
|
|
64
|
+
/**
|
|
65
|
+
* @dev Current timestamp (defaults to Date.now() / 1000)
|
|
66
|
+
*/
|
|
67
|
+
currentTimestamp?: number;
|
|
68
|
+
/**
|
|
69
|
+
* @dev Borrowing fee parameters for this specific pair
|
|
70
|
+
*/
|
|
71
|
+
params: BorrowingFeeParams;
|
|
72
|
+
/**
|
|
73
|
+
* @dev Borrowing fee data for this specific pair
|
|
74
|
+
*/
|
|
75
|
+
data: PairBorrowingFeeData;
|
|
58
76
|
};
|
|
59
77
|
/**
|
|
60
78
|
* @dev Input for calculating pending borrowing fees for a pair
|
|
61
79
|
*/
|
|
62
80
|
export type PairBorrowingFeeInput = {
|
|
63
|
-
collateralIndex: number;
|
|
64
81
|
pairIndex: number;
|
|
65
82
|
currentPairPrice: number;
|
|
66
83
|
currentTimestamp?: number;
|
|
@@ -71,7 +88,6 @@ export type PairBorrowingFeeInput = {
|
|
|
71
88
|
export type TradeBorrowingFeeInput = {
|
|
72
89
|
positionSizeCollateral: number;
|
|
73
90
|
openPrice: number;
|
|
74
|
-
collateralIndex: number;
|
|
75
91
|
pairIndex: number;
|
|
76
92
|
currentPairPrice: number;
|
|
77
93
|
initialAccBorrowingFeeP: number;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Builder functions for funding fees context
|
|
3
|
+
*/
|
|
4
|
+
import { GlobalTradingVariablesType } from "../../../backend/tradingVariables/types";
|
|
5
|
+
import { GetPairFundingFeeContext } from "./pairContext";
|
|
6
|
+
/**
|
|
7
|
+
* @dev Builds funding fees sub-context for a specific pair
|
|
8
|
+
*/
|
|
9
|
+
export declare const buildFundingContext: (globalTradingVariables: GlobalTradingVariablesType, collateralIndex: number, pairIndex: number, currentTimestamp: number) => GetPairFundingFeeContext | undefined;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Builder functions for funding fees context
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildFundingContext = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* @dev Builds funding fees sub-context for a specific pair
|
|
9
|
+
*/
|
|
10
|
+
const buildFundingContext = (globalTradingVariables, collateralIndex, pairIndex, currentTimestamp) => {
|
|
11
|
+
var _a, _b, _c, _d, _e;
|
|
12
|
+
const collateral = globalTradingVariables.collaterals[collateralIndex - 1];
|
|
13
|
+
if (!(collateral === null || collateral === void 0 ? void 0 : collateral.pairFundingFees)) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const params = (_a = collateral.pairFundingFees.params) === null || _a === void 0 ? void 0 : _a[pairIndex];
|
|
17
|
+
const data = (_b = collateral.pairFundingFees.data) === null || _b === void 0 ? void 0 : _b[pairIndex];
|
|
18
|
+
const pairOi = (_c = collateral.pairOis) === null || _c === void 0 ? void 0 : _c[pairIndex];
|
|
19
|
+
if (!params || !data) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
params,
|
|
24
|
+
data,
|
|
25
|
+
pairOi: pairOi
|
|
26
|
+
? {
|
|
27
|
+
oiLongToken: ((_d = pairOi.token) === null || _d === void 0 ? void 0 : _d.long) || 0,
|
|
28
|
+
oiShortToken: ((_e = pairOi.token) === null || _e === void 0 ? void 0 : _e.short) || 0,
|
|
29
|
+
}
|
|
30
|
+
: undefined,
|
|
31
|
+
currentTimestamp,
|
|
32
|
+
// TODO: Add net exposure when available
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
exports.buildFundingContext = buildFundingContext;
|
|
@@ -62,7 +62,7 @@ export declare const getPairPendingAccFundingFees: (params: FundingFeeParams, da
|
|
|
62
62
|
* @param tradeInfo Trade info (contracts version)
|
|
63
63
|
* @param tradeFeesData Trade fees data containing initial acc funding fee
|
|
64
64
|
* @param currentPairPrice Current pair price
|
|
65
|
-
* @param context Optional context with funding fee data (
|
|
65
|
+
* @param context Optional context with funding fee data (full or pair-specific)
|
|
66
66
|
* @returns Funding fee in collateral tokens
|
|
67
67
|
*/
|
|
68
68
|
export declare const getTradeFundingFeesCollateral: (trade: {
|
|
@@ -92,7 +92,14 @@ export declare const getTradeFundingFeesCollateral: (trade: {
|
|
|
92
92
|
[pairIndex: number]: number;
|
|
93
93
|
};
|
|
94
94
|
} | undefined;
|
|
95
|
-
}) |
|
|
95
|
+
}) | {
|
|
96
|
+
currentTimestamp: number;
|
|
97
|
+
params: FundingFeeParams;
|
|
98
|
+
data: PairFundingFeeData;
|
|
99
|
+
pairOi?: PairOiAfterV10 | undefined;
|
|
100
|
+
netExposureToken?: number | undefined;
|
|
101
|
+
netExposureUsd?: number | undefined;
|
|
102
|
+
} | undefined) => number;
|
|
96
103
|
/**
|
|
97
104
|
* @dev Main function to calculate funding fees for a trade within context
|
|
98
105
|
* @param context Funding fee context with params and data
|
|
@@ -133,4 +140,7 @@ export declare const getTradeFundingFeesCollateralSimple: (trade: {
|
|
|
133
140
|
}, initialAccFundingFeeP: number, currentAccFundingFeeP: number) => number;
|
|
134
141
|
export * as FundingFees from "./types";
|
|
135
142
|
export type { FundingFeeParams, PairFundingFeeData, PairGlobalParams, TradeInitialAccFundingFees, PairOiAfterV10, FundingRateCalculation, GetFundingFeeContext, TradeFundingFeeResult, PairPendingAccFundingFeesResult, PairAccumulatedFees, TradeInitialAccFees, } from "./types";
|
|
143
|
+
export type { GetPairFundingFeeContext } from "./pairContext";
|
|
136
144
|
export * from "./fetcher";
|
|
145
|
+
export * from "./pairContext";
|
|
146
|
+
export * from "./builder";
|
|
@@ -230,7 +230,7 @@ exports.getPairPendingAccFundingFees = getPairPendingAccFundingFees;
|
|
|
230
230
|
* @param tradeInfo Trade info (contracts version)
|
|
231
231
|
* @param tradeFeesData Trade fees data containing initial acc funding fee
|
|
232
232
|
* @param currentPairPrice Current pair price
|
|
233
|
-
* @param context Optional context with funding fee data (
|
|
233
|
+
* @param context Optional context with funding fee data (full or pair-specific)
|
|
234
234
|
* @returns Funding fee in collateral tokens
|
|
235
235
|
*/
|
|
236
236
|
const getTradeFundingFeesCollateral = (trade, tradeInfo, tradeFeesData, currentPairPrice, context) => {
|
|
@@ -240,8 +240,26 @@ const getTradeFundingFeesCollateral = (trade, tradeInfo, tradeFeesData, currentP
|
|
|
240
240
|
return 0;
|
|
241
241
|
}
|
|
242
242
|
const positionSizeCollateral = trade.collateralAmount * trade.leverage;
|
|
243
|
-
|
|
244
|
-
|
|
243
|
+
if (!context) {
|
|
244
|
+
return 0; // Cannot calculate without context
|
|
245
|
+
}
|
|
246
|
+
// Check if we have a pair-specific context
|
|
247
|
+
if ("params" in context && "data" in context) {
|
|
248
|
+
// Pair-specific context
|
|
249
|
+
const { params, data, pairOi, netExposureToken, netExposureUsd } = context;
|
|
250
|
+
if (!params.fundingFeesEnabled) {
|
|
251
|
+
return 0;
|
|
252
|
+
}
|
|
253
|
+
// Calculate pending accumulated fees
|
|
254
|
+
const { accFundingFeeLongP, accFundingFeeShortP } = (0, exports.getPairPendingAccFundingFees)(params, data, currentPairPrice, pairOi || { oiLongToken: 0, oiShortToken: 0 }, netExposureToken || 0, netExposureUsd || 0, context.currentTimestamp);
|
|
255
|
+
const currentAccFundingFeeP = trade.long
|
|
256
|
+
? accFundingFeeLongP
|
|
257
|
+
: accFundingFeeShortP;
|
|
258
|
+
const fundingFeeDelta = currentAccFundingFeeP - tradeFeesData.initialAccFundingFeeP;
|
|
259
|
+
return (positionSizeCollateral * fundingFeeDelta) / trade.openPrice;
|
|
260
|
+
}
|
|
261
|
+
// Full context - original logic
|
|
262
|
+
if ("fundingParams" in context &&
|
|
245
263
|
trade.collateralIndex !== undefined &&
|
|
246
264
|
trade.pairIndex !== undefined) {
|
|
247
265
|
const params = (_a = context.fundingParams[trade.collateralIndex]) === null || _a === void 0 ? void 0 : _a[trade.pairIndex];
|
|
@@ -324,3 +342,5 @@ exports.getTradeFundingFeesCollateralSimple = getTradeFundingFeesCollateralSimpl
|
|
|
324
342
|
// Export namespace for types
|
|
325
343
|
exports.FundingFees = __importStar(require("./types"));
|
|
326
344
|
__exportStar(require("./fetcher"), exports);
|
|
345
|
+
__exportStar(require("./pairContext"), exports);
|
|
346
|
+
__exportStar(require("./builder"), exports);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Pair-specific funding fee types and utilities
|
|
3
|
+
*/
|
|
4
|
+
import { FundingFeeParams, PairFundingFeeData, PairGlobalParams, PairOiAfterV10, PairPendingAccFundingFeesResult } from "./types";
|
|
5
|
+
/**
|
|
6
|
+
* @dev Context for pair-specific funding fee calculations
|
|
7
|
+
*/
|
|
8
|
+
export type GetPairFundingFeeContext = {
|
|
9
|
+
currentTimestamp: number;
|
|
10
|
+
params: FundingFeeParams;
|
|
11
|
+
data: PairFundingFeeData;
|
|
12
|
+
globalParams?: PairGlobalParams;
|
|
13
|
+
pairOi?: PairOiAfterV10;
|
|
14
|
+
netExposureToken?: number;
|
|
15
|
+
netExposureUsd?: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @dev Input for pair-specific trade funding fee calculation
|
|
19
|
+
*/
|
|
20
|
+
export type PairTradeFundingFeeInput = {
|
|
21
|
+
positionSizeCollateral: number;
|
|
22
|
+
openPrice: number;
|
|
23
|
+
long: boolean;
|
|
24
|
+
currentPairPrice: number;
|
|
25
|
+
initialAccFundingFeeP: number;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @dev Calculate pending accumulated funding fees for a pair using pair-specific context
|
|
29
|
+
* @param currentPairPrice Current price of the pair
|
|
30
|
+
* @param context Pair-specific funding context
|
|
31
|
+
* @returns Pending accumulated funding fees
|
|
32
|
+
*/
|
|
33
|
+
export declare const getPairPendingAccFundingFees: (currentPairPrice: number, context: GetPairFundingFeeContext) => PairPendingAccFundingFeesResult;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Pair-specific funding fee types and utilities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getPairPendingAccFundingFees = void 0;
|
|
7
|
+
const index_1 = require("./index");
|
|
8
|
+
/**
|
|
9
|
+
* @dev Calculate pending accumulated funding fees for a pair using pair-specific context
|
|
10
|
+
* @param currentPairPrice Current price of the pair
|
|
11
|
+
* @param context Pair-specific funding context
|
|
12
|
+
* @returns Pending accumulated funding fees
|
|
13
|
+
*/
|
|
14
|
+
const getPairPendingAccFundingFees = (currentPairPrice, context) => {
|
|
15
|
+
return (0, index_1.getPairPendingAccFundingFees)(context.params, context.data, currentPairPrice, context.pairOi || { oiLongToken: 0, oiShortToken: 0 }, context.netExposureToken || 0, context.netExposureUsd || 0, context.currentTimestamp);
|
|
16
|
+
};
|
|
17
|
+
exports.getPairPendingAccFundingFees = getPairPendingAccFundingFees;
|
|
@@ -2,7 +2,7 @@ export * from "./borrowing";
|
|
|
2
2
|
export * from "./tiers";
|
|
3
3
|
export * from "./trading";
|
|
4
4
|
export { convertTradeFeesData, convertTradeFeesDataArray, convertUiRealizedPnlData, convertUiRealizedPnlDataArray, encodeTradeFeesData, encodeUiRealizedPnlData, } from "./converter";
|
|
5
|
-
export { BorrowingFeeV2, borrowingFeeV2Utils, getPairPendingAccBorrowingFees as getPairPendingAccBorrowingFeesV2, getTradeBorrowingFeesCollateral as getTradeBorrowingFeesCollateralV2,
|
|
5
|
+
export { BorrowingFeeV2, borrowingFeeV2Utils, getPairPendingAccBorrowingFees as getPairPendingAccBorrowingFeesV2, getTradeBorrowingFeesCollateral as getTradeBorrowingFeesCollateralV2, getPairBorrowingFees as getPairBorrowingFeesV2, MAX_BORROWING_RATE_PER_SECOND as MAX_BORROWING_RATE_PER_SECOND_V2, BORROWING_V2_PRECISION, } from "./borrowingV2";
|
|
6
6
|
export { convertBorrowingFeeParams as convertBorrowingFeeParamsV2, convertBorrowingFeeParamsArray as convertBorrowingFeeParamsArrayV2, convertPairBorrowingFeeData as convertPairBorrowingFeeDataV2, convertPairBorrowingFeeDataArray as convertPairBorrowingFeeDataArrayV2, convertTradeInitialAccFees as convertTradeInitialAccFeesV2, convertTradeInitialAccFeesArray as convertTradeInitialAccFeesArrayV2, createBorrowingV2Context, isValidBorrowingRate as isValidBorrowingRateV2, borrowingRateToAPR as borrowingRateToAPRV2, aprToBorrowingRate as aprToBorrowingRateV2, } from "./borrowingV2/converter";
|
|
7
7
|
export { fetchBorrowingFeeParamsV2, fetchPairBorrowingFeeDataV2, fetchTradeBorrowingFeesCollateralV2, fetchPairPendingAccBorrowingFeesV2, fetchAllBorrowingV2Data, createBorrowingV2ContextFromContract, createBorrowingV2ContextFromArrays, fetchBorrowingV2DataForPairs, } from "./borrowingV2/fetcher";
|
|
8
8
|
export { FundingFees, getCurrentFundingVelocityPerYear, getSecondsToReachZeroRate, getAvgFundingRatePerSecondP, getLongShortAprMultiplier, getPairPendingAccFundingFees, getTradeFundingFeesCollateral, getTradeFundingFeesCollateralSimple, getTradeFundingFees, } from "./fundingFees";
|
package/lib/trade/fees/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.isValidFundingRate = exports.createFundingFeeContext = exports.convertTradeInitialAccFundingFees = exports.convertPairGlobalParamsArray = exports.convertPairGlobalParams = exports.convertPairFundingFeeDataArray = exports.convertPairFundingFeeData = exports.convertFundingFeeParamsArray = exports.convertFundingFeeParams = exports.getTradeFundingFees = exports.getTradeFundingFeesCollateralSimple = exports.getTradeFundingFeesCollateral = exports.getPairPendingAccFundingFees = exports.getLongShortAprMultiplier = exports.getAvgFundingRatePerSecondP = exports.getSecondsToReachZeroRate = exports.getCurrentFundingVelocityPerYear = exports.FundingFees = exports.fetchBorrowingV2DataForPairs = exports.createBorrowingV2ContextFromArrays = exports.createBorrowingV2ContextFromContract = exports.fetchAllBorrowingV2Data = exports.fetchPairPendingAccBorrowingFeesV2 = exports.fetchTradeBorrowingFeesCollateralV2 = exports.fetchPairBorrowingFeeDataV2 = exports.fetchBorrowingFeeParamsV2 = exports.aprToBorrowingRateV2 = exports.borrowingRateToAPRV2 = exports.isValidBorrowingRateV2 = exports.createBorrowingV2Context = exports.convertTradeInitialAccFeesArrayV2 = exports.convertTradeInitialAccFeesV2 = exports.convertPairBorrowingFeeDataArrayV2 = exports.convertPairBorrowingFeeDataV2 = exports.convertBorrowingFeeParamsArrayV2 = exports.convertBorrowingFeeParamsV2 = exports.BORROWING_V2_PRECISION = exports.MAX_BORROWING_RATE_PER_SECOND_V2 = exports.getPairBorrowingFeesV2 = exports.
|
|
18
|
-
exports.FUNDING_FEES_PRECISION = exports.calculateVelocityFromSkew = exports.aprToFundingRate =
|
|
17
|
+
exports.fundingRateToAPR = exports.isValidFundingRate = exports.createFundingFeeContext = exports.convertTradeInitialAccFundingFees = exports.convertPairGlobalParamsArray = exports.convertPairGlobalParams = exports.convertPairFundingFeeDataArray = exports.convertPairFundingFeeData = exports.convertFundingFeeParamsArray = exports.convertFundingFeeParams = exports.getTradeFundingFees = exports.getTradeFundingFeesCollateralSimple = exports.getTradeFundingFeesCollateral = exports.getPairPendingAccFundingFees = exports.getLongShortAprMultiplier = exports.getAvgFundingRatePerSecondP = exports.getSecondsToReachZeroRate = exports.getCurrentFundingVelocityPerYear = exports.FundingFees = exports.fetchBorrowingV2DataForPairs = exports.createBorrowingV2ContextFromArrays = exports.createBorrowingV2ContextFromContract = exports.fetchAllBorrowingV2Data = exports.fetchPairPendingAccBorrowingFeesV2 = exports.fetchTradeBorrowingFeesCollateralV2 = exports.fetchPairBorrowingFeeDataV2 = exports.fetchBorrowingFeeParamsV2 = exports.aprToBorrowingRateV2 = exports.borrowingRateToAPRV2 = exports.isValidBorrowingRateV2 = exports.createBorrowingV2Context = exports.convertTradeInitialAccFeesArrayV2 = exports.convertTradeInitialAccFeesV2 = exports.convertPairBorrowingFeeDataArrayV2 = exports.convertPairBorrowingFeeDataV2 = exports.convertBorrowingFeeParamsArrayV2 = exports.convertBorrowingFeeParamsV2 = exports.BORROWING_V2_PRECISION = exports.MAX_BORROWING_RATE_PER_SECOND_V2 = exports.getPairBorrowingFeesV2 = exports.getTradeBorrowingFeesCollateralV2 = exports.getPairPendingAccBorrowingFeesV2 = exports.borrowingFeeV2Utils = exports.BorrowingFeeV2 = exports.encodeUiRealizedPnlData = exports.encodeTradeFeesData = exports.convertUiRealizedPnlDataArray = exports.convertUiRealizedPnlData = exports.convertTradeFeesDataArray = exports.convertTradeFeesData = void 0;
|
|
18
|
+
exports.FUNDING_FEES_PRECISION = exports.calculateVelocityFromSkew = exports.aprToFundingRate = void 0;
|
|
19
19
|
__exportStar(require("./borrowing"), exports);
|
|
20
20
|
__exportStar(require("./tiers"), exports);
|
|
21
21
|
__exportStar(require("./trading"), exports);
|
|
@@ -33,7 +33,6 @@ Object.defineProperty(exports, "BorrowingFeeV2", { enumerable: true, get: functi
|
|
|
33
33
|
Object.defineProperty(exports, "borrowingFeeV2Utils", { enumerable: true, get: function () { return borrowingV2_1.borrowingFeeV2Utils; } });
|
|
34
34
|
Object.defineProperty(exports, "getPairPendingAccBorrowingFeesV2", { enumerable: true, get: function () { return borrowingV2_1.getPairPendingAccBorrowingFees; } });
|
|
35
35
|
Object.defineProperty(exports, "getTradeBorrowingFeesCollateralV2", { enumerable: true, get: function () { return borrowingV2_1.getTradeBorrowingFeesCollateral; } });
|
|
36
|
-
Object.defineProperty(exports, "getBorrowingFeeV2", { enumerable: true, get: function () { return borrowingV2_1.getBorrowingFee; } });
|
|
37
36
|
Object.defineProperty(exports, "getPairBorrowingFeesV2", { enumerable: true, get: function () { return borrowingV2_1.getPairBorrowingFees; } });
|
|
38
37
|
Object.defineProperty(exports, "MAX_BORROWING_RATE_PER_SECOND_V2", { enumerable: true, get: function () { return borrowingV2_1.MAX_BORROWING_RATE_PER_SECOND; } });
|
|
39
38
|
Object.defineProperty(exports, "BORROWING_V2_PRECISION", { enumerable: true, get: function () { return borrowingV2_1.BORROWING_V2_PRECISION; } });
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Trading fees context builder module
|
|
3
|
+
* @dev Provides builder functions for creating trading fee contexts
|
|
4
|
+
*/
|
|
5
|
+
import { Fee, GlobalTradeFeeParams } from "../../types";
|
|
6
|
+
import { GlobalTradingVariablesType } from "src/backend/tradingVariables/types";
|
|
7
|
+
/**
|
|
8
|
+
* @dev Sub-context for trading fees
|
|
9
|
+
*/
|
|
10
|
+
export type TradingFeesSubContext = {
|
|
11
|
+
fee: Fee;
|
|
12
|
+
globalTradeFeeParams: GlobalTradeFeeParams;
|
|
13
|
+
traderFeeMultiplier?: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @dev Builds trading fees sub-context
|
|
17
|
+
*/
|
|
18
|
+
export declare const buildTradingFeesContext: (globalTradingVariables: GlobalTradingVariablesType, pairIndex: number, traderFeeMultiplier?: number) => TradingFeesSubContext;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Trading fees context builder module
|
|
4
|
+
* @dev Provides builder functions for creating trading fee contexts
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.buildTradingFeesContext = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* @dev Builds trading fees sub-context
|
|
10
|
+
*/
|
|
11
|
+
const buildTradingFeesContext = (globalTradingVariables, pairIndex, traderFeeMultiplier) => {
|
|
12
|
+
const { fees, pairs, globalTradeFeeParams } = globalTradingVariables;
|
|
13
|
+
const feeIndex = pairs[pairIndex].feeIndex;
|
|
14
|
+
return {
|
|
15
|
+
fee: fees[feeIndex],
|
|
16
|
+
globalTradeFeeParams: globalTradeFeeParams,
|
|
17
|
+
traderFeeMultiplier,
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
exports.buildTradingFeesContext = buildTradingFeesContext;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @dev Converters for trading fee data between contract and SDK formats
|
|
3
3
|
*/
|
|
4
|
+
import { CounterTradeSettingsBackend } from "src/backend";
|
|
4
5
|
import { CounterTradeSettings } from "../../types";
|
|
5
6
|
import { GlobalTradeFeeParams } from "./types";
|
|
6
7
|
/**
|
|
@@ -10,6 +11,7 @@ import { GlobalTradeFeeParams } from "./types";
|
|
|
10
11
|
* @returns Normalized counter trade settings
|
|
11
12
|
*/
|
|
12
13
|
export declare const convertCounterTradeSettings: (feeRateMultiplier: number, maxLeverage: number) => CounterTradeSettings;
|
|
14
|
+
export declare const convertCounterTradeSettingsArray: (settings: CounterTradeSettingsBackend[]) => CounterTradeSettings[];
|
|
13
15
|
/**
|
|
14
16
|
* @dev Converts array of counter trade fee rate multipliers from contract
|
|
15
17
|
* @param multipliers Array of fee rate multipliers (1e3 precision)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @dev Converters for trading fee data between contract and SDK formats
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.convertGlobalTradeFeeParams = exports.convertCounterTradeFeeRateMultipliers = exports.convertCounterTradeSettings = void 0;
|
|
6
|
+
exports.convertGlobalTradeFeeParams = exports.convertCounterTradeFeeRateMultipliers = exports.convertCounterTradeSettingsArray = exports.convertCounterTradeSettings = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* @dev Converts contract counter trade settings to SDK format
|
|
9
9
|
* @param feeRateMultiplier Fee rate multiplier from contract (1e3 precision)
|
|
@@ -17,6 +17,10 @@ const convertCounterTradeSettings = (feeRateMultiplier, maxLeverage) => {
|
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
19
|
exports.convertCounterTradeSettings = convertCounterTradeSettings;
|
|
20
|
+
const convertCounterTradeSettingsArray = (settings) => {
|
|
21
|
+
return settings.map(setting => (0, exports.convertCounterTradeSettings)(Number(setting.feeRateMultiplier), Number(setting.maxLeverage)));
|
|
22
|
+
};
|
|
23
|
+
exports.convertCounterTradeSettingsArray = convertCounterTradeSettingsArray;
|
|
20
24
|
/**
|
|
21
25
|
* @dev Converts array of counter trade fee rate multipliers from contract
|
|
22
26
|
* @param multipliers Array of fee rate multipliers (1e3 precision)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Holding fees calculation for structured contexts
|
|
3
|
+
*/
|
|
4
|
+
import { Trade, TradeInfo, TradeFeesData } from "../../types";
|
|
5
|
+
import { TradeHoldingFees } from "./types";
|
|
6
|
+
import { ContractsVersion } from "../../../contracts/types";
|
|
7
|
+
import type { BorrowingV1SubContext, BorrowingV2SubContext, FundingFeesSubContext } from "../../pnl";
|
|
8
|
+
/**
|
|
9
|
+
* @dev Context for holding fees calculation with structured sub-contexts
|
|
10
|
+
*/
|
|
11
|
+
export type GetStructuredHoldingFeesContext = {
|
|
12
|
+
contractsVersion: ContractsVersion;
|
|
13
|
+
currentTimestamp: number;
|
|
14
|
+
collateralPriceUsd: number;
|
|
15
|
+
borrowingV1?: BorrowingV1SubContext;
|
|
16
|
+
borrowingV2?: BorrowingV2SubContext;
|
|
17
|
+
funding?: FundingFeesSubContext;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* @dev Calculates total holding fees using structured context
|
|
21
|
+
* @param trade The trade to calculate fees for
|
|
22
|
+
* @param tradeInfo Trade info containing contracts version
|
|
23
|
+
* @param tradeFeesData Trade fees data containing initial acc fees
|
|
24
|
+
* @param currentPairPrice Current pair price
|
|
25
|
+
* @param context Structured context with sub-contexts for each fee type
|
|
26
|
+
* @returns Object containing all holding fee components
|
|
27
|
+
*/
|
|
28
|
+
export declare const getTradePendingHoldingFeesCollateralStructured: (trade: Trade, tradeInfo: TradeInfo, tradeFeesData: TradeFeesData, currentPairPrice: number, context: GetStructuredHoldingFeesContext) => TradeHoldingFees;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Holding fees calculation for structured contexts
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getTradePendingHoldingFeesCollateralStructured = void 0;
|
|
7
|
+
const types_1 = require("../../../contracts/types");
|
|
8
|
+
const borrowing_1 = require("../borrowing");
|
|
9
|
+
const borrowingV2_1 = require("../borrowingV2");
|
|
10
|
+
const pairContext_1 = require("../fundingFees/pairContext");
|
|
11
|
+
/**
|
|
12
|
+
* @dev Calculates total holding fees using structured context
|
|
13
|
+
* @param trade The trade to calculate fees for
|
|
14
|
+
* @param tradeInfo Trade info containing contracts version
|
|
15
|
+
* @param tradeFeesData Trade fees data containing initial acc fees
|
|
16
|
+
* @param currentPairPrice Current pair price
|
|
17
|
+
* @param context Structured context with sub-contexts for each fee type
|
|
18
|
+
* @returns Object containing all holding fee components
|
|
19
|
+
*/
|
|
20
|
+
const getTradePendingHoldingFeesCollateralStructured = (trade, tradeInfo, tradeFeesData, currentPairPrice, context) => {
|
|
21
|
+
const positionSizeCollateral = trade.collateralAmount * trade.leverage;
|
|
22
|
+
// Calculate funding fees (v10+ only)
|
|
23
|
+
let fundingFeeCollateral = 0;
|
|
24
|
+
if (context.contractsVersion >= types_1.ContractsVersion.V10 &&
|
|
25
|
+
context.funding &&
|
|
26
|
+
tradeFeesData.initialAccFundingFeeP !== undefined) {
|
|
27
|
+
fundingFeeCollateral = (0, pairContext_1.getPairTradeFundingFeesCollateral)({
|
|
28
|
+
positionSizeCollateral,
|
|
29
|
+
openPrice: trade.openPrice,
|
|
30
|
+
long: trade.long,
|
|
31
|
+
currentPairPrice,
|
|
32
|
+
initialAccFundingFeeP: tradeFeesData.initialAccFundingFeeP,
|
|
33
|
+
}, context.funding // TODO: Fix types once funding types are properly imported
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
// Calculate borrowing fees v2
|
|
37
|
+
let borrowingFeeCollateral = 0;
|
|
38
|
+
if (context.borrowingV2 && tradeFeesData.initialAccBorrowingFeeP !== undefined) {
|
|
39
|
+
borrowingFeeCollateral = (0, borrowingV2_1.getPairTradeBorrowingFeesCollateral)({
|
|
40
|
+
positionSizeCollateral,
|
|
41
|
+
openPrice: trade.openPrice,
|
|
42
|
+
currentPairPrice,
|
|
43
|
+
initialAccBorrowingFeeP: tradeFeesData.initialAccBorrowingFeeP,
|
|
44
|
+
currentTimestamp: context.currentTimestamp,
|
|
45
|
+
}, context.borrowingV2);
|
|
46
|
+
}
|
|
47
|
+
// Calculate v1 borrowing fees (some markets use v1 indefinitely)
|
|
48
|
+
let borrowingFeeCollateral_old = 0;
|
|
49
|
+
if (context.borrowingV1) {
|
|
50
|
+
borrowingFeeCollateral_old = (0, borrowing_1.getPairBorrowingFee)(positionSizeCollateral, trade.long, context.borrowingV1.initialAccFees || { accPairFee: 0, accGroupFee: 0, block: 0 }, {
|
|
51
|
+
currentBlock: context.borrowingV1.currentBlock,
|
|
52
|
+
group: context.borrowingV1.group,
|
|
53
|
+
pair: context.borrowingV1.pair,
|
|
54
|
+
collateralPriceUsd: context.collateralPriceUsd,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
fundingFeeCollateral,
|
|
59
|
+
borrowingFeeCollateral,
|
|
60
|
+
borrowingFeeCollateral_old,
|
|
61
|
+
totalFeeCollateral: fundingFeeCollateral +
|
|
62
|
+
borrowingFeeCollateral +
|
|
63
|
+
borrowingFeeCollateral_old,
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
exports.getTradePendingHoldingFeesCollateralStructured = getTradePendingHoldingFeesCollateralStructured;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Holding fees calculation for structured contexts
|
|
3
|
+
*/
|
|
4
|
+
import { Trade, TradeInfo, TradeFeesData } from "../../types";
|
|
5
|
+
import { TradeHoldingFees } from "./types";
|
|
6
|
+
import { ContractsVersion } from "../../../contracts/types";
|
|
7
|
+
import type { BorrowingV1SubContext, BorrowingV2SubContext, FundingFeesSubContext } from "../../pnl";
|
|
8
|
+
/**
|
|
9
|
+
* @dev Context for holding fees calculation with structured sub-contexts
|
|
10
|
+
*/
|
|
11
|
+
export type GetStructuredHoldingFeesContext = {
|
|
12
|
+
contractsVersion: ContractsVersion;
|
|
13
|
+
currentTimestamp: number;
|
|
14
|
+
collateralPriceUsd: number;
|
|
15
|
+
borrowingV1?: BorrowingV1SubContext;
|
|
16
|
+
borrowingV2?: BorrowingV2SubContext;
|
|
17
|
+
funding?: FundingFeesSubContext;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* @dev Calculates total holding fees using structured context
|
|
21
|
+
* @param trade The trade to calculate fees for
|
|
22
|
+
* @param tradeInfo Trade info containing contracts version
|
|
23
|
+
* @param tradeFeesData Trade fees data containing initial acc fees
|
|
24
|
+
* @param currentPairPrice Current pair price
|
|
25
|
+
* @param context Structured context with sub-contexts for each fee type
|
|
26
|
+
* @returns Object containing all holding fee components
|
|
27
|
+
*/
|
|
28
|
+
export declare const getTradePendingHoldingFeesCollateralStructured: (trade: Trade, tradeInfo: TradeInfo, tradeFeesData: TradeFeesData, currentPairPrice: number, context: GetStructuredHoldingFeesContext) => TradeHoldingFees;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Holding fees calculation for structured contexts
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getTradePendingHoldingFeesCollateralStructured = void 0;
|
|
7
|
+
const types_1 = require("../../../contracts/types");
|
|
8
|
+
const borrowing_1 = require("../borrowing");
|
|
9
|
+
const borrowingV2_1 = require("../borrowingV2");
|
|
10
|
+
const fundingFees_1 = require("../fundingFees");
|
|
11
|
+
/**
|
|
12
|
+
* @dev Calculates total holding fees using structured context
|
|
13
|
+
* @param trade The trade to calculate fees for
|
|
14
|
+
* @param tradeInfo Trade info containing contracts version
|
|
15
|
+
* @param tradeFeesData Trade fees data containing initial acc fees
|
|
16
|
+
* @param currentPairPrice Current pair price
|
|
17
|
+
* @param context Structured context with sub-contexts for each fee type
|
|
18
|
+
* @returns Object containing all holding fee components
|
|
19
|
+
*/
|
|
20
|
+
const getTradePendingHoldingFeesCollateralStructured = (trade, tradeInfo, tradeFeesData, currentPairPrice, context) => {
|
|
21
|
+
const positionSizeCollateral = trade.collateralAmount * trade.leverage;
|
|
22
|
+
// Calculate funding fees (v10+ only)
|
|
23
|
+
let fundingFeeCollateral = 0;
|
|
24
|
+
if (context.contractsVersion >= types_1.ContractsVersion.V10 &&
|
|
25
|
+
context.funding &&
|
|
26
|
+
tradeFeesData.initialAccFundingFeeP !== undefined) {
|
|
27
|
+
fundingFeeCollateral = (0, fundingFees_1.getTradeFundingFeesCollateral)(trade, tradeInfo, tradeFeesData, currentPairPrice, Object.assign(Object.assign({}, context.funding), { currentTimestamp: context.currentTimestamp }) // TODO: Fix types once funding types are properly imported
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
// Calculate borrowing fees v2
|
|
31
|
+
let borrowingFeeCollateral = 0;
|
|
32
|
+
if (context.borrowingV2 &&
|
|
33
|
+
tradeFeesData.initialAccBorrowingFeeP !== undefined) {
|
|
34
|
+
borrowingFeeCollateral = (0, borrowingV2_1.getTradeBorrowingFeesCollateral)({
|
|
35
|
+
positionSizeCollateral,
|
|
36
|
+
openPrice: trade.openPrice,
|
|
37
|
+
currentPairPrice,
|
|
38
|
+
initialAccBorrowingFeeP: tradeFeesData.initialAccBorrowingFeeP,
|
|
39
|
+
currentTimestamp: context.currentTimestamp,
|
|
40
|
+
}, context.borrowingV2);
|
|
41
|
+
}
|
|
42
|
+
// Calculate v1 borrowing fees (some markets use v1 indefinitely)
|
|
43
|
+
let borrowingFeeCollateral_old = 0;
|
|
44
|
+
if (context.borrowingV1) {
|
|
45
|
+
borrowingFeeCollateral_old = (0, borrowing_1.getBorrowingFee)(positionSizeCollateral, undefined, // pairIndex not needed for pair-specific context
|
|
46
|
+
trade.long, context.borrowingV1.initialAccFees || {
|
|
47
|
+
accPairFee: 0,
|
|
48
|
+
accGroupFee: 0,
|
|
49
|
+
block: 0,
|
|
50
|
+
}, {
|
|
51
|
+
currentBlock: context.borrowingV1.currentBlock,
|
|
52
|
+
group: context.borrowingV1.group,
|
|
53
|
+
pair: context.borrowingV1.pair,
|
|
54
|
+
collateralPriceUsd: context.collateralPriceUsd,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
fundingFeeCollateral,
|
|
59
|
+
borrowingFeeCollateral,
|
|
60
|
+
borrowingFeeCollateral_old,
|
|
61
|
+
totalFeeCollateral: fundingFeeCollateral +
|
|
62
|
+
borrowingFeeCollateral +
|
|
63
|
+
borrowingFeeCollateral_old,
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
exports.getTradePendingHoldingFeesCollateralStructured = getTradePendingHoldingFeesCollateralStructured;
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
* @dev Trading fee calculations for opening and closing positions
|
|
3
3
|
*/
|
|
4
4
|
import { Fee, PairIndex, Trade, TradeInfo, TradeFeesData } from "../../types";
|
|
5
|
+
import { GetBorrowingFeeContext } from "../borrowing";
|
|
6
|
+
import * as BorrowingFee from "../borrowing/types";
|
|
7
|
+
import { GetPairBorrowingFeeV2Context } from "../borrowingV2";
|
|
8
|
+
import { GetPairFundingFeeContext } from "../fundingFees/pairContext";
|
|
5
9
|
import { GetTradeFeesContext, GetLiquidationFeesContext, GetClosingFeeContext, TradeFeesBreakdown, TradeHoldingFees } from "./types";
|
|
6
10
|
import { ContractsVersion } from "../../../contracts/types";
|
|
7
|
-
import * as BorrowingFee from "../borrowing/types";
|
|
8
11
|
/**
|
|
9
12
|
* @dev Returns the total fee for a trade in collateral tokens
|
|
10
13
|
* @dev Mirrors the contract's getTotalTradeFeesCollateral function
|
|
@@ -32,23 +35,28 @@ export declare const getTotalTradeLiqFeesCollateral: (collateralIndex: number, t
|
|
|
32
35
|
* @deprecated Use getTotalTradeFeesCollateral instead
|
|
33
36
|
*/
|
|
34
37
|
export declare const getClosingFee: (collateralAmount: number, leverage: number, pairIndex: PairIndex, pairFee: Fee | undefined, _collateralPriceUsd?: number | undefined, isCounterTrade?: boolean, trader?: string, context?: GetClosingFeeContext) => number;
|
|
38
|
+
/**
|
|
39
|
+
* @dev Context for holding fees calculation with structured sub-contexts
|
|
40
|
+
*/
|
|
41
|
+
export type GetStructuredHoldingFeesContext = {
|
|
42
|
+
contractsVersion: ContractsVersion;
|
|
43
|
+
currentTimestamp: number;
|
|
44
|
+
collateralPriceUsd: number;
|
|
45
|
+
borrowingV1?: GetBorrowingFeeContext;
|
|
46
|
+
borrowingV2?: GetPairBorrowingFeeV2Context;
|
|
47
|
+
funding?: GetPairFundingFeeContext;
|
|
48
|
+
initialAccFees?: BorrowingFee.InitialAccFees;
|
|
49
|
+
};
|
|
35
50
|
/**
|
|
36
51
|
* @dev Calculates total holding fees for a trade (funding + borrowing fees)
|
|
37
52
|
* @param trade The trade to calculate fees for
|
|
38
53
|
* @param tradeInfo Trade info containing contracts version
|
|
39
54
|
* @param tradeFeesData Trade fees data containing initial acc fees
|
|
40
55
|
* @param currentPairPrice Current pair price
|
|
41
|
-
* @param context
|
|
56
|
+
* @param context Structured context with sub-contexts for each fee type
|
|
42
57
|
* @returns Object containing all holding fee components
|
|
43
58
|
*/
|
|
44
|
-
export declare const getTradePendingHoldingFeesCollateral: (trade: Trade, tradeInfo: TradeInfo, tradeFeesData: TradeFeesData, currentPairPrice: number, context:
|
|
45
|
-
[key: string]: any;
|
|
46
|
-
contractsVersion?: ContractsVersion | undefined;
|
|
47
|
-
currentBlock?: number | undefined;
|
|
48
|
-
groups?: BorrowingFee.Group[] | undefined;
|
|
49
|
-
pairs?: BorrowingFee.Pair[] | undefined;
|
|
50
|
-
collateralPriceUsd?: number | undefined;
|
|
51
|
-
initialAccFees?: BorrowingFee.InitialAccFees | undefined;
|
|
52
|
-
}) => TradeHoldingFees;
|
|
59
|
+
export declare const getTradePendingHoldingFeesCollateral: (trade: Trade, tradeInfo: TradeInfo, tradeFeesData: TradeFeesData, currentPairPrice: number, context: GetStructuredHoldingFeesContext) => TradeHoldingFees;
|
|
53
60
|
export * from "./types";
|
|
54
61
|
export * from "./converter";
|
|
62
|
+
export * from "./builder";
|