@gainsnetwork/sdk 0.2.68 → 0.2.70-rc1
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/constants.d.ts +13 -0
- package/lib/constants.js +16 -2
- package/lib/contracts/utils/pairs.js +13 -0
- package/lib/trade/types.d.ts +14 -1
- package/lib/trade/types.js +13 -0
- package/package.json +1 -1
- package/lib/contracts/fetch/fees/borrowingFeesV2.d.ts +0 -76
- 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/fees/borrowingV2/converter.d.ts +0 -66
- package/lib/trade/fees/borrowingV2/converter.js +0 -121
- package/lib/trade/fees/borrowingV2/index.d.ts +0 -59
- package/lib/trade/fees/borrowingV2/index.js +0 -139
- package/lib/trade/fees/borrowingV2/types.d.ts +0 -79
- package/lib/trade/fees/borrowingV2/types.js +0 -5
- package/lib/trade/fees/fundingFees/converter.d.ts +0 -102
- package/lib/trade/fees/fundingFees/converter.js +0 -196
- package/lib/trade/fees/fundingFees/index.d.ts +0 -135
- package/lib/trade/fees/fundingFees/index.js +0 -322
- package/lib/trade/fees/fundingFees/types.d.ts +0 -77
- package/lib/trade/fees/fundingFees/types.js +0 -5
- package/lib/trade/fees/trading/converter.d.ts +0 -30
- package/lib/trade/fees/trading/converter.js +0 -43
- package/lib/trade/fees/trading/index.d.ts +0 -34
- package/lib/trade/fees/trading/index.js +0 -104
- package/lib/trade/fees/trading/types.d.ts +0 -39
- package/lib/trade/fees/trading/types.js +0 -5
- package/lib/trade/priceImpact/index.d.ts +0 -8
- package/lib/trade/priceImpact/index.js +0 -32
- package/lib/trade/priceImpact/skew/converter.d.ts +0 -77
- package/lib/trade/priceImpact/skew/converter.js +0 -171
- package/lib/trade/priceImpact/skew/index.d.ts +0 -57
- package/lib/trade/priceImpact/skew/index.js +0 -175
- package/lib/trade/priceImpact/skew/types.d.ts +0 -55
- package/lib/trade/priceImpact/skew/types.js +0 -5
- package/lib/trade/utils.d.ts +0 -18
- package/lib/trade/utils.js +0 -30
|
@@ -1,79 +0,0 @@
|
|
|
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
|
-
*/
|
|
43
|
-
export type GetBorrowingFeeV2Context = {
|
|
44
|
-
/**
|
|
45
|
-
* @dev Current timestamp (defaults to Date.now() / 1000)
|
|
46
|
-
*/
|
|
47
|
-
currentTimestamp?: number;
|
|
48
|
-
/**
|
|
49
|
-
* @dev Borrowing fee parameters for pairs
|
|
50
|
-
* @dev Indexed by: params[collateralIndex][pairIndex]
|
|
51
|
-
*/
|
|
52
|
-
borrowingParams: Record<number, Record<number, BorrowingFeeParams>>;
|
|
53
|
-
/**
|
|
54
|
-
* @dev Borrowing fee data for pairs
|
|
55
|
-
* @dev Indexed by: data[collateralIndex][pairIndex]
|
|
56
|
-
*/
|
|
57
|
-
borrowingData: Record<number, Record<number, PairBorrowingFeeData>>;
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* @dev Input for calculating pending borrowing fees for a pair
|
|
61
|
-
*/
|
|
62
|
-
export type PairBorrowingFeeInput = {
|
|
63
|
-
collateralIndex: number;
|
|
64
|
-
pairIndex: number;
|
|
65
|
-
currentPairPrice: number;
|
|
66
|
-
currentTimestamp?: number;
|
|
67
|
-
};
|
|
68
|
-
/**
|
|
69
|
-
* @dev Input for calculating borrowing fees for a specific trade
|
|
70
|
-
*/
|
|
71
|
-
export type TradeBorrowingFeeInput = {
|
|
72
|
-
positionSizeCollateral: number;
|
|
73
|
-
openPrice: number;
|
|
74
|
-
collateralIndex: number;
|
|
75
|
-
pairIndex: number;
|
|
76
|
-
currentPairPrice: number;
|
|
77
|
-
initialAccBorrowingFeeP: number;
|
|
78
|
-
currentTimestamp?: number;
|
|
79
|
-
};
|
|
@@ -1,102 +0,0 @@
|
|
|
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;
|
|
@@ -1,196 +0,0 @@
|
|
|
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;
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @dev Funding fees calculations for v10+ trades
|
|
3
|
-
* @dev Based on skew-based funding rate model with velocity and APR multipliers
|
|
4
|
-
*/
|
|
5
|
-
import { FundingFeeParams, PairFundingFeeData, GetFundingFeeContext, TradeFundingFeeResult, PairPendingAccFundingFeesResult, PairOiAfterV10 } from "./types";
|
|
6
|
-
/**
|
|
7
|
-
* @dev Calculates current funding velocity per year based on skew
|
|
8
|
-
* @param netExposureToken Net exposure (long - short) in tokens
|
|
9
|
-
* @param netExposureUsd Net exposure in USD
|
|
10
|
-
* @param skewCoefficientPerYear Skew coefficient per year from params
|
|
11
|
-
* @param absoluteVelocityPerYearCap Cap on velocity per year
|
|
12
|
-
* @param thetaThresholdUsd Minimum exposure USD to start charging funding fees
|
|
13
|
-
* @returns Current yearly funding velocity
|
|
14
|
-
*/
|
|
15
|
-
export declare const getCurrentFundingVelocityPerYear: (netExposureToken: number, netExposureUsd: number, skewCoefficientPerYear: number, absoluteVelocityPerYearCap: number, thetaThresholdUsd: number) => number;
|
|
16
|
-
/**
|
|
17
|
-
* @dev Calculates seconds until funding rate reaches zero
|
|
18
|
-
* @param lastFundingRatePerSecondP Last funding rate per second
|
|
19
|
-
* @param currentVelocityPerYear Current velocity per year
|
|
20
|
-
* @returns Seconds until rate reaches zero
|
|
21
|
-
*/
|
|
22
|
-
export declare const getSecondsToReachZeroRate: (lastFundingRatePerSecondP: number, currentVelocityPerYear: number) => number;
|
|
23
|
-
/**
|
|
24
|
-
* @dev Calculates average and current funding rate per second
|
|
25
|
-
* @param lastFundingRatePerSecondP Last funding rate per second
|
|
26
|
-
* @param absoluteRatePerSecondCap Absolute cap on funding rate per second
|
|
27
|
-
* @param currentVelocityPerYear Current velocity per year
|
|
28
|
-
* @param secondsSinceLastUpdate Seconds elapsed since last update
|
|
29
|
-
* @returns Average and current funding rate per second
|
|
30
|
-
*/
|
|
31
|
-
export declare const getAvgFundingRatePerSecondP: (lastFundingRatePerSecondP: number, absoluteRatePerSecondCap: number, currentVelocityPerYear: number, secondsSinceLastUpdate: number) => {
|
|
32
|
-
avgFundingRatePerSecondP: number;
|
|
33
|
-
currentFundingRatePerSecondP: number;
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* @dev Calculates APR multipliers for long and short sides based on OI ratio
|
|
37
|
-
* @param avgFundingRatePerSecondP Average funding rate per second
|
|
38
|
-
* @param pairOiLongToken Long OI in tokens
|
|
39
|
-
* @param pairOiShortToken Short OI in tokens
|
|
40
|
-
* @param aprMultiplierEnabled Whether APR multiplier is enabled
|
|
41
|
-
* @returns Long and short APR multipliers
|
|
42
|
-
*/
|
|
43
|
-
export declare const getLongShortAprMultiplier: (avgFundingRatePerSecondP: number, pairOiLongToken: number, pairOiShortToken: number, aprMultiplierEnabled: boolean) => {
|
|
44
|
-
longAprMultiplier: number;
|
|
45
|
-
shortAprMultiplier: number;
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* @dev Calculates pending accumulated funding fees for a pair
|
|
49
|
-
* @param params Funding fee parameters
|
|
50
|
-
* @param data Current funding fee data
|
|
51
|
-
* @param currentPairPrice Current pair price
|
|
52
|
-
* @param pairOiToken Pair OI after v10
|
|
53
|
-
* @param netExposureToken Net exposure in tokens
|
|
54
|
-
* @param netExposureUsd Net exposure in USD
|
|
55
|
-
* @param currentTimestamp Current timestamp
|
|
56
|
-
* @returns Pending accumulated funding fees and current rate
|
|
57
|
-
*/
|
|
58
|
-
export declare const getPairPendingAccFundingFees: (params: FundingFeeParams, data: PairFundingFeeData, currentPairPrice: number, pairOiToken: PairOiAfterV10, netExposureToken: number, netExposureUsd: number, currentTimestamp: number) => PairPendingAccFundingFeesResult;
|
|
59
|
-
/**
|
|
60
|
-
* @dev Calculates funding fees for a specific trade (SDK version following contract pattern)
|
|
61
|
-
* @param trade Trade parameters (collateral amount, leverage, open price, long/short, collateralIndex, pairIndex)
|
|
62
|
-
* @param tradeInfo Trade info (contracts version)
|
|
63
|
-
* @param tradeFeesData Trade fees data containing initial acc funding fee
|
|
64
|
-
* @param currentPairPrice Current pair price
|
|
65
|
-
* @param context Optional context with funding fee data (if not provided, uses simple calculation)
|
|
66
|
-
* @returns Funding fee in collateral tokens
|
|
67
|
-
*/
|
|
68
|
-
export declare const getTradeFundingFeesCollateral: (trade: {
|
|
69
|
-
collateralAmount: number;
|
|
70
|
-
leverage: number;
|
|
71
|
-
openPrice: number;
|
|
72
|
-
long: boolean;
|
|
73
|
-
collateralIndex?: number;
|
|
74
|
-
pairIndex?: number;
|
|
75
|
-
}, tradeInfo: {
|
|
76
|
-
contractsVersion: number;
|
|
77
|
-
}, tradeFeesData: {
|
|
78
|
-
initialAccFundingFeeP: number;
|
|
79
|
-
}, currentPairPrice: number, context?: (GetFundingFeeContext & {
|
|
80
|
-
pairOiAfterV10?: {
|
|
81
|
-
[collateralIndex: number]: {
|
|
82
|
-
[pairIndex: number]: PairOiAfterV10;
|
|
83
|
-
};
|
|
84
|
-
} | undefined;
|
|
85
|
-
netExposureToken?: {
|
|
86
|
-
[collateralIndex: number]: {
|
|
87
|
-
[pairIndex: number]: number;
|
|
88
|
-
};
|
|
89
|
-
} | undefined;
|
|
90
|
-
netExposureUsd?: {
|
|
91
|
-
[collateralIndex: number]: {
|
|
92
|
-
[pairIndex: number]: number;
|
|
93
|
-
};
|
|
94
|
-
} | undefined;
|
|
95
|
-
}) | undefined) => number;
|
|
96
|
-
/**
|
|
97
|
-
* @dev Main function to calculate funding fees for a trade within context
|
|
98
|
-
* @param context Funding fee context with params and data
|
|
99
|
-
* @param collateralIndex Collateral index
|
|
100
|
-
* @param pairIndex Pair index
|
|
101
|
-
* @param trade Trade details
|
|
102
|
-
* @param tradeInfo Trade info (contracts version)
|
|
103
|
-
* @param initialAccFundingFeeP Initial accumulated funding fee
|
|
104
|
-
* @param currentPairPrice Current pair price
|
|
105
|
-
* @param pairOiToken Pair OI after v10
|
|
106
|
-
* @param netExposureToken Net exposure in tokens
|
|
107
|
-
* @param netExposureUsd Net exposure in USD
|
|
108
|
-
* @returns Complete funding fee calculation result
|
|
109
|
-
*/
|
|
110
|
-
export declare const getTradeFundingFees: (context: GetFundingFeeContext, collateralIndex: number, pairIndex: number, trade: {
|
|
111
|
-
collateralAmount: number;
|
|
112
|
-
leverage: number;
|
|
113
|
-
openPrice: number;
|
|
114
|
-
long: boolean;
|
|
115
|
-
}, tradeInfo: {
|
|
116
|
-
contractsVersion: number;
|
|
117
|
-
}, initialAccFundingFeeP: number, currentPairPrice: number, pairOiToken: PairOiAfterV10, netExposureToken: number, netExposureUsd: number) => TradeFundingFeeResult;
|
|
118
|
-
/**
|
|
119
|
-
* @dev Simple version of getTradeFundingFeesCollateral for backward compatibility
|
|
120
|
-
* @param trade Trade parameters
|
|
121
|
-
* @param tradeInfo Trade info with contracts version
|
|
122
|
-
* @param initialAccFundingFeeP Initial accumulated funding fee
|
|
123
|
-
* @param currentAccFundingFeeP Current accumulated funding fee
|
|
124
|
-
* @returns Funding fee in collateral tokens
|
|
125
|
-
*/
|
|
126
|
-
export declare const getTradeFundingFeesCollateralSimple: (trade: {
|
|
127
|
-
collateralAmount: number;
|
|
128
|
-
leverage: number;
|
|
129
|
-
openPrice: number;
|
|
130
|
-
long: boolean;
|
|
131
|
-
}, tradeInfo: {
|
|
132
|
-
contractsVersion: number;
|
|
133
|
-
}, initialAccFundingFeeP: number, currentAccFundingFeeP: number) => number;
|
|
134
|
-
export * as FundingFees from "./types";
|
|
135
|
-
export type { FundingFeeParams, PairFundingFeeData, PairGlobalParams, TradeInitialAccFundingFees, PairOiAfterV10, FundingRateCalculation, GetFundingFeeContext, TradeFundingFeeResult, PairPendingAccFundingFeesResult, PairAccumulatedFees, TradeInitialAccFees, } from "./types";
|