TradingCommonUtils
External library for helper functions commonly used in many places
getPnlPercent
Returns the current percent profit of a trade (1e10 precision)
Parameters
_openPrice
uint64
trade open price (1e10 precision)
_currentPrice
uint64
trade current price (1e10 precision)
_long
bool
true for long, false for short
_leverage
uint24
trade leverage (1e3 precision)
getPositionSizeCollateral
Returns position size of trade in collateral tokens (avoids overflow from uint120 collateralAmount)
Parameters
_collateralAmount
uint120
collateral of trade
_leverage
uint24
leverage of trade (1e3)
getMarketExecutionPrice
Calculates market execution price for a trade (1e10 precision)
Parameters
_price
uint256
price of the asset (1e10)
_spreadP
uint256
spread percentage (1e10)
_long
bool
true if long, false if short
_open
bool
_contractsVersion
enum ITradingStorage.ContractsVersion
convertCollateralToUsd
Converts collateral value to USD (1e18 precision)
Parameters
_collateralAmount
uint256
amount of collateral (collateral precision)
_collateralPrecisionDelta
uint128
precision delta of collateral (10^18/10^decimals)
_collateralPriceUsd
uint256
price of collateral in USD (1e8)
convertCollateralToGns
Converts collateral value to GNS (1e18 precision)
Parameters
_collateralAmount
uint256
amount of collateral (collateral precision)
_collateralPrecisionDelta
uint128
precision delta of collateral (10^18/10^decimals)
_gnsPriceCollateral
uint256
price of GNS in collateral (1e10)
getTradeValuePure
Calculates trade value (useful when closing a trade) Important: does not calculate if trade can be liquidated or not, has to be done by calling function
Parameters
_collateral
uint256
amount of collateral (collateral precision)
_percentProfit
int256
profit percentage (1e10)
_feesCollateral
uint256
borrowing fee + closing fee in collateral tokens (collateral precision)
_collateralPrecisionDelta
uint128
precision delta of collateral (10^18/10^decimals)
getLiqPnlThresholdP
Pure function that returns the liquidation pnl % threshold for a trade (1e10)
Parameters
_params
trade liquidation params
_leverage
uint256
trade leverage (1e3 precision)
getMinPositionSizeCollateral
Returns minimum position size in collateral tokens for a pair (collateral precision)
Parameters
_collateralIndex
uint8
collateral index
_pairIndex
uint256
pair index
getPositionSizeCollateralBasis
Returns position size to use when charging fees
Parameters
_collateralIndex
uint8
collateral index
_pairIndex
uint256
pair index
_positionSizeCollateral
uint256
trade position size in collateral tokens (collateral precision)
isWithinExposureLimits
Checks if total position size is not higher than maximum allowed open interest for a pair
Parameters
_collateralIndex
uint8
index of collateral
_pairIndex
uint16
index of pair
_long
bool
true if long, false if short
_positionSizeCollateralDelta
uint256
position size delta in collateral tokens (collateral precision)
getTradeBorrowingFeeCollateral
Convenient wrapper to return trade borrowing fee in collateral tokens (collateral precision)
Parameters
_trade
trade input
getTradeLiquidationPrice
Convenient wrapper to return trade liquidation price (1e10)
Parameters
_trade
trade input
_useBorrowingFees
bool
getTradeValueCollateral
Returns trade value and borrowing fee in collateral tokens
Parameters
_trade
trade data
_percentProfit
int256
profit percentage (1e10)
_closingFeesCollateral
uint256
closing fees in collateral tokens (collateral precision)
_collateralPrecisionDelta
uint128
precision delta of collateral (10^18/10^decimals)
getTradeOpeningPriceImpact
Returns price impact % (1e10), price after spread and impact (1e10)
Parameters
_input
input data
_contractsVersion
enum ITradingStorage.ContractsVersion
contracts version
getTradeClosingPriceImpact
Returns price impact % (1e10), price after spread and impact (1e10), and trade value used to know if pnl is positive (collateral precision)
Parameters
_input
input data
getTradeLiqPnlThresholdP
Returns a trade's liquidation threshold % (1e10)
Parameters
_trade
trade struct
getTotalTradeFeesCollateral
Returns all fees for a trade in collateral tokens
Parameters
_collateralIndex
uint8
collateral index
_trader
address
address of trader
_pairIndex
uint16
index of pair
_positionSizeCollateral
uint256
position size in collateral tokens (collateral precision)
getTradeFeesCollateral
Returns all fees for a trade in collateral tokens
Parameters
_collateralIndex
uint8
collateral index
_trader
address
address of trader
_pairIndex
uint16
index of pair
_collateralAmount
uint256
trade collateral amount (collateral precision)
_positionSizeCollateral
uint256
trade position size in collateral tokens (collateral precision)
_orderType
enum ITradingStorage.PendingOrderType
corresponding order type
getMinGovFeeCollateral
revertIfTradeHasPendingMarketOrder
Reverts if user initiated any kind of pending market order on his trade
Parameters
_user
address
trade user
_index
uint32
trade index
getGToken
Returns gToken contract for a collateral index
Parameters
_collateralIndex
uint8
collateral index
transferCollateralFrom
Transfers collateral from trader
Parameters
_collateralIndex
uint8
index of the collateral
_from
address
sending address
_amountCollateral
uint256
amount of collateral to receive (collateral precision)
transferCollateralTo
Transfers collateral to trader
Parameters
_collateralIndex
uint8
index of the collateral
_to
address
receiving address
_amountCollateral
uint256
amount of collateral to transfer (collateral precision)
transferGnsTo
Transfers GNS to address
Parameters
_to
address
receiving address
_amountGns
uint256
amount of GNS to transfer (1e18)
transferGnsFrom
Transfers GNS from address
Parameters
_from
address
sending address
_amountGns
uint256
amount of GNS to receive (1e18)
sendCollateralToVault
Sends collateral to gToken vault for negative pnl
Parameters
_collateralIndex
uint8
collateral index
_amountCollateral
uint256
amount of collateral to send to vault (collateral precision)
_trader
address
trader address
handleTradePnl
Handles pnl transfers when (fully or partially) closing a trade
Parameters
_trade
trade struct
_collateralSentToTrader
int256
total amount to send to trader (collateral precision)
_availableCollateralInDiamond
int256
part of _collateralSentToTrader available in diamond balance (collateral precision)
_borrowingFeeCollateral
uint256
updateFeeTierPoints
Updates a trader's fee tiers points based on his trade size
Parameters
_collateralIndex
uint8
collateral index
_trader
address
address of trader
_pairIndex
uint256
index of pair
_positionSizeCollateral
uint256
position size in collateral tokens (collateral precision)
distributeVaultFeeCollateral
Distributes fee to gToken vault
Parameters
_collateralIndex
uint8
index of collateral
_trader
address
address of trader
_valueCollateral
uint256
fee in collateral tokens (collateral precision)
distributeExactGovFeeCollateral
Distributes gov fees exact amount
Parameters
_collateralIndex
uint8
index of collateral
_trader
address
address of trader
_govFeeCollateral
uint256
position size in collateral tokens (collateral precision)
distributeGnsOtcFeeCollateral
Increases OTC balance to be distributed once OTC is executed
Parameters
_collateralIndex
uint8
collateral index
_trader
address
trader address
_amountCollateral
uint256
amount of collateral tokens to distribute (collateral precision)
distributeTriggerFeeGns
Distributes trigger fee in GNS tokens
Parameters
_trader
address
address of trader
_collateralIndex
uint8
index of collateral
_triggerFeeCollateral
uint256
trigger fee in collateral tokens (collateral precision)
_gnsPriceCollateral
uint256
gns/collateral price (1e10 precision)
_collateralPrecisionDelta
uint128
collateral precision delta (10^18/10^decimals)
processFees
Distributes opening fees for trade and returns the trade fees charged in collateral tokens
Parameters
_trade
trade struct
_positionSizeCollateral
uint256
position size in collateral tokens (collateral precision)
_orderType
enum ITradingStorage.PendingOrderType
trade order type
distributeReferralFeeCollateral
Distributes referral rewards and returns the amount charged in collateral tokens
Parameters
_collateralIndex
uint8
collateral index
_trader
address
address of trader
_positionSizeCollateral
uint256
position size in collateral tokens (collateral precision)
_referralFeeCollateral
uint256
referral fee in collateral tokens (collateral precision)
_gnsPriceCollateral
uint256
gns/collateral price (1e10 precision)
updateOi
_Update protocol open interest (any amount) CAREFUL: this will reset the trade's borrowing fees to 0 when open = true
Parameters
_trade
trade struct
_positionSizeCollateral
uint256
position size in collateral tokens (collateral precision)
_open
bool
whether it corresponds to a trade opening or closing
_isPnlPositive
bool
whether it corresponds to a positive pnl trade (only relevant when _open = false)
updateOiTrade
_Update protocol open interest (trade position size) CAREFUL: this will reset the trade's borrowing fees to 0 when open = true
Parameters
_trade
trade struct
_open
bool
whether it corresponds to a trade opening or closing
_isPnlPositive
bool
whether it corresponds to a positive pnl trade (only relevant when _open = false)
handleOiDelta
Handles OI delta for an existing trade (for trade updates)
Parameters
_trade
trade struct
_newPositionSizeCollateral
uint256
new position size in collateral tokens (collateral precision)
_isPnlPositive
bool
whether it corresponds to a positive pnl trade (only relevant when closing)
_getMultiCollatDiamond
Returns current address as multi-collateral diamond interface to call other facets functions.
Last updated