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
_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
getTradeLiquidationPrice
Convenient wrapper to return trade liquidation price (1e10)
Parameters
_useBorrowingFees
bool
getTradeValueCollateral
Returns trade value and borrowing fee in collateral tokens
Parameters
_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
_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
getTradeLiqPnlThresholdP
Returns a trade's liquidation threshold % (1e10)
Parameters
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
_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
_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
_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
_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
_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