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

Name
Type
Description

_windowsDuration

uint48

windows duration (seconds)

_windowsCount

uint48

windows count

initializeNegPnlCumulVolMultiplier

function initializeNegPnlCumulVolMultiplier(uint40 _negPnlCumulVolMultiplier) external

Initializes negative pnl cumulative volume multiplier

Parameters

Name
Type
Description

_negPnlCumulVolMultiplier

uint40

new value (1e10)

initializePairFactors

function initializePairFactors(uint16[] _pairIndices, uint40[] _protectionCloseFactors, uint32[] _protectionCloseFactorBlocks, uint40[] _cumulativeFactors) external

Initializes pair factors

Parameters

Name
Type
Description

_pairIndices

uint16[]

pair indices to initialize

_protectionCloseFactors

uint40[]

protection close factors (1e10)

_protectionCloseFactorBlocks

uint32[]

protection close factor blocks

_cumulativeFactors

uint40[]

cumulative factors (1e10)

setPriceImpactWindowsCount

Updates price impact windows count

Parameters

Name
Type
Description

_newWindowsCount

uint48

new windows count

setPriceImpactWindowsDuration

Updates price impact windows duration

Parameters

Name
Type
Description

_newWindowsDuration

uint48

new windows duration (seconds)

setNegPnlCumulVolMultiplier

Updates negative pnl cumulative volume multiplier

Parameters

Name
Type
Description

_negPnlCumulVolMultiplier

uint40

new value (1e10)

setProtectionCloseFactorWhitelist

Whitelists/unwhitelists traders from protection close factor

Parameters

Name
Type
Description

_traders

address[]

traders addresses

_whitelisted

bool[]

values

setPairDepths

Updates pairs 1% depths above and below

Parameters

Name
Type
Description

_indices

uint256[]

indices of pairs

_depthsAboveUsd

uint128[]

depths above the price in USD

_depthsBelowUsd

uint128[]

depths below the price in USD

setProtectionCloseFactors

Sets protection close factors for pairs

Parameters

Name
Type
Description

_pairIndices

uint16[]

pair indices to update

_protectionCloseFactors

uint40[]

new protection close factors (1e10)

setProtectionCloseFactorBlocks

Sets protection close factor blocks duration for pairs

Parameters

Name
Type
Description

_pairIndices

uint16[]

pair indices to update

_protectionCloseFactorBlocks

uint32[]

new protection close factor blocks

setCumulativeFactors

Sets cumulative factors for pairs

Parameters

Name
Type
Description

_pairIndices

uint16[]

pair indices to update

_cumulativeFactors

uint40[]

new cumulative factors (1e10)

setExemptOnOpen

Sets whether pairs are exempt from price impact on open

Parameters

Name
Type
Description

_pairIndices

uint16[]

pair indices to update

_exemptOnOpen

bool[]

new values

setExemptAfterProtectionCloseFactor

Sets whether pairs are exempt from price impact on close once protection close factor has expired

Parameters

Name
Type
Description

_pairIndices

uint16[]

pair indices to update

_exemptAfterProtectionCloseFactor

bool[]

new values

addPriceImpactOpenInterest

Adds open interest to current window

Parameters

Name
Type
Description

_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

Returns active open interest used in price impact calculation for a pair and side (long/short)

Parameters

Name
Type
Description

_pairIndex

uint256

index of pair

_long

bool

true for long, false for short

getTradePriceImpact

Returns price impact % (1e10 precision) and price after impact (1e10 precision) for a trade

Parameters

Name
Type
Description

_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

Returns a pair's depths above and below the price

Parameters

Name
Type
Description

_pairIndex

uint256

index of pair

getOiWindowsSettings

Returns current price impact windows settings

getOiWindow

Returns OI window details (long/short OI)

Parameters

Name
Type
Description

_windowsDuration

uint48

windows duration (seconds)

_pairIndex

uint256

index of pair

_windowId

uint256

id of window

getOiWindows

Returns multiple OI windows details (long/short OI)

Parameters

Name
Type
Description

_windowsDuration

uint48

windows duration (seconds)

_pairIndex

uint256

index of pair

_windowIds

uint256[]

ids of windows

getPairDepths

Returns depths above and below the price for multiple pairs

Parameters

Name
Type
Description

_indices

uint256[]

indices of pairs

getPairFactors

Returns factors for a set of pairs (1e10)

Parameters

Name
Type
Description

_indices

uint256[]

indices of pairs

getNegPnlCumulVolMultiplier

Returns negative pnl cumulative volume multiplier

getProtectionCloseFactorWhitelist

Returns whether a trader is whitelisted from protection close factor

OiWindowsSettingsInitialized

Triggered when OiWindowsSettings is initialized (once)

Parameters

Name
Type
Description

windowsDuration

uint48

duration of each window (seconds)

windowsCount

uint48

number of windows

PriceImpactWindowsCountUpdated

Triggered when OiWindowsSettings.windowsCount is updated

Parameters

Name
Type
Description

windowsCount

uint48

new number of windows

PriceImpactWindowsDurationUpdated

Triggered when OiWindowsSettings.windowsDuration is updated

Parameters

Name
Type
Description

windowsDuration

uint48

new duration of each window (seconds)

NegPnlCumulVolMultiplierUpdated

Triggered when negPnlCumulVolMultiplier is updated

Parameters

Name
Type
Description

negPnlCumulVolMultiplier

uint40

new value (1e10)

ProtectionCloseFactorWhitelistUpdated

Triggered when a trader is whitelisted/unwhitelisted from protection close factor

Parameters

Name
Type
Description

trader

address

trader address

whitelisted

bool

true if whitelisted, false if unwhitelisted

ProtectionCloseFactorUpdated

Triggered when a pair's protection close factor is updated

Parameters

Name
Type
Description

pairIndex

uint256

index of the pair

protectionCloseFactor

uint40

new protection close factor (1e10)

ProtectionCloseFactorBlocksUpdated

Triggered when a pair's protection close factor duration is updated

Parameters

Name
Type
Description

pairIndex

uint256

index of the pair

protectionCloseFactorBlocks

uint32

new protection close factor blocks

CumulativeFactorUpdated

Triggered when a pair's cumulative factor is updated

Parameters

Name
Type
Description

pairIndex

uint256

index of the pair

cumulativeFactor

uint40

new cumulative factor (1e10)

ExemptOnOpenUpdated

Triggered when a pair's exemptOnOpen value is updated

Parameters

Name
Type
Description

pairIndex

uint256

index of the pair

exemptOnOpen

bool

whether the pair is exempt of price impact on open

ExemptAfterProtectionCloseFactorUpdated

Triggered when a pair's exemptAfterProtectionCloseFactor value is updated

Parameters

Name
Type
Description

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

Triggered when OI is added to a window.

Parameters

Name
Type
Description

oiWindowUpdate

struct IPriceImpact.OiWindowUpdate

OI window update details (windowsDuration, pairIndex, windowId, etc.)

PriceImpactOiTransferredPairs

Triggered when multiple pairs' OI are transferred to a new window (when updating windows duration).

Parameters

Name
Type
Description

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

Triggered when a pair's OI is transferred to a new window.

Parameters

Name
Type
Description

pairIndex

uint256

index of the pair

totalPairOi

struct IPriceImpact.PairOi

total USD long/short OI of the pair (1e18 precision)

OnePercentDepthUpdated

Triggered when a pair's depth is updated.

Parameters

Name
Type
Description

pairIndex

uint256

index of the pair

valueAboveUsd

uint128

new USD depth above the price

valueBelowUsd

uint128

new USD depth below the price

WrongWindowsDuration

WrongWindowsCount

Was this helpful?