@gainsnetwork/sdk 0.2.67-rc7 → 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 +1 -1
- package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +1911 -0
- package/lib/contracts/types/generated/GFarmTradingStorageV5.js +2 -0
- package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +1067 -0
- package/lib/contracts/types/generated/GNSBorrowingFees.js +2 -0
- package/lib/contracts/types/generated/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,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Types for borrowing v2 fees system (simplified rate-based model)
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* @dev Borrowing fee parameters for a specific pair/collateral combination
|
|
6
|
+
*/
|
|
7
|
+
export type BorrowingFeeParams = {
|
|
8
|
+
/**
|
|
9
|
+
* @dev Borrowing rate % per second
|
|
10
|
+
* @dev Raw contract value divided by 1e10
|
|
11
|
+
* @dev Max: ~0.0000317097 => 1,000% APR
|
|
12
|
+
*/
|
|
13
|
+
borrowingRatePerSecondP: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @dev Accumulated borrowing fee data for a specific pair/collateral combination
|
|
17
|
+
*/
|
|
18
|
+
export type PairBorrowingFeeData = {
|
|
19
|
+
/**
|
|
20
|
+
* @dev Accumulated borrowing fees % weighted by pair price
|
|
21
|
+
* @dev Unit: fee collateral per 100 units of OI in pair amount
|
|
22
|
+
*/
|
|
23
|
+
accBorrowingFeeP: number;
|
|
24
|
+
/**
|
|
25
|
+
* @dev Timestamp of last accumulated borrowing fees update
|
|
26
|
+
*/
|
|
27
|
+
lastBorrowingUpdateTs: number;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* @dev Trade-specific borrowing fee data stored when position is opened
|
|
31
|
+
*/
|
|
32
|
+
export type TradeInitialAccFees = {
|
|
33
|
+
/**
|
|
34
|
+
* @dev Initial accumulated borrowing fee when trade was opened (normalized float)
|
|
35
|
+
* @dev Raw contract value divided by 1e20
|
|
36
|
+
* @dev Used to calculate how much borrowing fees the trade owes
|
|
37
|
+
*/
|
|
38
|
+
initialAccBorrowingFeeP: number;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @dev Context required for borrowing v2 fee calculations
|
|
42
|
+
* @dev Context is already scoped to a specific collateral
|
|
43
|
+
*/
|
|
44
|
+
export type GetBorrowingFeeV2Context = {
|
|
45
|
+
/**
|
|
46
|
+
* @dev Current timestamp (defaults to Date.now() / 1000)
|
|
47
|
+
*/
|
|
48
|
+
currentTimestamp?: number;
|
|
49
|
+
/**
|
|
50
|
+
* @dev Borrowing fee parameters for pairs
|
|
51
|
+
* @dev Indexed by: params[pairIndex]
|
|
52
|
+
*/
|
|
53
|
+
borrowingParams: Record<number, BorrowingFeeParams>;
|
|
54
|
+
/**
|
|
55
|
+
* @dev Borrowing fee data for pairs
|
|
56
|
+
* @dev Indexed by: data[pairIndex]
|
|
57
|
+
*/
|
|
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;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* @dev Input for calculating pending borrowing fees for a pair
|
|
79
|
+
*/
|
|
80
|
+
export type PairBorrowingFeeInput = {
|
|
81
|
+
pairIndex: number;
|
|
82
|
+
currentPairPrice: number;
|
|
83
|
+
currentTimestamp?: number;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* @dev Input for calculating borrowing fees for a specific trade
|
|
87
|
+
*/
|
|
88
|
+
export type TradeBorrowingFeeInput = {
|
|
89
|
+
positionSizeCollateral: number;
|
|
90
|
+
openPrice: number;
|
|
91
|
+
pairIndex: number;
|
|
92
|
+
currentPairPrice: number;
|
|
93
|
+
initialAccBorrowingFeeP: number;
|
|
94
|
+
currentTimestamp?: number;
|
|
95
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Converters for fee data between contract and SDK formats
|
|
3
|
+
*/
|
|
4
|
+
import { IFundingFees } from "../../contracts/types/generated/GNSMultiCollatDiamond";
|
|
5
|
+
import { TradeFeesData, UiRealizedPnlData } from "../types";
|
|
6
|
+
import { CollateralConfig } from "../../markets/collateral/types";
|
|
7
|
+
/**
|
|
8
|
+
* @dev Converts contract TradeFeesData to SDK format
|
|
9
|
+
* @param data Trade fees data from contract
|
|
10
|
+
* @param collateralConfig Config for the collateral (contains decimals)
|
|
11
|
+
* @returns Normalized trade fees data
|
|
12
|
+
*/
|
|
13
|
+
export declare const convertTradeFeesData: (data: IFundingFees.TradeFeesDataStructOutput, collateralConfig: CollateralConfig) => TradeFeesData;
|
|
14
|
+
/**
|
|
15
|
+
* @dev Converts array of TradeFeesData from contract
|
|
16
|
+
* @param dataArray Array of trade fees data
|
|
17
|
+
* @param collateralConfig Config for the collateral
|
|
18
|
+
* @returns Array of normalized trade fees data
|
|
19
|
+
*/
|
|
20
|
+
export declare const convertTradeFeesDataArray: (dataArray: IFundingFees.TradeFeesDataStructOutput[], collateralConfig: CollateralConfig) => TradeFeesData[];
|
|
21
|
+
/**
|
|
22
|
+
* @dev Converts contract UiRealizedPnlData to SDK format
|
|
23
|
+
* @param data UI realized PnL data from contract
|
|
24
|
+
* @param collateralConfig Config for the collateral (contains decimals)
|
|
25
|
+
* @returns Normalized UI realized PnL data
|
|
26
|
+
*/
|
|
27
|
+
export declare const convertUiRealizedPnlData: (data: IFundingFees.UiRealizedPnlDataStructOutput, collateralConfig: CollateralConfig) => UiRealizedPnlData;
|
|
28
|
+
/**
|
|
29
|
+
* @dev Converts array of UiRealizedPnlData from contract
|
|
30
|
+
* @param dataArray Array of UI realized PnL data
|
|
31
|
+
* @param collateralConfig Config for the collateral
|
|
32
|
+
* @returns Array of normalized UI realized PnL data
|
|
33
|
+
*/
|
|
34
|
+
export declare const convertUiRealizedPnlDataArray: (dataArray: IFundingFees.UiRealizedPnlDataStructOutput[], collateralConfig: CollateralConfig) => UiRealizedPnlData[];
|
|
35
|
+
/**
|
|
36
|
+
* @dev Converts TradeFeesData to contract format (for encoding)
|
|
37
|
+
* @param data SDK trade fees data
|
|
38
|
+
* @param collateralConfig Config for the collateral
|
|
39
|
+
* @returns Contract-formatted trade fees data
|
|
40
|
+
*/
|
|
41
|
+
export declare const encodeTradeFeesData: (data: TradeFeesData, collateralConfig: CollateralConfig) => IFundingFees.TradeFeesDataStruct;
|
|
42
|
+
/**
|
|
43
|
+
* @dev Converts UiRealizedPnlData to contract format (for encoding)
|
|
44
|
+
* @param data SDK UI realized PnL data
|
|
45
|
+
* @param collateralConfig Config for the collateral
|
|
46
|
+
* @returns Contract-formatted UI realized PnL data
|
|
47
|
+
*/
|
|
48
|
+
export declare const encodeUiRealizedPnlData: (data: UiRealizedPnlData, collateralConfig: CollateralConfig) => IFundingFees.UiRealizedPnlDataStruct;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Converters for fee data between contract and SDK formats
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.encodeUiRealizedPnlData = exports.encodeTradeFeesData = exports.convertUiRealizedPnlDataArray = exports.convertUiRealizedPnlData = exports.convertTradeFeesDataArray = exports.convertTradeFeesData = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* @dev Converts contract TradeFeesData to SDK format
|
|
9
|
+
* @param data Trade fees data from contract
|
|
10
|
+
* @param collateralConfig Config for the collateral (contains decimals)
|
|
11
|
+
* @returns Normalized trade fees data
|
|
12
|
+
*/
|
|
13
|
+
const convertTradeFeesData = (data, collateralConfig) => {
|
|
14
|
+
const decimals = collateralConfig.decimals || 18;
|
|
15
|
+
return {
|
|
16
|
+
realizedTradingFeesCollateral: parseFloat(data.realizedTradingFeesCollateral.toString()) /
|
|
17
|
+
Math.pow(10, decimals),
|
|
18
|
+
realizedPnlCollateral: parseFloat(data.realizedPnlCollateral.toString()) / Math.pow(10, decimals),
|
|
19
|
+
manuallyRealizedNegativePnlCollateral: parseFloat(data.manuallyRealizedNegativePnlCollateral.toString()) /
|
|
20
|
+
Math.pow(10, decimals),
|
|
21
|
+
alreadyTransferredNegativePnlCollateral: parseFloat(data.alreadyTransferredNegativePnlCollateral.toString()) /
|
|
22
|
+
Math.pow(10, decimals),
|
|
23
|
+
virtualAvailableCollateralInDiamond: parseFloat(data.virtualAvailableCollateralInDiamond.toString()) /
|
|
24
|
+
Math.pow(10, decimals),
|
|
25
|
+
initialAccFundingFeeP: parseFloat(data.initialAccFundingFeeP.toString()) / 1e10,
|
|
26
|
+
initialAccBorrowingFeeP: parseFloat(data.initialAccBorrowingFeeP.toString()) / 1e10,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
exports.convertTradeFeesData = convertTradeFeesData;
|
|
30
|
+
/**
|
|
31
|
+
* @dev Converts array of TradeFeesData from contract
|
|
32
|
+
* @param dataArray Array of trade fees data
|
|
33
|
+
* @param collateralConfig Config for the collateral
|
|
34
|
+
* @returns Array of normalized trade fees data
|
|
35
|
+
*/
|
|
36
|
+
const convertTradeFeesDataArray = (dataArray, collateralConfig) => {
|
|
37
|
+
return dataArray.map(data => (0, exports.convertTradeFeesData)(data, collateralConfig));
|
|
38
|
+
};
|
|
39
|
+
exports.convertTradeFeesDataArray = convertTradeFeesDataArray;
|
|
40
|
+
/**
|
|
41
|
+
* @dev Converts contract UiRealizedPnlData to SDK format
|
|
42
|
+
* @param data UI realized PnL data from contract
|
|
43
|
+
* @param collateralConfig Config for the collateral (contains decimals)
|
|
44
|
+
* @returns Normalized UI realized PnL data
|
|
45
|
+
*/
|
|
46
|
+
const convertUiRealizedPnlData = (data, collateralConfig) => {
|
|
47
|
+
const decimals = collateralConfig.decimals || 18;
|
|
48
|
+
return {
|
|
49
|
+
realizedTradingFeesCollateral: parseFloat(data.realizedTradingFeesCollateral.toString()) /
|
|
50
|
+
Math.pow(10, decimals),
|
|
51
|
+
realizedOldBorrowingFeesCollateral: parseFloat(data.realizedOldBorrowingFeesCollateral.toString()) /
|
|
52
|
+
Math.pow(10, decimals),
|
|
53
|
+
realizedNewBorrowingFeesCollateral: parseFloat(data.realizedNewBorrowingFeesCollateral.toString()) /
|
|
54
|
+
Math.pow(10, decimals),
|
|
55
|
+
realizedFundingFeesCollateral: parseFloat(data.realizedFundingFeesCollateral.toString()) /
|
|
56
|
+
Math.pow(10, decimals),
|
|
57
|
+
realizedPnlPartialCloseCollateral: parseFloat(data.realizedPnlPartialCloseCollateral.toString()) /
|
|
58
|
+
Math.pow(10, decimals),
|
|
59
|
+
pnlWithdrawnCollateral: parseFloat(data.pnlWithdrawnCollateral.toString()) / Math.pow(10, decimals),
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
exports.convertUiRealizedPnlData = convertUiRealizedPnlData;
|
|
63
|
+
/**
|
|
64
|
+
* @dev Converts array of UiRealizedPnlData from contract
|
|
65
|
+
* @param dataArray Array of UI realized PnL data
|
|
66
|
+
* @param collateralConfig Config for the collateral
|
|
67
|
+
* @returns Array of normalized UI realized PnL data
|
|
68
|
+
*/
|
|
69
|
+
const convertUiRealizedPnlDataArray = (dataArray, collateralConfig) => {
|
|
70
|
+
return dataArray.map(data => (0, exports.convertUiRealizedPnlData)(data, collateralConfig));
|
|
71
|
+
};
|
|
72
|
+
exports.convertUiRealizedPnlDataArray = convertUiRealizedPnlDataArray;
|
|
73
|
+
/**
|
|
74
|
+
* @dev Converts TradeFeesData to contract format (for encoding)
|
|
75
|
+
* @param data SDK trade fees data
|
|
76
|
+
* @param collateralConfig Config for the collateral
|
|
77
|
+
* @returns Contract-formatted trade fees data
|
|
78
|
+
*/
|
|
79
|
+
const encodeTradeFeesData = (data, collateralConfig) => {
|
|
80
|
+
const decimals = collateralConfig.decimals || 18;
|
|
81
|
+
return {
|
|
82
|
+
realizedTradingFeesCollateral: Math.round(data.realizedTradingFeesCollateral * Math.pow(10, decimals)),
|
|
83
|
+
realizedPnlCollateral: Math.round(data.realizedPnlCollateral * Math.pow(10, decimals)),
|
|
84
|
+
manuallyRealizedNegativePnlCollateral: Math.round(data.manuallyRealizedNegativePnlCollateral * Math.pow(10, decimals)),
|
|
85
|
+
alreadyTransferredNegativePnlCollateral: Math.round(data.alreadyTransferredNegativePnlCollateral * Math.pow(10, decimals)),
|
|
86
|
+
virtualAvailableCollateralInDiamond: Math.round(data.virtualAvailableCollateralInDiamond * Math.pow(10, decimals)),
|
|
87
|
+
__placeholder: 0,
|
|
88
|
+
initialAccFundingFeeP: Math.round(data.initialAccFundingFeeP * 1e10),
|
|
89
|
+
initialAccBorrowingFeeP: Math.round(data.initialAccBorrowingFeeP * 1e10),
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
exports.encodeTradeFeesData = encodeTradeFeesData;
|
|
93
|
+
/**
|
|
94
|
+
* @dev Converts UiRealizedPnlData to contract format (for encoding)
|
|
95
|
+
* @param data SDK UI realized PnL data
|
|
96
|
+
* @param collateralConfig Config for the collateral
|
|
97
|
+
* @returns Contract-formatted UI realized PnL data
|
|
98
|
+
*/
|
|
99
|
+
const encodeUiRealizedPnlData = (data, collateralConfig) => {
|
|
100
|
+
const decimals = collateralConfig.decimals || 18;
|
|
101
|
+
return {
|
|
102
|
+
realizedTradingFeesCollateral: Math.round(data.realizedTradingFeesCollateral * Math.pow(10, decimals)),
|
|
103
|
+
realizedOldBorrowingFeesCollateral: Math.round(data.realizedOldBorrowingFeesCollateral * Math.pow(10, decimals)),
|
|
104
|
+
realizedNewBorrowingFeesCollateral: Math.round(data.realizedNewBorrowingFeesCollateral * Math.pow(10, decimals)),
|
|
105
|
+
realizedFundingFeesCollateral: Math.round(data.realizedFundingFeesCollateral * Math.pow(10, decimals)),
|
|
106
|
+
realizedPnlPartialCloseCollateral: Math.round(data.realizedPnlPartialCloseCollateral * Math.pow(10, decimals)),
|
|
107
|
+
pnlWithdrawnCollateral: Math.round(data.pnlWithdrawnCollateral * Math.pow(10, decimals)),
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
exports.encodeUiRealizedPnlData = encodeUiRealizedPnlData;
|
|
@@ -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;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @dev Converters for funding fees data between contract and SDK formats
|
|
3
|
+
* @dev All BigNumber values are normalized to floats with appropriate precision
|
|
4
|
+
*/
|
|
5
|
+
import { IFundingFees } from "../../../contracts/types/generated/GNSMultiCollatDiamond";
|
|
6
|
+
import { FundingFeeParams, PairFundingFeeData, PairGlobalParams, TradeInitialAccFundingFees, GetFundingFeeContext } from "./types";
|
|
7
|
+
export declare const FUNDING_FEES_PRECISION: {
|
|
8
|
+
SKEW_COEFFICIENT_PER_YEAR: number;
|
|
9
|
+
ABSOLUTE_VELOCITY_PER_YEAR_CAP: number;
|
|
10
|
+
ABSOLUTE_RATE_PER_SECOND_CAP: number;
|
|
11
|
+
ACC_FUNDING_FEE_P: number;
|
|
12
|
+
FUNDING_RATE_PER_SECOND_P: number;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* @dev Converts contract funding fee params to SDK format
|
|
16
|
+
* @param contractParams Contract funding fee params struct
|
|
17
|
+
* @returns Normalized funding fee params
|
|
18
|
+
*/
|
|
19
|
+
export declare const convertFundingFeeParams: (contractParams: IFundingFees.FundingFeeParamsStruct) => FundingFeeParams;
|
|
20
|
+
/**
|
|
21
|
+
* @dev Converts array of contract funding fee params to SDK format
|
|
22
|
+
* @param contractParamsArray Array of contract funding fee params
|
|
23
|
+
* @returns Array of normalized funding fee params
|
|
24
|
+
*/
|
|
25
|
+
export declare const convertFundingFeeParamsArray: (contractParamsArray: IFundingFees.FundingFeeParamsStruct[]) => FundingFeeParams[];
|
|
26
|
+
/**
|
|
27
|
+
* @dev Converts contract pair funding fee data to SDK format
|
|
28
|
+
* @param contractData Contract pair funding fee data struct
|
|
29
|
+
* @returns Normalized pair funding fee data
|
|
30
|
+
*/
|
|
31
|
+
export declare const convertPairFundingFeeData: (contractData: IFundingFees.PairFundingFeeDataStruct) => PairFundingFeeData;
|
|
32
|
+
/**
|
|
33
|
+
* @dev Converts array of contract pair funding fee data to SDK format
|
|
34
|
+
* @param contractDataArray Array of contract pair funding fee data
|
|
35
|
+
* @returns Array of normalized pair funding fee data
|
|
36
|
+
*/
|
|
37
|
+
export declare const convertPairFundingFeeDataArray: (contractDataArray: IFundingFees.PairFundingFeeDataStruct[]) => PairFundingFeeData[];
|
|
38
|
+
/**
|
|
39
|
+
* @dev Converts contract pair global params to SDK format
|
|
40
|
+
* @param contractParams Contract pair global params struct
|
|
41
|
+
* @returns Normalized pair global params
|
|
42
|
+
*/
|
|
43
|
+
export declare const convertPairGlobalParams: (contractParams: IFundingFees.PairGlobalParamsStruct) => PairGlobalParams;
|
|
44
|
+
/**
|
|
45
|
+
* @dev Converts array of contract pair global params to SDK format
|
|
46
|
+
* @param contractParamsArray Array of contract pair global params
|
|
47
|
+
* @returns Array of normalized pair global params
|
|
48
|
+
*/
|
|
49
|
+
export declare const convertPairGlobalParamsArray: (contractParamsArray: IFundingFees.PairGlobalParamsStruct[]) => PairGlobalParams[];
|
|
50
|
+
/**
|
|
51
|
+
* @dev Converts contract trade initial acc funding fees to SDK format
|
|
52
|
+
* @param contractFees Contract trade fees data (only funding fee part)
|
|
53
|
+
* @returns Normalized trade initial acc funding fees
|
|
54
|
+
*/
|
|
55
|
+
export declare const convertTradeInitialAccFundingFees: (contractFees: {
|
|
56
|
+
initialAccFundingFeeP: bigint | number | string;
|
|
57
|
+
}) => TradeInitialAccFundingFees;
|
|
58
|
+
/**
|
|
59
|
+
* @dev Creates a funding fee context from arrays of data
|
|
60
|
+
* @param collateralIndices Array of collateral indices
|
|
61
|
+
* @param pairIndices Array of pair indices
|
|
62
|
+
* @param params Array of funding fee parameters
|
|
63
|
+
* @param data Array of pair funding fee data
|
|
64
|
+
* @param globalParams Optional array of global parameters
|
|
65
|
+
* @param currentTimestamp Optional current timestamp
|
|
66
|
+
* @returns Complete funding fee context
|
|
67
|
+
*/
|
|
68
|
+
export declare const createFundingFeeContext: (collateralIndices: number[], pairIndices: number[], params: FundingFeeParams[], data: PairFundingFeeData[], globalParams?: PairGlobalParams[], currentTimestamp?: number) => GetFundingFeeContext;
|
|
69
|
+
/**
|
|
70
|
+
* @dev Validates funding rate is within allowed bounds
|
|
71
|
+
* @param absoluteRatePerSecondCap Rate cap (normalized)
|
|
72
|
+
* @returns Whether the rate is valid
|
|
73
|
+
*/
|
|
74
|
+
export declare const isValidFundingRate: (absoluteRatePerSecondCap: number) => boolean;
|
|
75
|
+
/**
|
|
76
|
+
* @dev Converts funding rate per second to APR
|
|
77
|
+
* @param ratePerSecondP Funding rate per second (normalized)
|
|
78
|
+
* @returns APR as percentage
|
|
79
|
+
*/
|
|
80
|
+
export declare const fundingRateToAPR: (ratePerSecondP: number) => number;
|
|
81
|
+
/**
|
|
82
|
+
* @dev Converts APR to funding rate per second
|
|
83
|
+
* @param apr APR as percentage
|
|
84
|
+
* @returns Funding rate per second (normalized)
|
|
85
|
+
*/
|
|
86
|
+
export declare const aprToFundingRate: (apr: number) => number;
|
|
87
|
+
/**
|
|
88
|
+
* @dev Calculates velocity per year from skew coefficient
|
|
89
|
+
* @param skewRatio Current skew ratio (net exposure / total OI)
|
|
90
|
+
* @param skewCoefficientPerYear Skew coefficient per year (normalized)
|
|
91
|
+
* @returns Velocity per year
|
|
92
|
+
*/
|
|
93
|
+
export declare const calculateVelocityFromSkew: (skewRatio: number, skewCoefficientPerYear: number) => number;
|
|
94
|
+
/**
|
|
95
|
+
* @dev Creates a GetFundingFeeContext from arrays (alias for consistency)
|
|
96
|
+
* @param collateralIndices Array of collateral indices
|
|
97
|
+
* @param pairIndices Array of pair indices
|
|
98
|
+
* @param params Array of funding fee parameters
|
|
99
|
+
* @param data Array of pair funding fee data
|
|
100
|
+
* @returns Complete funding fee context
|
|
101
|
+
*/
|
|
102
|
+
export declare const createGetFundingFeeContext: (collateralIndices: number[], pairIndices: number[], params: FundingFeeParams[], data: PairFundingFeeData[]) => GetFundingFeeContext;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @dev Converters for funding fees 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.createGetFundingFeeContext = exports.calculateVelocityFromSkew = exports.aprToFundingRate = exports.fundingRateToAPR = exports.isValidFundingRate = exports.createFundingFeeContext = exports.convertTradeInitialAccFundingFees = exports.convertPairGlobalParamsArray = exports.convertPairGlobalParams = exports.convertPairFundingFeeDataArray = exports.convertPairFundingFeeData = exports.convertFundingFeeParamsArray = exports.convertFundingFeeParams = exports.FUNDING_FEES_PRECISION = void 0;
|
|
8
|
+
// Precision constants from contract
|
|
9
|
+
exports.FUNDING_FEES_PRECISION = {
|
|
10
|
+
SKEW_COEFFICIENT_PER_YEAR: 1e26,
|
|
11
|
+
ABSOLUTE_VELOCITY_PER_YEAR_CAP: 1e7,
|
|
12
|
+
ABSOLUTE_RATE_PER_SECOND_CAP: 1e10,
|
|
13
|
+
ACC_FUNDING_FEE_P: 1e20,
|
|
14
|
+
FUNDING_RATE_PER_SECOND_P: 1e18, // Funding rate per second precision
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @dev Converts contract funding fee params to SDK format
|
|
18
|
+
* @param contractParams Contract funding fee params struct
|
|
19
|
+
* @returns Normalized funding fee params
|
|
20
|
+
*/
|
|
21
|
+
const convertFundingFeeParams = (contractParams) => {
|
|
22
|
+
return {
|
|
23
|
+
skewCoefficientPerYear: Number(contractParams.skewCoefficientPerYear) /
|
|
24
|
+
exports.FUNDING_FEES_PRECISION.SKEW_COEFFICIENT_PER_YEAR,
|
|
25
|
+
absoluteVelocityPerYearCap: Number(contractParams.absoluteVelocityPerYearCap) /
|
|
26
|
+
exports.FUNDING_FEES_PRECISION.ABSOLUTE_VELOCITY_PER_YEAR_CAP,
|
|
27
|
+
absoluteRatePerSecondCap: Number(contractParams.absoluteRatePerSecondCap) /
|
|
28
|
+
exports.FUNDING_FEES_PRECISION.ABSOLUTE_RATE_PER_SECOND_CAP,
|
|
29
|
+
thetaThresholdUsd: Number(contractParams.thetaThresholdUsd),
|
|
30
|
+
fundingFeesEnabled: Boolean(contractParams.fundingFeesEnabled),
|
|
31
|
+
aprMultiplierEnabled: Boolean(contractParams.aprMultiplierEnabled),
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
exports.convertFundingFeeParams = convertFundingFeeParams;
|
|
35
|
+
/**
|
|
36
|
+
* @dev Converts array of contract funding fee params to SDK format
|
|
37
|
+
* @param contractParamsArray Array of contract funding fee params
|
|
38
|
+
* @returns Array of normalized funding fee params
|
|
39
|
+
*/
|
|
40
|
+
const convertFundingFeeParamsArray = (contractParamsArray) => {
|
|
41
|
+
return contractParamsArray.map(exports.convertFundingFeeParams);
|
|
42
|
+
};
|
|
43
|
+
exports.convertFundingFeeParamsArray = convertFundingFeeParamsArray;
|
|
44
|
+
/**
|
|
45
|
+
* @dev Converts contract pair funding fee data to SDK format
|
|
46
|
+
* @param contractData Contract pair funding fee data struct
|
|
47
|
+
* @returns Normalized pair funding fee data
|
|
48
|
+
*/
|
|
49
|
+
const convertPairFundingFeeData = (contractData) => {
|
|
50
|
+
return {
|
|
51
|
+
accFundingFeeLongP: Number(contractData.accFundingFeeLongP) /
|
|
52
|
+
exports.FUNDING_FEES_PRECISION.ACC_FUNDING_FEE_P,
|
|
53
|
+
accFundingFeeShortP: Number(contractData.accFundingFeeShortP) /
|
|
54
|
+
exports.FUNDING_FEES_PRECISION.ACC_FUNDING_FEE_P,
|
|
55
|
+
lastFundingRatePerSecondP: Number(contractData.lastFundingRatePerSecondP) /
|
|
56
|
+
exports.FUNDING_FEES_PRECISION.FUNDING_RATE_PER_SECOND_P,
|
|
57
|
+
lastFundingUpdateTs: Number(contractData.lastFundingUpdateTs),
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
exports.convertPairFundingFeeData = convertPairFundingFeeData;
|
|
61
|
+
/**
|
|
62
|
+
* @dev Converts array of contract pair funding fee data to SDK format
|
|
63
|
+
* @param contractDataArray Array of contract pair funding fee data
|
|
64
|
+
* @returns Array of normalized pair funding fee data
|
|
65
|
+
*/
|
|
66
|
+
const convertPairFundingFeeDataArray = (contractDataArray) => {
|
|
67
|
+
return contractDataArray.map(exports.convertPairFundingFeeData);
|
|
68
|
+
};
|
|
69
|
+
exports.convertPairFundingFeeDataArray = convertPairFundingFeeDataArray;
|
|
70
|
+
/**
|
|
71
|
+
* @dev Converts contract pair global params to SDK format
|
|
72
|
+
* @param contractParams Contract pair global params struct
|
|
73
|
+
* @returns Normalized pair global params
|
|
74
|
+
*/
|
|
75
|
+
const convertPairGlobalParams = (contractParams) => {
|
|
76
|
+
return {
|
|
77
|
+
maxSkewCollateral: Number(contractParams.maxSkewCollateral),
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
exports.convertPairGlobalParams = convertPairGlobalParams;
|
|
81
|
+
/**
|
|
82
|
+
* @dev Converts array of contract pair global params to SDK format
|
|
83
|
+
* @param contractParamsArray Array of contract pair global params
|
|
84
|
+
* @returns Array of normalized pair global params
|
|
85
|
+
*/
|
|
86
|
+
const convertPairGlobalParamsArray = (contractParamsArray) => {
|
|
87
|
+
return contractParamsArray.map(exports.convertPairGlobalParams);
|
|
88
|
+
};
|
|
89
|
+
exports.convertPairGlobalParamsArray = convertPairGlobalParamsArray;
|
|
90
|
+
/**
|
|
91
|
+
* @dev Converts contract trade initial acc funding fees to SDK format
|
|
92
|
+
* @param contractFees Contract trade fees data (only funding fee part)
|
|
93
|
+
* @returns Normalized trade initial acc funding fees
|
|
94
|
+
*/
|
|
95
|
+
const convertTradeInitialAccFundingFees = (contractFees) => {
|
|
96
|
+
return {
|
|
97
|
+
initialAccFundingFeeP: Number(contractFees.initialAccFundingFeeP) /
|
|
98
|
+
exports.FUNDING_FEES_PRECISION.ACC_FUNDING_FEE_P,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
exports.convertTradeInitialAccFundingFees = convertTradeInitialAccFundingFees;
|
|
102
|
+
/**
|
|
103
|
+
* @dev Creates a funding fee context from arrays of data
|
|
104
|
+
* @param collateralIndices Array of collateral indices
|
|
105
|
+
* @param pairIndices Array of pair indices
|
|
106
|
+
* @param params Array of funding fee parameters
|
|
107
|
+
* @param data Array of pair funding fee data
|
|
108
|
+
* @param globalParams Optional array of global parameters
|
|
109
|
+
* @param currentTimestamp Optional current timestamp
|
|
110
|
+
* @returns Complete funding fee context
|
|
111
|
+
*/
|
|
112
|
+
const createFundingFeeContext = (collateralIndices, pairIndices, params, data, globalParams, currentTimestamp) => {
|
|
113
|
+
const context = {
|
|
114
|
+
currentTimestamp: currentTimestamp !== null && currentTimestamp !== void 0 ? currentTimestamp : Math.floor(Date.now() / 1000),
|
|
115
|
+
fundingParams: {},
|
|
116
|
+
fundingData: {},
|
|
117
|
+
globalParams: globalParams ? {} : undefined,
|
|
118
|
+
};
|
|
119
|
+
// Build nested objects indexed by collateralIndex and pairIndex
|
|
120
|
+
for (let i = 0; i < collateralIndices.length; i++) {
|
|
121
|
+
const collateralIndex = collateralIndices[i];
|
|
122
|
+
const pairIndex = pairIndices[i];
|
|
123
|
+
// Initialize collateral index objects if they don't exist
|
|
124
|
+
if (!context.fundingParams[collateralIndex]) {
|
|
125
|
+
context.fundingParams[collateralIndex] = {};
|
|
126
|
+
}
|
|
127
|
+
if (!context.fundingData[collateralIndex]) {
|
|
128
|
+
context.fundingData[collateralIndex] = {};
|
|
129
|
+
}
|
|
130
|
+
if (globalParams && context.globalParams) {
|
|
131
|
+
if (!context.globalParams[collateralIndex]) {
|
|
132
|
+
context.globalParams[collateralIndex] = {};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Store data
|
|
136
|
+
context.fundingParams[collateralIndex][pairIndex] = params[i];
|
|
137
|
+
context.fundingData[collateralIndex][pairIndex] = data[i];
|
|
138
|
+
if (globalParams && context.globalParams) {
|
|
139
|
+
context.globalParams[collateralIndex][pairIndex] = globalParams[i];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return context;
|
|
143
|
+
};
|
|
144
|
+
exports.createFundingFeeContext = createFundingFeeContext;
|
|
145
|
+
/**
|
|
146
|
+
* @dev Validates funding rate is within allowed bounds
|
|
147
|
+
* @param absoluteRatePerSecondCap Rate cap (normalized)
|
|
148
|
+
* @returns Whether the rate is valid
|
|
149
|
+
*/
|
|
150
|
+
const isValidFundingRate = (absoluteRatePerSecondCap) => {
|
|
151
|
+
// Convert back to contract precision for validation
|
|
152
|
+
const contractValue = absoluteRatePerSecondCap *
|
|
153
|
+
exports.FUNDING_FEES_PRECISION.ABSOLUTE_RATE_PER_SECOND_CAP;
|
|
154
|
+
return contractValue <= 3170979; // MAX_FUNDING_RATE_PER_SECOND from contract
|
|
155
|
+
};
|
|
156
|
+
exports.isValidFundingRate = isValidFundingRate;
|
|
157
|
+
/**
|
|
158
|
+
* @dev Converts funding rate per second to APR
|
|
159
|
+
* @param ratePerSecondP Funding rate per second (normalized)
|
|
160
|
+
* @returns APR as percentage
|
|
161
|
+
*/
|
|
162
|
+
const fundingRateToAPR = (ratePerSecondP) => {
|
|
163
|
+
return ratePerSecondP * 365 * 24 * 60 * 60 * 100;
|
|
164
|
+
};
|
|
165
|
+
exports.fundingRateToAPR = fundingRateToAPR;
|
|
166
|
+
/**
|
|
167
|
+
* @dev Converts APR to funding rate per second
|
|
168
|
+
* @param apr APR as percentage
|
|
169
|
+
* @returns Funding rate per second (normalized)
|
|
170
|
+
*/
|
|
171
|
+
const aprToFundingRate = (apr) => {
|
|
172
|
+
return apr / (365 * 24 * 60 * 60 * 100);
|
|
173
|
+
};
|
|
174
|
+
exports.aprToFundingRate = aprToFundingRate;
|
|
175
|
+
/**
|
|
176
|
+
* @dev Calculates velocity per year from skew coefficient
|
|
177
|
+
* @param skewRatio Current skew ratio (net exposure / total OI)
|
|
178
|
+
* @param skewCoefficientPerYear Skew coefficient per year (normalized)
|
|
179
|
+
* @returns Velocity per year
|
|
180
|
+
*/
|
|
181
|
+
const calculateVelocityFromSkew = (skewRatio, skewCoefficientPerYear) => {
|
|
182
|
+
return Math.abs(skewRatio) * skewCoefficientPerYear;
|
|
183
|
+
};
|
|
184
|
+
exports.calculateVelocityFromSkew = calculateVelocityFromSkew;
|
|
185
|
+
/**
|
|
186
|
+
* @dev Creates a GetFundingFeeContext from arrays (alias for consistency)
|
|
187
|
+
* @param collateralIndices Array of collateral indices
|
|
188
|
+
* @param pairIndices Array of pair indices
|
|
189
|
+
* @param params Array of funding fee parameters
|
|
190
|
+
* @param data Array of pair funding fee data
|
|
191
|
+
* @returns Complete funding fee context
|
|
192
|
+
*/
|
|
193
|
+
const createGetFundingFeeContext = (collateralIndices, pairIndices, params, data) => {
|
|
194
|
+
return (0, exports.createFundingFeeContext)(collateralIndices, pairIndices, params, data);
|
|
195
|
+
};
|
|
196
|
+
exports.createGetFundingFeeContext = createGetFundingFeeContext;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { GNSMultiCollatDiamond } from "../../../contracts/types/generated";
|
|
2
|
+
import type { TradeInitialAccFees } from ".";
|
|
3
|
+
/**
|
|
4
|
+
* @dev Fetches pending accumulated funding fees for a specific pair
|
|
5
|
+
* @param contract GNSMultiCollatDiamond contract instance
|
|
6
|
+
* @param collateralIndex Collateral index
|
|
7
|
+
* @param pairIndex Pair index
|
|
8
|
+
* @param currentPairPrice Current pair price (1e10)
|
|
9
|
+
* @returns Promise resolving to accumulated funding fees and current rate
|
|
10
|
+
*/
|
|
11
|
+
export declare const fetchPairPendingAccFundingFees: (contract: GNSMultiCollatDiamond, collateralIndex: number, pairIndex: number, currentPairPrice: bigint) => Promise<{
|
|
12
|
+
accFundingFeeLongP: number;
|
|
13
|
+
accFundingFeeShortP: number;
|
|
14
|
+
currentFundingRatePerSecondP: number;
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* @dev Fetches funding fees for a specific trade in collateral tokens
|
|
18
|
+
* @param contract GNSMultiCollatDiamond contract instance
|
|
19
|
+
* @param trader Trader address
|
|
20
|
+
* @param index Trade index
|
|
21
|
+
* @param currentPairPrice Current pair price (1e10)
|
|
22
|
+
* @returns Promise resolving to funding fee in collateral tokens
|
|
23
|
+
*/
|
|
24
|
+
export declare const fetchTradeFundingFeesCollateral: (contract: GNSMultiCollatDiamond, trader: string, index: number, currentPairPrice: bigint) => Promise<number>;
|
|
25
|
+
/**
|
|
26
|
+
* @dev Fetches trade fees data for a specific trade
|
|
27
|
+
* @param contract GNSMultiCollatDiamond contract instance
|
|
28
|
+
* @param trader Trader address
|
|
29
|
+
* @param index Trade index
|
|
30
|
+
* @returns Promise resolving to trade fees data
|
|
31
|
+
*/
|
|
32
|
+
export declare const fetchTradeFeesData: (contract: GNSMultiCollatDiamond, trader: string, index: number) => Promise<TradeInitialAccFees>;
|
|
33
|
+
/**
|
|
34
|
+
* @dev Fetches trade fees data for multiple trades
|
|
35
|
+
* @param contract GNSMultiCollatDiamond contract instance
|
|
36
|
+
* @param traders Array of trader addresses
|
|
37
|
+
* @param indices Array of trade indices
|
|
38
|
+
* @returns Promise resolving to array of trade fees data
|
|
39
|
+
*/
|
|
40
|
+
export declare const fetchTradeFeesDataBatch: (contract: GNSMultiCollatDiamond, traders: string[], indices: number[]) => Promise<TradeInitialAccFees[]>;
|
|
41
|
+
/**
|
|
42
|
+
* @dev Fetches pending accumulated funding fees for multiple pairs
|
|
43
|
+
* @param contract GNSMultiCollatDiamond contract instance
|
|
44
|
+
* @param collateralIndices Array of collateral indices
|
|
45
|
+
* @param pairIndices Array of pair indices
|
|
46
|
+
* @param currentPairPrices Array of current pair prices (1e10)
|
|
47
|
+
* @returns Promise resolving to array of accumulated funding fees
|
|
48
|
+
*/
|
|
49
|
+
export declare const fetchPairPendingAccFundingFeesBatch: (contract: GNSMultiCollatDiamond, collateralIndices: number[], pairIndices: number[], currentPairPrices: bigint[]) => Promise<Array<{
|
|
50
|
+
accFundingFeeLongP: number;
|
|
51
|
+
accFundingFeeShortP: number;
|
|
52
|
+
currentFundingRatePerSecondP: number;
|
|
53
|
+
}>>;
|
|
54
|
+
/**
|
|
55
|
+
* @dev Helper to convert price from number to contract format
|
|
56
|
+
* @param price Price as number
|
|
57
|
+
* @returns Price in contract format (1e10)
|
|
58
|
+
*/
|
|
59
|
+
export declare const priceToContractFormat: (price: number) => bigint;
|
|
60
|
+
/**
|
|
61
|
+
* @dev Helper to convert collateral amount to contract format
|
|
62
|
+
* @param amount Amount as number
|
|
63
|
+
* @param decimals Collateral decimals (6 for USDC, 18 for others)
|
|
64
|
+
* @returns Amount in contract format
|
|
65
|
+
*/
|
|
66
|
+
export declare const collateralToContractFormat: (amount: number, decimals: number) => bigint;
|