/** * @dev Funding fees calculations for v10+ trades * @dev Based on skew-based funding rate model with velocity and APR multipliers */ import { FundingFeeParams, PairFundingFeeData, GetFundingFeeContext, TradeFundingFeeResult, PairPendingAccFundingFeesResult, PairOiAfterV10 } from "./types"; import { GetPairFundingFeeContext } from "./pairContext"; /** * @dev Calculates current funding velocity per year based on skew * @param netExposureToken Net exposure (long - short) in tokens * @param netExposureUsd Net exposure in USD * @param skewCoefficientPerYear Skew coefficient per year from params * @param absoluteVelocityPerYearCap Cap on velocity per year * @param thetaThresholdUsd Minimum exposure USD to start charging funding fees * @returns Current yearly funding velocity */ export declare const getCurrentFundingVelocityPerYear: (netExposureToken: number, netExposureUsd: number, skewCoefficientPerYear: number, absoluteVelocityPerYearCap: number, thetaThresholdUsd: number) => number; /** * @dev Calculates seconds until funding rate reaches zero * @param lastFundingRatePerSecondP Last funding rate per second * @param currentVelocityPerYear Current velocity per year * @returns Seconds until rate reaches zero */ export declare const getSecondsToReachZeroRate: (lastFundingRatePerSecondP: number, currentVelocityPerYear: number) => number; /** * @dev Calculates average and current funding rate per second * @param lastFundingRatePerSecondP Last funding rate per second * @param absoluteRatePerSecondCap Absolute cap on funding rate per second * @param currentVelocityPerYear Current velocity per year * @param secondsSinceLastUpdate Seconds elapsed since last update * @returns Average and current funding rate per second */ export declare const getAvgFundingRatePerSecondP: (lastFundingRatePerSecondP: number, absoluteRatePerSecondCap: number, currentVelocityPerYear: number, secondsSinceLastUpdate: number) => { avgFundingRatePerSecondP: number; currentFundingRatePerSecondP: number; }; /** * @dev Calculates APR multipliers for long and short sides based on OI ratio * @param avgFundingRatePerSecondP Average funding rate per second * @param pairOiLongToken Long OI in tokens * @param pairOiShortToken Short OI in tokens * @param aprMultiplierEnabled Whether APR multiplier is enabled * @returns Long and short APR multipliers */ export declare const getLongShortAprMultiplier: (avgFundingRatePerSecondP: number, pairOiLongToken: number, pairOiShortToken: number, aprMultiplierEnabled: boolean) => { longAprMultiplier: number; shortAprMultiplier: number; }; /** * @dev Calculates pending accumulated funding fees for a pair * @param params Funding fee parameters * @param data Current funding fee data * @param currentPairPrice Current pair price * @param pairOiToken Pair OI after v10 * @param netExposureToken Net exposure in tokens * @param netExposureUsd Net exposure in USD * @param currentTimestamp Current timestamp * @returns Pending accumulated funding fees and current rate */ export declare const getPairPendingAccFundingFees: (params: FundingFeeParams, data: PairFundingFeeData, currentPairPrice: number, pairOiToken: PairOiAfterV10, netExposureToken: number, netExposureUsd: number, currentTimestamp: number) => PairPendingAccFundingFeesResult; /** * @dev Calculates funding fees for a specific trade * @param trade Trade parameters (collateral amount, leverage, open price, long/short) * @param tradeInfo Trade info (contracts version) * @param tradeFeesData Trade fees data containing initial acc funding fee * @param currentPairPrice Current pair price * @param context Pair-specific funding fee context * @returns Funding fee in collateral tokens */ export declare const getTradeFundingFeesCollateral: (trade: { collateralAmount: number; leverage: number; openPrice: number; long: boolean; }, tradeInfo: { contractsVersion: number; }, tradeFeesData: { initialAccFundingFeeP: number; }, currentPairPrice: number, context: GetPairFundingFeeContext) => number; /** * @dev Main function to calculate funding fees for a trade within context * @param input Trade funding fee input parameters * @param context Funding fee context with params and data * @returns Complete funding fee calculation result */ export declare const getTradeFundingFees: (input: { collateralIndex: number; pairIndex: number; trade: { collateralAmount: number; leverage: number; openPrice: number; long: boolean; }; tradeInfo: { contractsVersion: number; }; initialAccFundingFeeP: number; currentPairPrice: number; pairOiToken: PairOiAfterV10; netExposureToken: number; netExposureUsd: number; }, context: GetFundingFeeContext) => TradeFundingFeeResult; /** * @dev Simple version of getTradeFundingFeesCollateral for backward compatibility * @param trade Trade parameters * @param tradeInfo Trade info with contracts version * @param initialAccFundingFeeP Initial accumulated funding fee * @param currentAccFundingFeeP Current accumulated funding fee * @returns Funding fee in collateral tokens */ export declare const getTradeFundingFeesCollateralSimple: (trade: { collateralAmount: number; leverage: number; openPrice: number; long: boolean; }, tradeInfo: { contractsVersion: number; }, initialAccFundingFeeP: number, currentAccFundingFeeP: number) => number; export * as FundingFees from "./types"; export type { FundingFeeParams, PairFundingFeeData, PairGlobalParams, TradeInitialAccFundingFees, PairOiAfterV10, FundingRateCalculation, GetFundingFeeContext, TradeFundingFeeResult, PairPendingAccFundingFeesResult, PairAccumulatedFees, TradeInitialAccFees, } from "./types"; export type { GetPairFundingFeeContext } from "./pairContext"; export * from "./fetcher"; export * from "./pairContext"; export * from "./builder";