ITradingStorageUtils

Interface for GNSTradingStorage facet (inherits types and also contains functions, events, and custom errors)

initializeTradingStorage

function initializeTradingStorage(address _gns, address _gnsStaking, address[] _collaterals, address[] _gTokens) external

Initializes the trading storage facet

Parameters

NameTypeDescription

_gns

address

address of the gns token

_gnsStaking

address

address of the gns staking contract

_collaterals

address[]

_gTokens

address[]

updateTradingActivated

function updateTradingActivated(enum ITradingStorage.TradingActivated _activated) external

Updates the trading activated state

Parameters

NameTypeDescription

_activated

enum ITradingStorage.TradingActivated

the new trading activated state

addCollateral

function addCollateral(address _collateral, address _gToken) external

Adds a new supported collateral

Parameters

NameTypeDescription

_collateral

address

the address of the collateral

_gToken

address

the gToken contract of the collateral

toggleCollateralActiveState

function toggleCollateralActiveState(uint8 _collateralIndex) external

Toggles the active state of a supported collateral

Parameters

NameTypeDescription

_collateralIndex

uint8

index of the collateral

updateGToken

function updateGToken(address _collateral, address _gToken) external

Updates the contracts of a supported collateral trading stack

Parameters

NameTypeDescription

_collateral

address

address of the collateral

_gToken

address

the gToken contract of the collateral

storeTrade

function storeTrade(struct ITradingStorage.Trade _trade, struct ITradingStorage.TradeInfo _tradeInfo) external returns (struct ITradingStorage.Trade)

Stores a new trade (trade/limit/stop)

Parameters

NameTypeDescription

_trade

trade to be stored

_tradeInfo

trade info to be stored

updateTradeMaxClosingSlippageP

function updateTradeMaxClosingSlippageP(struct ITradingStorage.Id _tradeId, uint16 _maxSlippageP) external

Updates an existing trade max closing slippage %

Parameters

NameTypeDescription

_tradeId

id of the trade

_maxSlippageP

uint16

new max slippage % (1e3 precision)

updateTradeCollateralAmount

function updateTradeCollateralAmount(struct ITradingStorage.Id _tradeId, uint120 _collateralAmount) external

Updates an open trade collateral

Parameters

NameTypeDescription

_tradeId

id of updated trade

_collateralAmount

uint120

new collateral amount value (collateral precision)

updateTradePosition

function updateTradePosition(struct ITradingStorage.Id _tradeId, uint120 _collateralAmount, uint24 _leverage, uint64 _openPrice, bool _isPartialIncrease, bool _isPnlPositive) external

Updates an open trade collateral

Parameters

NameTypeDescription

_tradeId

id of updated trade

_collateralAmount

uint120

new collateral amount value (collateral precision)

_leverage

uint24

new leverage value

_openPrice

uint64

new open price value

_isPartialIncrease

bool

refreshes trade liquidation params if true

_isPnlPositive

bool

whether the pnl is positive (only relevant when closing)

updateOpenOrderDetails

function updateOpenOrderDetails(struct ITradingStorage.Id _tradeId, uint64 _openPrice, uint64 _tp, uint64 _sl, uint16 _maxSlippageP) external

Updates an open order details (limit/stop)

Parameters

NameTypeDescription

_tradeId

id of updated trade

_openPrice

uint64

new open price (1e10)

_tp

uint64

new take profit price (1e10)

_sl

uint64

new stop loss price (1e10)

_maxSlippageP

uint16

new max slippage % value (1e3)

updateTradeTp

function updateTradeTp(struct ITradingStorage.Id _tradeId, uint64 _newTp) external

Updates the take profit of an open trade

Parameters

NameTypeDescription

_tradeId

the trade id

_newTp

uint64

the new take profit (1e10 precision)

updateTradeSl

function updateTradeSl(struct ITradingStorage.Id _tradeId, uint64 _newSl) external

Updates the stop loss of an open trade

Parameters

NameTypeDescription

_tradeId

the trade id

_newSl

uint64

the new sl (1e10 precision)

closeTrade

function closeTrade(struct ITradingStorage.Id _tradeId, bool _isPnlPositive) external

Marks an open trade/limit/stop as closed

Parameters

NameTypeDescription

_tradeId

the trade id

_isPnlPositive

bool

whether the pnl is positive

storePendingOrder

function storePendingOrder(struct ITradingStorage.PendingOrder _pendingOrder) external returns (struct ITradingStorage.PendingOrder)

Stores a new pending order

Parameters

NameTypeDescription

_pendingOrder

the pending order to be stored

closePendingOrder

function closePendingOrder(struct ITradingStorage.Id _orderId) external

Closes a pending order

Parameters

NameTypeDescription

_orderId

the id of the pending order to be closed

getCollateral

function getCollateral(uint8 _index) external view returns (struct ITradingStorage.Collateral)

Returns collateral data by index

Parameters

NameTypeDescription

_index

uint8

the index of the supported collateral

isCollateralActive

function isCollateralActive(uint8 _index) external view returns (bool)

Returns whether can open new trades with a collateral

Parameters

NameTypeDescription

_index

uint8

the index of the collateral to check

isCollateralListed

function isCollateralListed(uint8 _index) external view returns (bool)

Returns whether a collateral has been listed

Parameters

NameTypeDescription

_index

uint8

the index of the collateral to check

getCollateralsCount

function getCollateralsCount() external view returns (uint8)

Returns the number of supported collaterals

getCollaterals

function getCollaterals() external view returns (struct ITradingStorage.Collateral[])

Returns the supported collaterals

getCollateralIndex

function getCollateralIndex(address _collateral) external view returns (uint8)

Returns the index of a supported collateral

Parameters

NameTypeDescription

_collateral

address

the address of the collateral

getTradingActivated

function getTradingActivated() external view returns (enum ITradingStorage.TradingActivated)

Returns the trading activated state

getTraderStored

function getTraderStored(address _trader) external view returns (bool)

Returns whether a trader is stored in the traders array

Parameters

NameTypeDescription

_trader

address

trader to check

getTradersCount

function getTradersCount() external view returns (uint256)

Returns the length of the traders array

getTraders

function getTraders(uint32 _offset, uint32 _limit) external view returns (address[])

Returns all traders that have open trades using a pagination system

Parameters

NameTypeDescription

_offset

uint32

start index in the traders array

_limit

uint32

end index in the traders array

getTrade

function getTrade(address _trader, uint32 _index) external view returns (struct ITradingStorage.Trade)

Returns open trade/limit/stop order

Parameters

NameTypeDescription

_trader

address

address of the trader

_index

uint32

index of the trade for trader

getTrades

function getTrades(address _trader) external view returns (struct ITradingStorage.Trade[])

Returns all open trades/limit/stop orders for a trader

Parameters

NameTypeDescription

_trader

address

address of the trader

getAllTradesForTraders

function getAllTradesForTraders(address[] _traders, uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.Trade[])

Returns all trade/limit/stop orders using a pagination system

Parameters

NameTypeDescription

_traders

address[]

list of traders to return trades for

_offset

uint256

index of first trade to return

_limit

uint256

index of last trade to return

getAllTrades

function getAllTrades(uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.Trade[])

Returns all trade/limit/stop orders using a pagination system. Calls getAllTradesForTraders internally with all traders.

Parameters

NameTypeDescription

_offset

uint256

index of first trade to return

_limit

uint256

index of last trade to return

getTradeInfo

function getTradeInfo(address _trader, uint32 _index) external view returns (struct ITradingStorage.TradeInfo)

Returns trade info of an open trade/limit/stop order

Parameters

NameTypeDescription

_trader

address

address of the trader

_index

uint32

index of the trade for trader

getTradeInfos

function getTradeInfos(address _trader) external view returns (struct ITradingStorage.TradeInfo[])

Returns all trade infos of open trade/limit/stop orders for a trader

Parameters

NameTypeDescription

_trader

address

address of the trader

getAllTradeInfosForTraders

function getAllTradeInfosForTraders(address[] _traders, uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.TradeInfo[])

Returns all trade infos of open trade/limit/stop orders using a pagination system

Parameters

NameTypeDescription

_traders

address[]

list of traders to return tradeInfo for

_offset

uint256

index of first tradeInfo to return

_limit

uint256

index of last tradeInfo to return

getAllTradeInfos

function getAllTradeInfos(uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.TradeInfo[])

Returns all trade infos of open trade/limit/stop orders using a pagination system. Calls getAllTradeInfosForTraders internally with all traders.

Parameters

NameTypeDescription

_offset

uint256

index of first tradeInfo to return

_limit

uint256

index of last tradeInfo to return

getPendingOrder

function getPendingOrder(struct ITradingStorage.Id _orderId) external view returns (struct ITradingStorage.PendingOrder)

Returns a pending ordeer

Parameters

NameTypeDescription

_orderId

id of the pending order

getPendingOrders

function getPendingOrders(address _user) external view returns (struct ITradingStorage.PendingOrder[])

Returns all pending orders for a trader

Parameters

NameTypeDescription

_user

address

address of the trader

getAllPendingOrdersForTraders

function getAllPendingOrdersForTraders(address[] _traders, uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.PendingOrder[])

Returns all pending orders using a pagination system

Parameters

NameTypeDescription

_traders

address[]

list of traders to return pendingOrder for

_offset

uint256

index of first pendingOrder to return

_limit

uint256

index of last pendingOrder to return

getAllPendingOrders

function getAllPendingOrders(uint256 _offset, uint256 _limit) external view returns (struct ITradingStorage.PendingOrder[])

Returns all pending orders using a pagination system Calls getAllPendingOrdersForTraders internally with all traders.

Parameters

NameTypeDescription

_offset

uint256

index of first pendingOrder to return

_limit

uint256

index of last pendingOrder to return

getTradePendingOrderBlock

function getTradePendingOrderBlock(struct ITradingStorage.Id _tradeId, enum ITradingStorage.PendingOrderType _orderType) external view returns (uint256)

Returns the block number of the pending order for a trade (0 = doesn't exist)

Parameters

NameTypeDescription

_tradeId

id of the trade

_orderType

enum ITradingStorage.PendingOrderType

pending order type to check

getCounters

function getCounters(address _trader, enum ITradingStorage.CounterType _type) external view returns (struct ITradingStorage.Counter)

Returns the counters of a trader (currentIndex / open count for trades/tradeInfos and pendingOrders mappings)

Parameters

NameTypeDescription

_trader

address

address of the trader

_type

enum ITradingStorage.CounterType

the counter type (trade/pending order)

getCountersForTraders

function getCountersForTraders(address[] _traders, enum ITradingStorage.CounterType _type) external view returns (struct ITradingStorage.Counter[])

Returns the counters for a list of traders

Parameters

NameTypeDescription

_traders

address[]

the list of traders

_type

enum ITradingStorage.CounterType

the counter type (trade/pending order)

getGToken

function getGToken(uint8 _collateralIndex) external view returns (address)

Returns the address of the gToken for a collateral stack

Parameters

NameTypeDescription

_collateralIndex

uint8

the index of the supported collateral

getTradeLiquidationParams

function getTradeLiquidationParams(address _trader, uint32 _index) external view returns (struct IPairsStorage.GroupLiquidationParams)

Returns the liquidation params for a trade

Parameters

NameTypeDescription

_trader

address

address of the trader

_index

uint32

index of the trade for trader

getTradesLiquidationParams

function getTradesLiquidationParams(address _trader) external view returns (struct IPairsStorage.GroupLiquidationParams[])

Returns all trade liquidation params of open trade/limit/stop orders for a trader

Parameters

NameTypeDescription

_trader

address

address of the trader

getAllTradesLiquidationParamsForTraders

function getAllTradesLiquidationParamsForTraders(address[] _traders, uint256 _offset, uint256 _limit) external view returns (struct IPairsStorage.GroupLiquidationParams[])

Returns all trade liquidation params of open trade/limit/stop orders using a pagination system

Parameters

NameTypeDescription

_traders

address[]

list of traders to return liq params for

_offset

uint256

index of first liq param to return

_limit

uint256

index of last liq param to return

getAllTradesLiquidationParams

function getAllTradesLiquidationParams(uint256 _offset, uint256 _limit) external view returns (struct IPairsStorage.GroupLiquidationParams[])

Returns all trade liquidation params of open trade/limit/stop orders using a pagination system Calls getAllTradesLiquidationParamsForTraders internally with all traders.

Parameters

NameTypeDescription

_offset

uint256

index of first liq param to return

_limit

uint256

index of last liq param to return

getCurrentContractsVersion

function getCurrentContractsVersion() external pure returns (enum ITradingStorage.ContractsVersion)

Returns the current contracts version

TradingActivatedUpdated

event TradingActivatedUpdated(enum ITradingStorage.TradingActivated activated)

Emitted when the trading activated state is updated

Parameters

NameTypeDescription

activated

enum ITradingStorage.TradingActivated

the new trading activated state

CollateralAdded

event CollateralAdded(address collateral, uint8 index, address gToken)

Emitted when a new supported collateral is added

Parameters

NameTypeDescription

collateral

address

the address of the collateral

index

uint8

the index of the supported collateral

gToken

address

the gToken contract of the collateral

CollateralUpdated

event CollateralUpdated(uint8 index, bool isActive)

Emitted when an existing supported collateral active state is updated

Parameters

NameTypeDescription

index

uint8

the index of the supported collateral

isActive

bool

the new active state

CollateralDisabled

event CollateralDisabled(uint8 index)

Emitted when an existing supported collateral is disabled (can still close trades but not open new ones)

Parameters

NameTypeDescription

index

uint8

the index of the supported collateral

GTokenUpdated

event GTokenUpdated(address collateral, uint8 index, address gToken)

Emitted when the contracts of a supported collateral trading stack are updated

Parameters

NameTypeDescription

collateral

address

the address of the collateral

index

uint8

the index of the supported collateral

gToken

address

the gToken contract of the collateral

TradeStored

event TradeStored(address user, uint32 index, struct ITradingStorage.Trade trade, struct ITradingStorage.TradeInfo tradeInfo, struct IPairsStorage.GroupLiquidationParams liquidationParams)

Emitted when a new trade is stored

Parameters

NameTypeDescription

user

address

trade user

index

uint32

trade index

trade

struct ITradingStorage.Trade

the trade stored

tradeInfo

struct ITradingStorage.TradeInfo

the trade info stored

liquidationParams

struct IPairsStorage.GroupLiquidationParams

the trade liquidation params stored

TradeMaxClosingSlippagePUpdated

event TradeMaxClosingSlippagePUpdated(address user, uint32 index, uint16 maxClosingSlippageP)

Emitted when the max closing slippage % of an open trade is updated

Parameters

NameTypeDescription

user

address

trade user

index

uint32

trade index

maxClosingSlippageP

uint16

new max closing slippage % value (1e3 precision)

TradeCollateralUpdated

event TradeCollateralUpdated(address user, uint32 index, uint120 collateralAmount)

Emitted when an open trade collateral is updated

Parameters

NameTypeDescription

user

address

trade user

index

uint32

trade index

collateralAmount

uint120

new collateral value (collateral precision)

TradePositionUpdated

event TradePositionUpdated(address user, uint32 index, uint120 collateralAmount, uint24 leverage, uint64 openPrice, uint64 newTp, uint64 newSl, bool isPartialIncrease, bool isPnlPositive)

Emitted when an open trade collateral is updated

Parameters

NameTypeDescription

user

address

trade user

index

uint32

trade index

collateralAmount

uint120

new collateral value (collateral precision)

leverage

uint24

new leverage value if present

openPrice

uint64

new open price value if present

newTp

uint64

newSl

uint64

isPartialIncrease

bool

true if trade liquidation params were refreshed

isPnlPositive

bool

true if trade pnl is positive (only relevant when closing)

OpenOrderDetailsUpdated

event OpenOrderDetailsUpdated(address user, uint32 index, uint64 openPrice, uint64 tp, uint64 sl, uint16 maxSlippageP)

Emitted when an existing trade/limit order/stop order is updated

Parameters

NameTypeDescription

user

address

trade user

index

uint32

trade index

openPrice

uint64

new open price value (1e10)

tp

uint64

new take profit value (1e10)

sl

uint64

new stop loss value (1e10)

maxSlippageP

uint16

new max slippage % value (1e3)

TradeTpUpdated

event TradeTpUpdated(address user, uint32 index, uint64 newTp)

Emitted when the take profit of an open trade is updated

Parameters

NameTypeDescription

user

address

trade user

index

uint32

trade index

newTp

uint64

the new take profit (1e10 precision)

TradeSlUpdated

event TradeSlUpdated(address user, uint32 index, uint64 newSl)

Emitted when the stop loss of an open trade is updated

Parameters

NameTypeDescription

user

address

trade user

index

uint32

trade index

newSl

uint64

the new sl (1e10 precision)

TradeClosed

event TradeClosed(address user, uint32 index, bool isPnlPositive)

Emitted when an open trade is closed

Parameters

NameTypeDescription

user

address

trade user

index

uint32

trade index

isPnlPositive

bool

true if trade pnl is positive

PendingOrderStored

event PendingOrderStored(struct ITradingStorage.PendingOrder pendingOrder)

Emitted when a new pending order is stored

Parameters

NameTypeDescription

pendingOrder

struct ITradingStorage.PendingOrder

the pending order stored

PendingOrderClosed

event PendingOrderClosed(struct ITradingStorage.Id orderId)

Emitted when a pending order is closed

Parameters

NameTypeDescription

orderId

struct ITradingStorage.Id

the id of the pending order closed

MissingCollaterals

error MissingCollaterals()

CollateralAlreadyActive

error CollateralAlreadyActive()

CollateralAlreadyDisabled

error CollateralAlreadyDisabled()

TradePositionSizeZero

error TradePositionSizeZero()

TradeOpenPriceZero

error TradeOpenPriceZero()

TradePairNotListed

error TradePairNotListed()

TradeTpInvalid

error TradeTpInvalid()

TradeSlInvalid

error TradeSlInvalid()

MaxSlippageZero

error MaxSlippageZero()

TradeInfoCollateralPriceUsdZero

error TradeInfoCollateralPriceUsdZero()

Last updated