@gainsnetwork/sdk 0.2.67-rc6 → 0.2.67-rc8
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 +312 -0
- package/lib/backend/tradingVariables/backend.types.js +2 -0
- package/lib/backend/tradingVariables/converter.d.ts +31 -0
- package/lib/backend/tradingVariables/converter.js +330 -0
- package/lib/backend/tradingVariables/index.d.ts +5 -0
- package/lib/backend/tradingVariables/index.js +95 -0
- package/lib/backend/tradingVariables/types.d.ts +109 -0
- package/lib/backend/tradingVariables/types.js +14 -0
- package/lib/constants.js +2 -3
- 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/GNSMultiCollatDiamond.d.ts +2140 -286
- 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/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/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/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 +4502 -427
- 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/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.js +65 -142
- package/lib/contracts/utils/openLimitOrders.d.ts +8 -0
- package/lib/contracts/utils/openLimitOrders.js +88 -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/oi/converter.d.ts +63 -0
- package/lib/markets/oi/converter.js +103 -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 +10 -0
- package/lib/markets/oi/index.js +37 -0
- package/lib/markets/oi/types.d.ts +82 -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/trade/fees/borrowing/builder.d.ts +14 -0
- package/lib/trade/fees/borrowing/builder.js +33 -0
- 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 +110 -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 +146 -0
- package/lib/trade/fees/fundingFees/index.js +346 -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/tiers/converter.d.ts +54 -0
- package/lib/trade/fees/tiers/converter.js +81 -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 +30 -0
- package/lib/trade/fees/trading/converter.js +43 -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/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 +26 -0
- package/lib/trade/liquidation/index.js +142 -0
- package/lib/trade/liquidation/types.d.ts +59 -0
- package/lib/trade/liquidation/types.js +2 -0
- package/lib/trade/openLimitOrder.d.ts +2 -0
- package/lib/trade/openLimitOrder.js +23 -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 +77 -0
- package/lib/trade/pnl/index.js +270 -0
- package/lib/trade/pnl/types.d.ts +114 -0
- package/lib/trade/pnl/types.js +5 -0
- package/lib/trade/priceImpact/close/index.d.ts +21 -0
- package/lib/trade/priceImpact/close/index.js +131 -0
- package/lib/trade/priceImpact/close/types.d.ts +43 -0
- package/lib/trade/priceImpact/close/types.js +5 -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 +107 -0
- package/lib/trade/priceImpact/cumulVol/index.js +228 -0
- package/lib/trade/priceImpact/index.d.ts +12 -0
- package/lib/trade/priceImpact/index.js +59 -0
- package/lib/trade/priceImpact/open/index.d.ts +22 -0
- package/lib/trade/priceImpact/open/index.js +76 -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/converter.d.ts +77 -0
- package/lib/trade/priceImpact/skew/converter.js +171 -0
- package/lib/trade/priceImpact/skew/fetcher.d.ts +63 -0
- package/lib/trade/priceImpact/skew/fetcher.js +168 -0
- package/lib/trade/priceImpact/skew/index.d.ts +58 -0
- package/lib/trade/priceImpact/skew/index.js +179 -0
- package/lib/trade/priceImpact/skew/types.d.ts +55 -0
- package/lib/trade/priceImpact/skew/types.js +5 -0
- package/lib/trade/utils.d.ts +18 -0
- package/lib/trade/utils.js +30 -0
- package/package.json +1 -1
|
@@ -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;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Funding fees types for v10+ trades
|
|
3
|
+
*/
|
|
4
|
+
export type FundingFeeParams = {
|
|
5
|
+
skewCoefficientPerYear: number;
|
|
6
|
+
absoluteVelocityPerYearCap: number;
|
|
7
|
+
absoluteRatePerSecondCap: number;
|
|
8
|
+
thetaThresholdUsd: number;
|
|
9
|
+
fundingFeesEnabled: boolean;
|
|
10
|
+
aprMultiplierEnabled: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type PairFundingFeeData = {
|
|
13
|
+
accFundingFeeLongP: number;
|
|
14
|
+
accFundingFeeShortP: number;
|
|
15
|
+
lastFundingRatePerSecondP: number;
|
|
16
|
+
lastFundingUpdateTs: number;
|
|
17
|
+
};
|
|
18
|
+
export type PairGlobalParams = {
|
|
19
|
+
maxSkewCollateral: number;
|
|
20
|
+
};
|
|
21
|
+
export type TradeInitialAccFundingFees = {
|
|
22
|
+
initialAccFundingFeeP: number;
|
|
23
|
+
};
|
|
24
|
+
export type PairAccumulatedFees = {
|
|
25
|
+
accPerOiLong: number;
|
|
26
|
+
accPerOiShort: number;
|
|
27
|
+
lastUpdateBlock: number;
|
|
28
|
+
};
|
|
29
|
+
export type TradeInitialAccFees = {
|
|
30
|
+
accPerOiLong: number;
|
|
31
|
+
accPerOiShort: number;
|
|
32
|
+
openBlock: number;
|
|
33
|
+
};
|
|
34
|
+
export type PairOiAfterV10 = {
|
|
35
|
+
oiLongToken: number;
|
|
36
|
+
oiShortToken: number;
|
|
37
|
+
};
|
|
38
|
+
export type FundingRateCalculation = {
|
|
39
|
+
pairOiToken: PairOiAfterV10;
|
|
40
|
+
netExposureToken: number;
|
|
41
|
+
netExposureUsd: number;
|
|
42
|
+
currentVelocityPerYear: number;
|
|
43
|
+
avgFundingRatePerSecondP: number;
|
|
44
|
+
currentFundingRatePerSecondP: number;
|
|
45
|
+
secondsSinceLastUpdate: number;
|
|
46
|
+
longAprMultiplier: number;
|
|
47
|
+
shortAprMultiplier: number;
|
|
48
|
+
};
|
|
49
|
+
export type GetFundingFeeContext = {
|
|
50
|
+
currentTimestamp: number;
|
|
51
|
+
fundingParams: {
|
|
52
|
+
[collateralIndex: number]: {
|
|
53
|
+
[pairIndex: number]: FundingFeeParams;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
fundingData: {
|
|
57
|
+
[collateralIndex: number]: {
|
|
58
|
+
[pairIndex: number]: PairFundingFeeData;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
globalParams?: {
|
|
62
|
+
[collateralIndex: number]: {
|
|
63
|
+
[pairIndex: number]: PairGlobalParams;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
export type TradeFundingFeeResult = {
|
|
68
|
+
fundingFeeCollateral: number;
|
|
69
|
+
fundingFeeP: number;
|
|
70
|
+
currentAccFundingFeeP: number;
|
|
71
|
+
initialAccFundingFeeP: number;
|
|
72
|
+
};
|
|
73
|
+
export type PairPendingAccFundingFeesResult = {
|
|
74
|
+
accFundingFeeLongP: number;
|
|
75
|
+
accFundingFeeShortP: number;
|
|
76
|
+
currentFundingRatePerSecondP: number;
|
|
77
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Converters for fee tier data between contract and SDK formats
|
|
3
|
+
* @dev All BigNumber values are normalized to floats with appropriate precision
|
|
4
|
+
*/
|
|
5
|
+
import { IFeeTiers } from "../../../contracts/types/generated/GNSMultiCollatDiamond";
|
|
6
|
+
import { FeeTier, TraderInfo, TraderEnrollment } from "./types";
|
|
7
|
+
/**
|
|
8
|
+
* @dev Converts contract fee tier data to SDK format
|
|
9
|
+
* @param contractData Contract FeeTier struct
|
|
10
|
+
* @returns Normalized fee tier data
|
|
11
|
+
*/
|
|
12
|
+
export declare const convertFeeTier: (contractData: IFeeTiers.FeeTierStructOutput) => FeeTier;
|
|
13
|
+
/**
|
|
14
|
+
* @dev Converts array of fee tiers from contract format
|
|
15
|
+
* @param contractDataArray Array of contract FeeTier structs
|
|
16
|
+
* @returns Array of normalized fee tiers
|
|
17
|
+
*/
|
|
18
|
+
export declare const convertFeeTierArray: (contractDataArray: IFeeTiers.FeeTierStructOutput[]) => FeeTier[];
|
|
19
|
+
/**
|
|
20
|
+
* @dev Converts contract trader info to SDK format
|
|
21
|
+
* @param contractData Contract TraderInfo struct
|
|
22
|
+
* @returns Normalized trader info
|
|
23
|
+
*/
|
|
24
|
+
export declare const convertTraderInfo: (contractData: IFeeTiers.TraderInfoStructOutput) => TraderInfo;
|
|
25
|
+
/**
|
|
26
|
+
* @dev Converts contract trader enrollment to SDK format
|
|
27
|
+
* @param contractData Contract TraderEnrollment struct
|
|
28
|
+
* @returns Normalized trader enrollment
|
|
29
|
+
*/
|
|
30
|
+
export declare const convertTraderEnrollment: (contractData: IFeeTiers.TraderEnrollmentStructOutput) => TraderEnrollment;
|
|
31
|
+
/**
|
|
32
|
+
* @dev Converts the complete fee tiers configuration from contract format
|
|
33
|
+
* @param tiers Array of fee tiers from contract
|
|
34
|
+
* @param groupVolumeMultipliers Array of group volume multipliers
|
|
35
|
+
* @param currentDay Current day from contract
|
|
36
|
+
* @returns Complete fee tiers configuration
|
|
37
|
+
*/
|
|
38
|
+
export declare const convertFeeTiersConfig: (tiers: IFeeTiers.FeeTierStructOutput[], groupVolumeMultipliers: readonly bigint[], currentDay: bigint) => {
|
|
39
|
+
tiers: FeeTier[];
|
|
40
|
+
groupVolumeMultipliers: number[];
|
|
41
|
+
currentDay: number;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* @dev Converts trader's fee tier data from contract format
|
|
45
|
+
* @param traderInfo Trader info from contract
|
|
46
|
+
* @param traderDailyInfo Array of daily points info
|
|
47
|
+
* @param traderEnrollment Enrollment status from contract
|
|
48
|
+
* @returns Complete trader fee tier data
|
|
49
|
+
*/
|
|
50
|
+
export declare const convertTraderFeeTiersData: (traderInfo: IFeeTiers.TraderInfoStructOutput, traderDailyInfo: readonly bigint[], traderEnrollment: IFeeTiers.TraderEnrollmentStructOutput) => {
|
|
51
|
+
traderInfo: TraderInfo;
|
|
52
|
+
dailyPoints: number[];
|
|
53
|
+
traderEnrollment: TraderEnrollment;
|
|
54
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Converters for fee tier data between contract and SDK formats
|
|
4
|
+
* @dev All BigNumber values are normalized to floats with appropriate precision
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.convertTraderFeeTiersData = exports.convertFeeTiersConfig = exports.convertTraderEnrollment = exports.convertTraderInfo = exports.convertFeeTierArray = exports.convertFeeTier = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* @dev Converts contract fee tier data to SDK format
|
|
10
|
+
* @param contractData Contract FeeTier struct
|
|
11
|
+
* @returns Normalized fee tier data
|
|
12
|
+
*/
|
|
13
|
+
const convertFeeTier = (contractData) => {
|
|
14
|
+
return {
|
|
15
|
+
feeMultiplier: Number(contractData.feeMultiplier) / 1e3,
|
|
16
|
+
pointsThreshold: Number(contractData.pointsThreshold) / 1e18, // Points in 1e18 precision
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
exports.convertFeeTier = convertFeeTier;
|
|
20
|
+
/**
|
|
21
|
+
* @dev Converts array of fee tiers from contract format
|
|
22
|
+
* @param contractDataArray Array of contract FeeTier structs
|
|
23
|
+
* @returns Array of normalized fee tiers
|
|
24
|
+
*/
|
|
25
|
+
const convertFeeTierArray = (contractDataArray) => {
|
|
26
|
+
return contractDataArray.map(exports.convertFeeTier);
|
|
27
|
+
};
|
|
28
|
+
exports.convertFeeTierArray = convertFeeTierArray;
|
|
29
|
+
/**
|
|
30
|
+
* @dev Converts contract trader info to SDK format
|
|
31
|
+
* @param contractData Contract TraderInfo struct
|
|
32
|
+
* @returns Normalized trader info
|
|
33
|
+
*/
|
|
34
|
+
const convertTraderInfo = (contractData) => {
|
|
35
|
+
return {
|
|
36
|
+
lastDayUpdated: Number(contractData.lastDayUpdated),
|
|
37
|
+
trailingPoints: Number(contractData.trailingPoints) / 1e18, // Points in 1e18 precision
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
exports.convertTraderInfo = convertTraderInfo;
|
|
41
|
+
/**
|
|
42
|
+
* @dev Converts contract trader enrollment to SDK format
|
|
43
|
+
* @param contractData Contract TraderEnrollment struct
|
|
44
|
+
* @returns Normalized trader enrollment
|
|
45
|
+
*/
|
|
46
|
+
const convertTraderEnrollment = (contractData) => {
|
|
47
|
+
return {
|
|
48
|
+
status: Number(contractData.status),
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
exports.convertTraderEnrollment = convertTraderEnrollment;
|
|
52
|
+
/**
|
|
53
|
+
* @dev Converts the complete fee tiers configuration from contract format
|
|
54
|
+
* @param tiers Array of fee tiers from contract
|
|
55
|
+
* @param groupVolumeMultipliers Array of group volume multipliers
|
|
56
|
+
* @param currentDay Current day from contract
|
|
57
|
+
* @returns Complete fee tiers configuration
|
|
58
|
+
*/
|
|
59
|
+
const convertFeeTiersConfig = (tiers, groupVolumeMultipliers, currentDay) => {
|
|
60
|
+
return {
|
|
61
|
+
tiers: (0, exports.convertFeeTierArray)(tiers),
|
|
62
|
+
groupVolumeMultipliers: groupVolumeMultipliers.map(m => Number(m) / 1e3),
|
|
63
|
+
currentDay: Number(currentDay),
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
exports.convertFeeTiersConfig = convertFeeTiersConfig;
|
|
67
|
+
/**
|
|
68
|
+
* @dev Converts trader's fee tier data from contract format
|
|
69
|
+
* @param traderInfo Trader info from contract
|
|
70
|
+
* @param traderDailyInfo Array of daily points info
|
|
71
|
+
* @param traderEnrollment Enrollment status from contract
|
|
72
|
+
* @returns Complete trader fee tier data
|
|
73
|
+
*/
|
|
74
|
+
const convertTraderFeeTiersData = (traderInfo, traderDailyInfo, traderEnrollment) => {
|
|
75
|
+
return {
|
|
76
|
+
traderInfo: (0, exports.convertTraderInfo)(traderInfo),
|
|
77
|
+
dailyPoints: traderDailyInfo.map(points => Number(points) / 1e18),
|
|
78
|
+
traderEnrollment: (0, exports.convertTraderEnrollment)(traderEnrollment),
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
exports.convertTraderFeeTiersData = convertTraderFeeTiersData;
|
|
@@ -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;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Converters for trading fee data between contract and SDK formats
|
|
3
|
+
*/
|
|
4
|
+
import { CounterTradeSettings } from "../../types";
|
|
5
|
+
import { GlobalTradeFeeParams } from "./types";
|
|
6
|
+
/**
|
|
7
|
+
* @dev Converts contract counter trade settings to SDK format
|
|
8
|
+
* @param feeRateMultiplier Fee rate multiplier from contract (1e3 precision)
|
|
9
|
+
* @param maxLeverage Max leverage from contract (1e3 precision)
|
|
10
|
+
* @returns Normalized counter trade settings
|
|
11
|
+
*/
|
|
12
|
+
export declare const convertCounterTradeSettings: (feeRateMultiplier: number, maxLeverage: number) => CounterTradeSettings;
|
|
13
|
+
/**
|
|
14
|
+
* @dev Converts array of counter trade fee rate multipliers from contract
|
|
15
|
+
* @param multipliers Array of fee rate multipliers (1e3 precision)
|
|
16
|
+
* @returns Array of normalized multipliers
|
|
17
|
+
*/
|
|
18
|
+
export declare const convertCounterTradeFeeRateMultipliers: (multipliers: number[]) => number[];
|
|
19
|
+
/**
|
|
20
|
+
* @dev Converts global trade fee params from contract to SDK format
|
|
21
|
+
* @param contractParams Global trade fee params from contract
|
|
22
|
+
* @returns Normalized global trade fee params
|
|
23
|
+
*/
|
|
24
|
+
export declare const convertGlobalTradeFeeParams: (contractParams: {
|
|
25
|
+
referralFeeP: number;
|
|
26
|
+
govFeeP: number;
|
|
27
|
+
triggerOrderFeeP: number;
|
|
28
|
+
gnsOtcFeeP: number;
|
|
29
|
+
gTokenFeeP: number;
|
|
30
|
+
}) => GlobalTradeFeeParams;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Converters for trading fee data between contract and SDK formats
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.convertGlobalTradeFeeParams = exports.convertCounterTradeFeeRateMultipliers = exports.convertCounterTradeSettings = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* @dev Converts contract counter trade settings to SDK format
|
|
9
|
+
* @param feeRateMultiplier Fee rate multiplier from contract (1e3 precision)
|
|
10
|
+
* @param maxLeverage Max leverage from contract (1e3 precision)
|
|
11
|
+
* @returns Normalized counter trade settings
|
|
12
|
+
*/
|
|
13
|
+
const convertCounterTradeSettings = (feeRateMultiplier, maxLeverage) => {
|
|
14
|
+
return {
|
|
15
|
+
feeRateMultiplier: feeRateMultiplier / 1000,
|
|
16
|
+
maxLeverage: maxLeverage / 1000, // 1e3 → float
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
exports.convertCounterTradeSettings = convertCounterTradeSettings;
|
|
20
|
+
/**
|
|
21
|
+
* @dev Converts array of counter trade fee rate multipliers from contract
|
|
22
|
+
* @param multipliers Array of fee rate multipliers (1e3 precision)
|
|
23
|
+
* @returns Array of normalized multipliers
|
|
24
|
+
*/
|
|
25
|
+
const convertCounterTradeFeeRateMultipliers = (multipliers) => {
|
|
26
|
+
return multipliers.map(m => m / 1000);
|
|
27
|
+
};
|
|
28
|
+
exports.convertCounterTradeFeeRateMultipliers = convertCounterTradeFeeRateMultipliers;
|
|
29
|
+
/**
|
|
30
|
+
* @dev Converts global trade fee params from contract to SDK format
|
|
31
|
+
* @param contractParams Global trade fee params from contract
|
|
32
|
+
* @returns Normalized global trade fee params
|
|
33
|
+
*/
|
|
34
|
+
const convertGlobalTradeFeeParams = (contractParams) => {
|
|
35
|
+
return {
|
|
36
|
+
referralFeeP: contractParams.referralFeeP / 1e10 / 100,
|
|
37
|
+
govFeeP: contractParams.govFeeP / 1e10 / 100,
|
|
38
|
+
triggerOrderFeeP: contractParams.triggerOrderFeeP / 1e10 / 100,
|
|
39
|
+
gnsOtcFeeP: contractParams.gnsOtcFeeP / 1e10 / 100,
|
|
40
|
+
gTokenFeeP: contractParams.gTokenFeeP / 1e10 / 100,
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
exports.convertGlobalTradeFeeParams = convertGlobalTradeFeeParams;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Trading fee calculations for opening and closing positions
|
|
3
|
+
*/
|
|
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";
|
|
9
|
+
import { GetTradeFeesContext, GetLiquidationFeesContext, GetClosingFeeContext, TradeFeesBreakdown, TradeHoldingFees } from "./types";
|
|
10
|
+
import { ContractsVersion } from "../../../contracts/types";
|
|
11
|
+
/**
|
|
12
|
+
* @dev Returns the total fee for a trade in collateral tokens
|
|
13
|
+
* @dev Mirrors the contract's getTotalTradeFeesCollateral function
|
|
14
|
+
* @param collateralIndex Collateral index (not used in calculation, for consistency)
|
|
15
|
+
* @param trader Trader address (for fee tier lookup)
|
|
16
|
+
* @param pairIndex Index of the trading pair
|
|
17
|
+
* @param positionSizeCollateral Position size in collateral tokens
|
|
18
|
+
* @param isCounterTrade Whether the trade is a counter trade
|
|
19
|
+
* @param context Context containing fee parameters and settings
|
|
20
|
+
* @returns Total fee in collateral tokens
|
|
21
|
+
*/
|
|
22
|
+
export declare const getTotalTradeFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, positionSizeCollateral: number, isCounterTrade: boolean, context: GetTradeFeesContext) => number;
|
|
23
|
+
/**
|
|
24
|
+
* @dev Returns the fee breakdown for a trade
|
|
25
|
+
* @dev Mirrors the contract's getTradeFeesCollateral function
|
|
26
|
+
*/
|
|
27
|
+
export declare const getTradeFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, positionSizeCollateral: number, isCounterTrade: boolean, context: GetTradeFeesContext) => TradeFeesBreakdown;
|
|
28
|
+
/**
|
|
29
|
+
* @dev Returns total liquidation fee for a trade in collateral tokens
|
|
30
|
+
* @dev Mirrors the contract's getTotalTradeLiqFeesCollateral function
|
|
31
|
+
*/
|
|
32
|
+
export declare const getTotalTradeLiqFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, collateralAmount: number, context: GetLiquidationFeesContext) => number;
|
|
33
|
+
/**
|
|
34
|
+
* @dev Legacy function for backward compatibility
|
|
35
|
+
* @deprecated Use getTotalTradeFeesCollateral instead
|
|
36
|
+
*/
|
|
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
|
+
initialAccFeesV1?: BorrowingFee.InitialAccFees;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* @dev Calculates total holding fees for a trade (funding + borrowing fees)
|
|
52
|
+
* @param trade The trade to calculate fees for
|
|
53
|
+
* @param tradeInfo Trade info containing contracts version
|
|
54
|
+
* @param tradeFeesData Trade fees data containing initial acc fees
|
|
55
|
+
* @param currentPairPrice Current pair price
|
|
56
|
+
* @param context Structured context with sub-contexts for each fee type
|
|
57
|
+
* @returns Object containing all holding fee components
|
|
58
|
+
*/
|
|
59
|
+
export declare const getTradePendingHoldingFeesCollateral: (trade: Trade, tradeInfo: TradeInfo, tradeFeesData: TradeFeesData, currentPairPrice: number, context: GetStructuredHoldingFeesContext) => TradeHoldingFees;
|
|
60
|
+
export * from "./types";
|
|
61
|
+
export * from "./converter";
|
|
62
|
+
export * from "./builder";
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Trading fee calculations for opening and closing positions
|
|
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
|
+
exports.getTradePendingHoldingFeesCollateral = exports.getClosingFee = exports.getTotalTradeLiqFeesCollateral = exports.getTradeFeesCollateral = exports.getTotalTradeFeesCollateral = void 0;
|
|
21
|
+
const borrowing_1 = require("../borrowing");
|
|
22
|
+
const borrowingV2_1 = require("../borrowingV2");
|
|
23
|
+
const fundingFees_1 = require("../fundingFees");
|
|
24
|
+
const tiers_1 = require("../tiers");
|
|
25
|
+
const types_1 = require("../../../contracts/types");
|
|
26
|
+
/**
|
|
27
|
+
* @dev Returns the total fee for a trade in collateral tokens
|
|
28
|
+
* @dev Mirrors the contract's getTotalTradeFeesCollateral function
|
|
29
|
+
* @param collateralIndex Collateral index (not used in calculation, for consistency)
|
|
30
|
+
* @param trader Trader address (for fee tier lookup)
|
|
31
|
+
* @param pairIndex Index of the trading pair
|
|
32
|
+
* @param positionSizeCollateral Position size in collateral tokens
|
|
33
|
+
* @param isCounterTrade Whether the trade is a counter trade
|
|
34
|
+
* @param context Context containing fee parameters and settings
|
|
35
|
+
* @returns Total fee in collateral tokens
|
|
36
|
+
*/
|
|
37
|
+
const getTotalTradeFeesCollateral = (collateralIndex, trader, pairIndex, positionSizeCollateral, isCounterTrade, context) => {
|
|
38
|
+
var _a;
|
|
39
|
+
const { fee, collateralPriceUsd } = context;
|
|
40
|
+
const { totalPositionSizeFeeP, minPositionSizeUsd } = fee;
|
|
41
|
+
// Get counter trade fee rate multiplier (default 1 = 1x)
|
|
42
|
+
const counterTradeFeeRateMultiplier = isCounterTrade && ((_a = context.counterTradeSettings) === null || _a === void 0 ? void 0 : _a[pairIndex])
|
|
43
|
+
? context.counterTradeSettings[pairIndex].feeRateMultiplier
|
|
44
|
+
: 1;
|
|
45
|
+
// Apply counter trade multiplier to position size
|
|
46
|
+
const adjustedPositionSizeCollateral = positionSizeCollateral * counterTradeFeeRateMultiplier;
|
|
47
|
+
// Calculate minimum position size in collateral
|
|
48
|
+
const minPositionSizeCollateral = minPositionSizeUsd / collateralPriceUsd;
|
|
49
|
+
// Use max of adjusted position size and minimum position size
|
|
50
|
+
const positionSizeBasis = Math.max(adjustedPositionSizeCollateral, minPositionSizeCollateral);
|
|
51
|
+
// Calculate raw fee
|
|
52
|
+
const rawFee = totalPositionSizeFeeP * positionSizeBasis;
|
|
53
|
+
// Apply trader fee tier if available
|
|
54
|
+
return (0, tiers_1.calculateFeeAmount)(trader, rawFee, context.traderFeeMultiplier);
|
|
55
|
+
};
|
|
56
|
+
exports.getTotalTradeFeesCollateral = getTotalTradeFeesCollateral;
|
|
57
|
+
/**
|
|
58
|
+
* @dev Returns the fee breakdown for a trade
|
|
59
|
+
* @dev Mirrors the contract's getTradeFeesCollateral function
|
|
60
|
+
*/
|
|
61
|
+
const getTradeFeesCollateral = (collateralIndex, trader, pairIndex, positionSizeCollateral, isCounterTrade, context) => {
|
|
62
|
+
const totalFees = (0, exports.getTotalTradeFeesCollateral)(collateralIndex, trader, pairIndex, positionSizeCollateral, isCounterTrade, context);
|
|
63
|
+
const { globalTradeFeeParams } = context;
|
|
64
|
+
const totalP = globalTradeFeeParams.referralFeeP +
|
|
65
|
+
globalTradeFeeParams.govFeeP +
|
|
66
|
+
globalTradeFeeParams.triggerOrderFeeP +
|
|
67
|
+
globalTradeFeeParams.gnsOtcFeeP +
|
|
68
|
+
globalTradeFeeParams.gTokenFeeP;
|
|
69
|
+
// Distribute fees proportionally
|
|
70
|
+
return {
|
|
71
|
+
referralFeeCollateral: (totalFees * globalTradeFeeParams.referralFeeP) / totalP,
|
|
72
|
+
govFeeCollateral: (totalFees * globalTradeFeeParams.govFeeP) / totalP,
|
|
73
|
+
triggerFeeCollateral: (totalFees * globalTradeFeeParams.triggerOrderFeeP) / totalP,
|
|
74
|
+
gnsOtcFeeCollateral: (totalFees * globalTradeFeeParams.gnsOtcFeeP) / totalP,
|
|
75
|
+
gTokenFeeCollateral: (totalFees * globalTradeFeeParams.gTokenFeeP) / totalP,
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
exports.getTradeFeesCollateral = getTradeFeesCollateral;
|
|
79
|
+
/**
|
|
80
|
+
* @dev Returns total liquidation fee for a trade in collateral tokens
|
|
81
|
+
* @dev Mirrors the contract's getTotalTradeLiqFeesCollateral function
|
|
82
|
+
*/
|
|
83
|
+
const getTotalTradeLiqFeesCollateral = (collateralIndex, trader, pairIndex, collateralAmount, context) => {
|
|
84
|
+
const { totalLiqCollateralFeeP } = context;
|
|
85
|
+
// Calculate raw liquidation fee
|
|
86
|
+
const rawFee = collateralAmount * totalLiqCollateralFeeP;
|
|
87
|
+
// Apply trader fee tier if available
|
|
88
|
+
return (0, tiers_1.calculateFeeAmount)(trader, rawFee, context.traderFeeMultiplier);
|
|
89
|
+
};
|
|
90
|
+
exports.getTotalTradeLiqFeesCollateral = getTotalTradeLiqFeesCollateral;
|
|
91
|
+
/**
|
|
92
|
+
* @dev Legacy function for backward compatibility
|
|
93
|
+
* @deprecated Use getTotalTradeFeesCollateral instead
|
|
94
|
+
*/
|
|
95
|
+
const getClosingFee = (collateralAmount, leverage, pairIndex, pairFee,
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
97
|
+
_collateralPriceUsd = 0, // Kept for backward compatibility
|
|
98
|
+
isCounterTrade = false, trader, context) => {
|
|
99
|
+
if (!pairFee || !context)
|
|
100
|
+
return 0;
|
|
101
|
+
const positionSizeCollateral = collateralAmount * leverage;
|
|
102
|
+
return (0, exports.getTotalTradeFeesCollateral)(0, // collateralIndex not used
|
|
103
|
+
trader || "", pairIndex, positionSizeCollateral, isCounterTrade, context);
|
|
104
|
+
};
|
|
105
|
+
exports.getClosingFee = getClosingFee;
|
|
106
|
+
/**
|
|
107
|
+
* @dev Calculates total holding fees for a trade (funding + borrowing fees)
|
|
108
|
+
* @param trade The trade to calculate fees for
|
|
109
|
+
* @param tradeInfo Trade info containing contracts version
|
|
110
|
+
* @param tradeFeesData Trade fees data containing initial acc fees
|
|
111
|
+
* @param currentPairPrice Current pair price
|
|
112
|
+
* @param context Structured context with sub-contexts for each fee type
|
|
113
|
+
* @returns Object containing all holding fee components
|
|
114
|
+
*/
|
|
115
|
+
const getTradePendingHoldingFeesCollateral = (trade, tradeInfo, tradeFeesData, currentPairPrice, context) => {
|
|
116
|
+
const positionSizeCollateral = trade.collateralAmount * trade.leverage;
|
|
117
|
+
// Calculate funding fees (v10+ only)
|
|
118
|
+
let fundingFeeCollateral = 0;
|
|
119
|
+
if (context.contractsVersion >= types_1.ContractsVersion.V10 &&
|
|
120
|
+
context.funding &&
|
|
121
|
+
tradeFeesData.initialAccFundingFeeP !== undefined) {
|
|
122
|
+
fundingFeeCollateral = (0, fundingFees_1.getTradeFundingFeesCollateral)(trade, tradeInfo, tradeFeesData, currentPairPrice, Object.assign(Object.assign({}, context.funding), { currentTimestamp: context.currentTimestamp }));
|
|
123
|
+
}
|
|
124
|
+
// Calculate borrowing fees v2 (v10+ only)
|
|
125
|
+
let borrowingFeeCollateral = 0;
|
|
126
|
+
if (context.contractsVersion >= types_1.ContractsVersion.V10 &&
|
|
127
|
+
context.borrowingV2 &&
|
|
128
|
+
tradeFeesData.initialAccBorrowingFeeP !== undefined) {
|
|
129
|
+
borrowingFeeCollateral = (0, borrowingV2_1.getTradeBorrowingFeesCollateral)({
|
|
130
|
+
positionSizeCollateral,
|
|
131
|
+
openPrice: trade.openPrice,
|
|
132
|
+
currentPairPrice,
|
|
133
|
+
initialAccBorrowingFeeP: tradeFeesData.initialAccBorrowingFeeP,
|
|
134
|
+
currentTimestamp: context.currentTimestamp,
|
|
135
|
+
}, context.borrowingV2);
|
|
136
|
+
}
|
|
137
|
+
// Calculate v1 borrowing fees (some markets use v1 indefinitely)
|
|
138
|
+
let borrowingFeeCollateral_old = 0;
|
|
139
|
+
if (context.borrowingV1 && context.initialAccFeesV1) {
|
|
140
|
+
borrowingFeeCollateral_old = (0, borrowing_1.getBorrowingFee)(positionSizeCollateral, trade.pairIndex, trade.long, context.initialAccFeesV1, context.borrowingV1);
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
fundingFeeCollateral,
|
|
144
|
+
borrowingFeeCollateral,
|
|
145
|
+
borrowingFeeCollateral_old,
|
|
146
|
+
totalFeeCollateral: fundingFeeCollateral +
|
|
147
|
+
borrowingFeeCollateral +
|
|
148
|
+
borrowingFeeCollateral_old,
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
exports.getTradePendingHoldingFeesCollateral = getTradePendingHoldingFeesCollateral;
|
|
152
|
+
// Export types
|
|
153
|
+
__exportStar(require("./types"), exports);
|
|
154
|
+
__exportStar(require("./converter"), exports);
|
|
155
|
+
__exportStar(require("./builder"), exports);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Types for trading fee calculations (open/close position fees)
|
|
3
|
+
*/
|
|
4
|
+
import { Fee, CounterTradeSettings, GlobalTradeFeeParams } from "../../types";
|
|
5
|
+
/**
|
|
6
|
+
* @dev Breakdown of trading fees into components
|
|
7
|
+
*/
|
|
8
|
+
export type TradeFeesBreakdown = {
|
|
9
|
+
referralFeeCollateral: number;
|
|
10
|
+
govFeeCollateral: number;
|
|
11
|
+
triggerFeeCollateral: number;
|
|
12
|
+
gnsOtcFeeCollateral: number;
|
|
13
|
+
gTokenFeeCollateral: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @dev Context for calculating trading fees
|
|
17
|
+
*/
|
|
18
|
+
export type GetTradeFeesContext = {
|
|
19
|
+
fee: Fee;
|
|
20
|
+
collateralPriceUsd: number;
|
|
21
|
+
globalTradeFeeParams: GlobalTradeFeeParams;
|
|
22
|
+
counterTradeSettings?: {
|
|
23
|
+
[pairIndex: number]: CounterTradeSettings;
|
|
24
|
+
};
|
|
25
|
+
traderFeeMultiplier?: number;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @dev Context for calculating liquidation fees
|
|
29
|
+
*/
|
|
30
|
+
export type GetLiquidationFeesContext = {
|
|
31
|
+
totalLiqCollateralFeeP: number;
|
|
32
|
+
globalTradeFeeParams: GlobalTradeFeeParams;
|
|
33
|
+
traderFeeMultiplier?: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* @dev Legacy support
|
|
37
|
+
*/
|
|
38
|
+
export type GetClosingFeeContext = GetTradeFeesContext;
|
|
39
|
+
/**
|
|
40
|
+
* @dev Holding fees breakdown (funding + borrowing)
|
|
41
|
+
*/
|
|
42
|
+
export type TradeHoldingFees = {
|
|
43
|
+
fundingFeeCollateral: number;
|
|
44
|
+
borrowingFeeCollateral: number;
|
|
45
|
+
borrowingFeeCollateral_old: number;
|
|
46
|
+
totalFeeCollateral: number;
|
|
47
|
+
};
|
|
48
|
+
export type { GlobalTradeFeeParams };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Liquidation price context builder module
|
|
3
|
+
* @dev Provides builder functions for creating liquidation price contexts
|
|
4
|
+
*/
|
|
5
|
+
import { GlobalTradingVariablesType } from "../../backend/tradingVariables/types";
|
|
6
|
+
import { TradeContainer, UserPriceImpact } from "../types";
|
|
7
|
+
import { GetLiquidationPriceContext } from "./types";
|
|
8
|
+
/**
|
|
9
|
+
* @dev Builds a complete context for liquidation price calculations
|
|
10
|
+
* @param globalTradingVariables The transformed global trading variables from backend
|
|
11
|
+
* @param tradeContainer Full trade container with trade, tradeInfo, fees data and liquidation params
|
|
12
|
+
* @param additionalParams Additional parameters not available in trading variables
|
|
13
|
+
* @returns Complete context ready for getLiquidationPrice
|
|
14
|
+
*/
|
|
15
|
+
export declare const buildLiquidationPriceContext: (globalTradingVariables: GlobalTradingVariablesType, tradeContainer: TradeContainer, additionalParams: {
|
|
16
|
+
currentBlock: number;
|
|
17
|
+
currentTimestamp: number;
|
|
18
|
+
currentPairPrice: number;
|
|
19
|
+
spreadP: number;
|
|
20
|
+
traderFeeMultiplier?: number;
|
|
21
|
+
additionalFeeCollateral?: number;
|
|
22
|
+
partialCloseMultiplier?: number;
|
|
23
|
+
beforeOpened?: boolean;
|
|
24
|
+
userPriceImpact?: UserPriceImpact;
|
|
25
|
+
}) => GetLiquidationPriceContext;
|