IPriceImpactUtils
Interface for GNSPriceImpact facet (inherits types and also contains functions, events, and custom errors)
initializePriceImpact
function initializePriceImpact(uint48 _windowsDuration, uint48 _windowsCount) external
Initializes price impact facet
Parameters
_windowsDuration
uint48
windows duration (seconds)
_windowsCount
uint48
windows count
initializeNegPnlCumulVolMultiplier
function initializeNegPnlCumulVolMultiplier(uint40 _negPnlCumulVolMultiplier) external
Initializes negative pnl cumulative volume multiplier
Parameters
_negPnlCumulVolMultiplier
uint40
new value (1e10)
initializePairFactors
function initializePairFactors(uint16[] _pairIndices, uint40[] _protectionCloseFactors, uint32[] _protectionCloseFactorBlocks, uint40[] _cumulativeFactors) external
Initializes pair factors
Parameters
_pairIndices
uint16[]
pair indices to initialize
_protectionCloseFactors
uint40[]
protection close factors (1e10)
_protectionCloseFactorBlocks
uint32[]
protection close factor blocks
_cumulativeFactors
uint40[]
cumulative factors (1e10)
setPriceImpactWindowsCount
function setPriceImpactWindowsCount(uint48 _newWindowsCount) external
Updates price impact windows count
Parameters
_newWindowsCount
uint48
new windows count
setPriceImpactWindowsDuration
function setPriceImpactWindowsDuration(uint48 _newWindowsDuration) external
Updates price impact windows duration
Parameters
_newWindowsDuration
uint48
new windows duration (seconds)
setNegPnlCumulVolMultiplier
function setNegPnlCumulVolMultiplier(uint40 _negPnlCumulVolMultiplier) external
Updates negative pnl cumulative volume multiplier
Parameters
_negPnlCumulVolMultiplier
uint40
new value (1e10)
setProtectionCloseFactorWhitelist
function setProtectionCloseFactorWhitelist(address[] _traders, bool[] _whitelisted) external
Whitelists/unwhitelists traders from protection close factor
Parameters
_traders
address[]
traders addresses
_whitelisted
bool[]
values
setPairDepths
function setPairDepths(uint256[] _indices, uint128[] _depthsAboveUsd, uint128[] _depthsBelowUsd) external
Updates pairs 1% depths above and below
Parameters
_indices
uint256[]
indices of pairs
_depthsAboveUsd
uint128[]
depths above the price in USD
_depthsBelowUsd
uint128[]
depths below the price in USD
setProtectionCloseFactors
function setProtectionCloseFactors(uint16[] _pairIndices, uint40[] _protectionCloseFactors) external
Sets protection close factors for pairs
Parameters
_pairIndices
uint16[]
pair indices to update
_protectionCloseFactors
uint40[]
new protection close factors (1e10)
setProtectionCloseFactorBlocks
function setProtectionCloseFactorBlocks(uint16[] _pairIndices, uint32[] _protectionCloseFactorBlocks) external
Sets protection close factor blocks duration for pairs
Parameters
_pairIndices
uint16[]
pair indices to update
_protectionCloseFactorBlocks
uint32[]
new protection close factor blocks
setCumulativeFactors
function setCumulativeFactors(uint16[] _pairIndices, uint40[] _cumulativeFactors) external
Sets cumulative factors for pairs
Parameters
_pairIndices
uint16[]
pair indices to update
_cumulativeFactors
uint40[]
new cumulative factors (1e10)
setExemptOnOpen
function setExemptOnOpen(uint16[] _pairIndices, bool[] _exemptOnOpen) external
Sets whether pairs are exempt from price impact on open
Parameters
_pairIndices
uint16[]
pair indices to update
_exemptOnOpen
bool[]
new values
setExemptAfterProtectionCloseFactor
function setExemptAfterProtectionCloseFactor(uint16[] _pairIndices, bool[] _exemptAfterProtectionCloseFactor) external
Sets whether pairs are exempt from price impact on close once protection close factor has expired
Parameters
_pairIndices
uint16[]
pair indices to update
_exemptAfterProtectionCloseFactor
bool[]
new values
addPriceImpactOpenInterest
function addPriceImpactOpenInterest(address _trader, uint32 _index, uint256 _oiDeltaCollateral, bool _open, bool _isPnlPositive) external
Adds open interest to current window
Parameters
_trader
address
trader address
_index
uint32
trade index
_oiDeltaCollateral
uint256
open interest to add (collateral precision)
_open
bool
whether it corresponds to opening or closing a trade
_isPnlPositive
bool
whether it corresponds to a positive pnl trade (only relevant when _open = false)
getPriceImpactOi
function getPriceImpactOi(uint256 _pairIndex, bool _long) external view returns (uint256 activeOi)
Returns active open interest used in price impact calculation for a pair and side (long/short)
Parameters
_pairIndex
uint256
index of pair
_long
bool
true for long, false for short
getTradePriceImpact
function getTradePriceImpact(address _trader, uint256 _marketPrice, uint256 _pairIndex, bool _long, uint256 _tradeOpenInterestUsd, bool _isPnlPositive, bool _open, uint256 _lastPosIncreaseBlock, enum ITradingStorage.ContractsVersion _contractsVersion) external view returns (uint256 priceImpactP, uint256 priceAfterImpact)
Returns price impact % (1e10 precision) and price after impact (1e10 precision) for a trade
Parameters
_trader
address
trader address (to check if whitelisted from protection close factor)
_marketPrice
uint256
market price (1e10 precision)
_pairIndex
uint256
index of pair
_long
bool
true for long, false for short
_tradeOpenInterestUsd
uint256
open interest of trade in USD (1e18 precision)
_isPnlPositive
bool
true if positive pnl, false if negative pnl (only relevant when _open = false)
_open
bool
true on open, false on close
_lastPosIncreaseBlock
uint256
block when trade position size was last increased (only relevant when _open = false)
_contractsVersion
enum ITradingStorage.ContractsVersion
trade contracts version
getPairDepth
function getPairDepth(uint256 _pairIndex) external view returns (struct IPriceImpact.PairDepth)
Returns a pair's depths above and below the price
Parameters
_pairIndex
uint256
index of pair
getOiWindowsSettings
function getOiWindowsSettings() external view returns (struct IPriceImpact.OiWindowsSettings)
Returns current price impact windows settings
getOiWindow
function getOiWindow(uint48 _windowsDuration, uint256 _pairIndex, uint256 _windowId) external view returns (struct IPriceImpact.PairOi)
Returns OI window details (long/short OI)
Parameters
_windowsDuration
uint48
windows duration (seconds)
_pairIndex
uint256
index of pair
_windowId
uint256
id of window
getOiWindows
function getOiWindows(uint48 _windowsDuration, uint256 _pairIndex, uint256[] _windowIds) external view returns (struct IPriceImpact.PairOi[])
Returns multiple OI windows details (long/short OI)
Parameters
_windowsDuration
uint48
windows duration (seconds)
_pairIndex
uint256
index of pair
_windowIds
uint256[]
ids of windows
getPairDepths
function getPairDepths(uint256[] _indices) external view returns (struct IPriceImpact.PairDepth[])
Returns depths above and below the price for multiple pairs
Parameters
_indices
uint256[]
indices of pairs
getPairFactors
function getPairFactors(uint256[] _indices) external view returns (struct IPriceImpact.PairFactors[])
Returns factors for a set of pairs (1e10)
Parameters
_indices
uint256[]
indices of pairs
getNegPnlCumulVolMultiplier
function getNegPnlCumulVolMultiplier() external view returns (uint48)
Returns negative pnl cumulative volume multiplier
getProtectionCloseFactorWhitelist
function getProtectionCloseFactorWhitelist(address _trader) external view returns (bool)
Returns whether a trader is whitelisted from protection close factor
OiWindowsSettingsInitialized
event OiWindowsSettingsInitialized(uint48 windowsDuration, uint48 windowsCount)
Triggered when OiWindowsSettings is initialized (once)
Parameters
windowsDuration
uint48
duration of each window (seconds)
windowsCount
uint48
number of windows
PriceImpactWindowsCountUpdated
event PriceImpactWindowsCountUpdated(uint48 windowsCount)
Triggered when OiWindowsSettings.windowsCount is updated
Parameters
windowsCount
uint48
new number of windows
PriceImpactWindowsDurationUpdated
event PriceImpactWindowsDurationUpdated(uint48 windowsDuration)
Triggered when OiWindowsSettings.windowsDuration is updated
Parameters
windowsDuration
uint48
new duration of each window (seconds)
NegPnlCumulVolMultiplierUpdated
event NegPnlCumulVolMultiplierUpdated(uint40 negPnlCumulVolMultiplier)
Triggered when negPnlCumulVolMultiplier is updated
Parameters
negPnlCumulVolMultiplier
uint40
new value (1e10)
ProtectionCloseFactorWhitelistUpdated
event ProtectionCloseFactorWhitelistUpdated(address trader, bool whitelisted)
Triggered when a trader is whitelisted/unwhitelisted from protection close factor
Parameters
trader
address
trader address
whitelisted
bool
true if whitelisted, false if unwhitelisted
ProtectionCloseFactorUpdated
event ProtectionCloseFactorUpdated(uint256 pairIndex, uint40 protectionCloseFactor)
Triggered when a pair's protection close factor is updated
Parameters
pairIndex
uint256
index of the pair
protectionCloseFactor
uint40
new protection close factor (1e10)
ProtectionCloseFactorBlocksUpdated
event ProtectionCloseFactorBlocksUpdated(uint256 pairIndex, uint32 protectionCloseFactorBlocks)
Triggered when a pair's protection close factor duration is updated
Parameters
pairIndex
uint256
index of the pair
protectionCloseFactorBlocks
uint32
new protection close factor blocks
CumulativeFactorUpdated
event CumulativeFactorUpdated(uint256 pairIndex, uint40 cumulativeFactor)
Triggered when a pair's cumulative factor is updated
Parameters
pairIndex
uint256
index of the pair
cumulativeFactor
uint40
new cumulative factor (1e10)
ExemptOnOpenUpdated
event ExemptOnOpenUpdated(uint256 pairIndex, bool exemptOnOpen)
Triggered when a pair's exemptOnOpen value is updated
Parameters
pairIndex
uint256
index of the pair
exemptOnOpen
bool
whether the pair is exempt of price impact on open
ExemptAfterProtectionCloseFactorUpdated
event ExemptAfterProtectionCloseFactorUpdated(uint256 pairIndex, bool exemptAfterProtectionCloseFactor)
Triggered when a pair's exemptAfterProtectionCloseFactor value is updated
Parameters
pairIndex
uint256
index of the pair
exemptAfterProtectionCloseFactor
bool
whether the pair is exempt of price impact on close once protection close factor has expired
PriceImpactOpenInterestAdded
event PriceImpactOpenInterestAdded(struct IPriceImpact.OiWindowUpdate oiWindowUpdate)
Triggered when OI is added to a window.
Parameters
oiWindowUpdate
struct IPriceImpact.OiWindowUpdate
OI window update details (windowsDuration, pairIndex, windowId, etc.)
PriceImpactOiTransferredPairs
event PriceImpactOiTransferredPairs(uint256 pairsCount, uint256 prevCurrentWindowId, uint256 prevEarliestWindowId, uint256 newCurrentWindowId)
Triggered when multiple pairs' OI are transferred to a new window (when updating windows duration).
Parameters
pairsCount
uint256
number of pairs
prevCurrentWindowId
uint256
previous current window ID corresponding to previous window duration
prevEarliestWindowId
uint256
previous earliest window ID corresponding to previous window duration
newCurrentWindowId
uint256
new current window ID corresponding to new window duration
PriceImpactOiTransferredPair
event PriceImpactOiTransferredPair(uint256 pairIndex, struct IPriceImpact.PairOi totalPairOi)
Triggered when a pair's OI is transferred to a new window.
Parameters
pairIndex
uint256
index of the pair
totalPairOi
struct IPriceImpact.PairOi
total USD long/short OI of the pair (1e18 precision)
OnePercentDepthUpdated
event OnePercentDepthUpdated(uint256 pairIndex, uint128 valueAboveUsd, uint128 valueBelowUsd)
Triggered when a pair's depth is updated.
Parameters
pairIndex
uint256
index of the pair
valueAboveUsd
uint128
new USD depth above the price
valueBelowUsd
uint128
new USD depth below the price
WrongWindowsDuration
error WrongWindowsDuration()
WrongWindowsCount
error WrongWindowsCount()
Was this helpful?