/** * @dev Trading fee calculations for opening and closing positions */ import { Fee, PairIndex, Trade, TradeInfo, TradeFeesData } from "../../types"; import { GetBorrowingFeeContext } from "../borrowing"; import * as BorrowingFee from "../borrowing/types"; import { GetPairBorrowingFeeV2Context } from "../borrowingV2"; import { GetPairFundingFeeContext } from "../fundingFees/pairContext"; import { GetTradeFeesContext, GetLiquidationFeesContext, GetClosingFeeContext, TradeFeesBreakdown, TradeHoldingFees } from "./types"; import { ContractsVersion } from "../../../contracts/types"; /** * @dev Returns the total fee for a trade in collateral tokens * @dev Mirrors the contract's getTotalTradeFeesCollateral function * @param collateralIndex Collateral index (not used in calculation, for consistency) * @param trader Trader address (for fee tier lookup) * @param pairIndex Index of the trading pair * @param positionSizeCollateral Position size in collateral tokens * @param isCounterTrade Whether the trade is a counter trade * @param context Context containing fee parameters and settings * @returns Total fee in collateral tokens */ export declare const getTotalTradeFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, positionSizeCollateral: number, isCounterTrade: boolean, context: GetTradeFeesContext) => number; /** * @dev Returns the fee breakdown for a trade * @dev Mirrors the contract's getTradeFeesCollateral function */ export declare const getTradeFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, positionSizeCollateral: number, isCounterTrade: boolean, context: GetTradeFeesContext) => TradeFeesBreakdown; /** * @dev Returns total liquidation fee for a trade in collateral tokens * @dev Mirrors the contract's getTotalTradeLiqFeesCollateral function */ export declare const getTotalTradeLiqFeesCollateral: (collateralIndex: number, trader: string, pairIndex: PairIndex, collateralAmount: number, context: GetLiquidationFeesContext) => number; /** * @dev Legacy function for backward compatibility * @deprecated Use getTotalTradeFeesCollateral instead */ export declare const getClosingFee: (collateralAmount: number, leverage: number, pairIndex: PairIndex, pairFee: Fee | undefined, _collateralPriceUsd?: number | undefined, isCounterTrade?: boolean, trader?: string, context?: GetClosingFeeContext) => number; /** * @dev Context for holding fees calculation with structured sub-contexts */ export type GetStructuredHoldingFeesContext = { contractsVersion: ContractsVersion; currentTimestamp: number; collateralPriceUsd: number; borrowingV1?: GetBorrowingFeeContext; borrowingV2?: GetPairBorrowingFeeV2Context; funding?: GetPairFundingFeeContext; initialAccFees?: BorrowingFee.InitialAccFees; }; /** * @dev Calculates total holding fees for a trade (funding + borrowing fees) * @param trade The trade to calculate fees for * @param tradeInfo Trade info containing contracts version * @param tradeFeesData Trade fees data containing initial acc fees * @param currentPairPrice Current pair price * @param context Structured context with sub-contexts for each fee type * @returns Object containing all holding fee components */ export declare const getTradePendingHoldingFeesCollateral: (trade: Trade, tradeInfo: TradeInfo, tradeFeesData: TradeFeesData, currentPairPrice: number, context: GetStructuredHoldingFeesContext) => TradeHoldingFees; export * from "./types"; export * from "./converter"; export * from "./builder";