ITradingInteractionsUtils

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

initializeTrading

function initializeTrading(uint16 _marketOrdersTimeoutBlocks, address[] _usersByPassTriggerLink) external

Initializes the trading facet

Parameters

Name
Type
Description

_marketOrdersTimeoutBlocks

uint16

The number of blocks after which a market order is considered timed out

_usersByPassTriggerLink

address[]

updateMarketOrdersTimeoutBlocks

function updateMarketOrdersTimeoutBlocks(uint16 _valueBlocks) external

Updates marketOrdersTimeoutBlocks

Parameters

Name
Type
Description

_valueBlocks

uint16

blocks after which a market order times out

function updateByPassTriggerLink(address[] _users, bool[] _shouldByPass) external

Updates the users that can bypass the link cost of triggerOrder

Parameters

Name
Type
Description

_users

address[]

array of addresses that can bypass the link cost of triggerOrder

_shouldByPass

bool[]

whether each user should bypass the link cost

setTradingDelegate

_Sets delegate as the new delegate of caller (can call delegatedAction)

Parameters

Name
Type
Description

_delegate

address

the new delegate address

removeTradingDelegate

Removes the delegate of caller (can't call delegatedAction)

delegatedTradingAction

_Caller executes a trading action on behalf of trader using delegatecall

Parameters

Name
Type
Description

_trader

address

the trader address to execute the trading action for

_callData

bytes

the data to be executed (open trade/close trade, etc.)

openTrade

Opens a new trade/limit order/stop order

Parameters

Name
Type
Description

_trade

the trade to be opened

_maxSlippageP

uint16

the maximum allowed slippage % when open the trade (1e3 precision)

_referrer

address

the address of the referrer (can only be set once for a trader)

openTradeNative

Wraps native token and opens a new trade/limit order/stop order

Parameters

Name
Type
Description

_trade

the trade to be opened

_maxSlippageP

uint16

the maximum allowed slippage % when open the trade (1e3 precision)

_referrer

address

the address of the referrer (can only be set once for a trader)

updateMaxClosingSlippageP

Updates existing trade's max closing slippage % for caller

Parameters

Name
Type
Description

_index

uint32

index of trade

_maxSlippageP

uint16

new max closing slippage % (1e3 precision)

closeTradeMarket

Closes an open trade (market order) for caller

Parameters

Name
Type
Description

_index

uint32

the index of the trade of caller

_expectedPrice

uint64

expected closing price, used to check max slippage (1e10 precision)

updateOpenOrder

Updates an existing limit/stop order for caller

Parameters

Name
Type
Description

_index

uint32

index of limit/stop order of caller

_triggerPrice

uint64

new trigger price of limit/stop order (1e10 precision)

_tp

uint64

new tp of limit/stop order (1e10 precision)

_sl

uint64

new sl of limit/stop order (1e10 precision)

_maxSlippageP

uint16

new max slippage % of limit/stop order (1e3 precision)

cancelOpenOrder

Cancels an open limit/stop order for caller

Parameters

Name
Type
Description

_index

uint32

index of limit/stop order of caller

updateTp

Updates the tp of an open trade for caller

Parameters

Name
Type
Description

_index

uint32

index of open trade of caller

_newTp

uint64

new tp of open trade (1e10 precision)

updateSl

Updates the sl of an open trade for caller

Parameters

Name
Type
Description

_index

uint32

index of open trade of caller

_newSl

uint64

new sl of open trade (1e10 precision)

triggerOrder

Initiates a new trigger order (for tp/sl/liq/limit/stop orders)

Parameters

Name
Type
Description

_packed

uint256

the packed data of the trigger order (orderType, trader, index)

cancelOrderAfterTimeout

Safety function in case oracles don't answer in time, allows caller to cancel a pending order and if relevant claim back any stuck collateral Only allowed for MARKET_OPEN, MARKET_CLOSE, UPDATE_LEVERAGE, MARKET_PARTIAL_OPEN, and MARKET_PARTIAL_CLOSE orders

Parameters

Name
Type
Description

_orderIndex

uint32

the id of the pending order to cancel

updateLeverage

Update trade leverage

Parameters

Name
Type
Description

_index

uint32

index of trade

_newLeverage

uint24

new leverage (1e3)

increasePositionSize

Increase trade position size

Parameters

Name
Type
Description

_index

uint32

index of trade

_collateralDelta

uint120

collateral to add (collateral precision)

_leverageDelta

uint24

partial trade leverage (1e3)

_expectedPrice

uint64

expected price of execution (1e10 precision)

_maxSlippageP

uint16

max slippage % (1e3)

decreasePositionSize

Decrease trade position size

Parameters

Name
Type
Description

_index

uint32

index of trade

_collateralDelta

uint120

collateral to remove (collateral precision)

_leverageDelta

uint24

leverage to reduce by (1e3)

_expectedPrice

uint64

expected closing price, used to check max slippage (1e10 precision)

getWrappedNativeToken

Returns the wrapped native token or address(0) if the current chain, or the wrapped token, is not supported.

isWrappedNativeToken

Returns true if the token is the wrapped native token for the current chain, where supported.

Parameters

Name
Type
Description

_token

address

token address

getTradingDelegate

Returns the address a trader delegates his trading actions to

Parameters

Name
Type
Description

_trader

address

address of the trader

getMarketOrdersTimeoutBlocks

Returns the current marketOrdersTimeoutBlocks value

Returns whether a user bypasses trigger link costs

Parameters

Name
Type
Description

_user

address

address of the user

MarketOrdersTimeoutBlocksUpdated

Emitted when marketOrdersTimeoutBlocks is updated

Parameters

Name
Type
Description

newValueBlocks

uint256

the new value of marketOrdersTimeoutBlocks

ByPassTriggerLinkUpdated

Emitted when a user is allowed/disallowed to bypass the link cost of triggerOrder

Parameters

Name
Type
Description

user

address

address of the user

bypass

bool

whether the user can bypass the link cost of triggerOrder

MarketOrderInitiated

Emitted when a market order is initiated

Parameters

Name
Type
Description

orderId

struct ITradingStorage.Id

price aggregator order id of the pending market order

trader

address

address of the trader

pairIndex

uint16

index of the trading pair

open

bool

whether the market order is for opening or closing a trade

OpenOrderPlaced

Emitted when a new limit/stop order is placed

Parameters

Name
Type
Description

trader

address

address of the trader

pairIndex

uint16

index of the trading pair

index

uint32

index of the open limit order for caller

OpenLimitUpdated

Parameters

Name
Type
Description

trader

address

address of the trader

pairIndex

uint16

index of the trading pair

index

uint32

index of the open limit/stop order for caller

newPrice

uint64

new trigger price (1e10 precision)

newTp

uint64

new tp (1e10 precision)

newSl

uint64

new sl (1e10 precision)

maxSlippageP

uint64

new max slippage % (1e3 precision)

OpenLimitCanceled

Emitted when a limit/stop order is canceled (collateral sent back to trader)

Parameters

Name
Type
Description

trader

address

address of the trader

pairIndex

uint16

index of the trading pair

index

uint32

index of the open limit/stop order for caller

TriggerOrderInitiated

Emitted when a trigger order is initiated (tp/sl/liq/limit/stop orders)

Parameters

Name
Type
Description

orderId

struct ITradingStorage.Id

price aggregator order id of the pending trigger order

trader

address

address of the trader

pairIndex

uint16

index of the trading pair

byPassesLinkCost

bool

whether the caller bypasses the link cost

ChainlinkCallbackTimeout

Emitted when a pending market order is canceled due to timeout

Parameters

Name
Type
Description

pendingOrderId

struct ITradingStorage.Id

id of the pending order

pairIndex

uint256

index of the trading pair

CouldNotCloseTrade

Emitted when a pending market order is canceled due to timeout and new closeTradeMarket() call failed

Parameters

Name
Type
Description

trader

address

address of the trader

pairIndex

uint16

index of the trading pair

index

uint32

index of the open trade for caller

NativeTokenWrapped

Emitted when a native token is wrapped

Parameters

Name
Type
Description

trader

address

address of the trader

nativeTokenAmount

uint256

amount of native token wrapped

NotWrappedNativeToken

DelegateNotApproved

PriceZero

AboveExposureLimits

CollateralNotActive

PriceImpactTooHigh

NoTrade

NoOrder

AlreadyBeingMarketClosed

ConflictingPendingOrder

WrongLeverage

WrongTp

WrongSl

WaitTimeout

PendingTrigger

NoSl

NoTp

NotYourOrder

DelegatedActionNotAllowed

InsufficientCollateral

Last updated

Was this helpful?