IPriceAggregatorUtils
Interface for GNSPriceAggregator facet (inherits types and also contains functions, events, and custom errors)
initializePriceAggregator
function initializePriceAggregator(address _linkToken, contract IChainlinkFeed _linkUsdPriceFeed, uint24 _twapInterval, uint8 _minAnswers, address[] _oracles, bytes32[2] _jobIds, uint8[] _collateralIndices, struct IPriceAggregator.LiquidityPoolInput[] _gnsCollateralLiquidityPools, contract IChainlinkFeed[] _collateralUsdPriceFeeds) external
Initializes price aggregator facet
Parameters
_linkToken
address
LINK token address
_linkUsdPriceFeed
contract IChainlinkFeed
LINK/USD price feed address
_twapInterval
uint24
TWAP interval (seconds)
_minAnswers
uint8
answers count at which a trade is executed with median
_oracles
address[]
chainlink oracle addresses
_jobIds
bytes32[2]
chainlink job ids (market/lookback)
_collateralIndices
uint8[]
collateral indices
_gnsCollateralLiquidityPools
corresponding GNS/collateral liquidity pool values
_collateralUsdPriceFeeds
contract IChainlinkFeed[]
corresponding collateral/USD chainlink price feeds
updateLinkUsdPriceFeed
function updateLinkUsdPriceFeed(contract IChainlinkFeed _value) external
Updates LINK/USD chainlink price feed
Parameters
_value
contract IChainlinkFeed
new value
updateCollateralUsdPriceFeed
function updateCollateralUsdPriceFeed(uint8 _collateralIndex, contract IChainlinkFeed _value) external
Updates collateral/USD chainlink price feed
Parameters
_collateralIndex
uint8
collateral index
_value
contract IChainlinkFeed
new value
updateCollateralGnsLiquidityPool
function updateCollateralGnsLiquidityPool(uint8 _collateralIndex, struct IPriceAggregator.LiquidityPoolInput _liquidityPoolInput) external
Updates collateral/GNS liquidity pool
Parameters
_collateralIndex
uint8
collateral index
updateTwapInterval
function updateTwapInterval(uint24 _twapInterval) external
Updates TWAP interval
Parameters
_twapInterval
uint24
new value (seconds)
updateMinAnswers
function updateMinAnswers(uint8 _value) external
Updates minimum answers count
Parameters
_value
uint8
new value
addOracle
function addOracle(address _a) external
Adds an oracle
Parameters
_a
address
new value
replaceOracle
function replaceOracle(uint256 _index, address _a) external
Replaces an oracle
Parameters
_index
uint256
oracle index
_a
address
new value
removeOracle
function removeOracle(uint256 _index) external
Removes an oracle
Parameters
_index
uint256
oracle index
setMarketJobId
function setMarketJobId(bytes32 _jobId) external
Updates market job id
Parameters
_jobId
bytes32
new value
setLimitJobId
function setLimitJobId(bytes32 _jobId) external
Updates lookback job id
Parameters
_jobId
bytes32
new value
getPrice
function getPrice(uint8 _collateralIndex, uint16 _pairIndex, struct ITradingStorage.Id _tradeId, struct ITradingStorage.Id _orderId, enum ITradingStorage.PendingOrderType _orderType, uint256 _positionSizeCollateral, uint256 _fromBlock) external
Requests price from oracles
Parameters
_collateralIndex
uint8
collateral index
_pairIndex
uint16
pair index
_orderType
enum ITradingStorage.PendingOrderType
order type
_positionSizeCollateral
uint256
position size (collateral precision)
_fromBlock
uint256
block number from which to start fetching prices (for lookbacks)
fulfill
function fulfill(bytes32 _requestId, uint256 _priceData) external
Fulfills price request, called by chainlink oracles
Parameters
_requestId
bytes32
request id
_priceData
uint256
price data
claimBackLink
function claimBackLink() external
Claims back LINK tokens, called by gov fund
getLinkFee
function getLinkFee(uint8 _collateralIndex, address _trader, uint16 _pairIndex, uint256 _positionSizeCollateral) external view returns (uint256)
Returns LINK fee for price request
Parameters
_collateralIndex
uint8
collateral index
_trader
address
trader address
_pairIndex
uint16
pair index
_positionSizeCollateral
uint256
position size in collateral tokens (collateral precision)
getCollateralPriceUsd
function getCollateralPriceUsd(uint8 _collateralIndex) external view returns (uint256)
Returns collateral/USD price
Parameters
_collateralIndex
uint8
index of collateral
getUsdNormalizedValue
function getUsdNormalizedValue(uint8 _collateralIndex, uint256 _collateralValue) external view returns (uint256)
Returns USD normalized value from collateral value
Parameters
_collateralIndex
uint8
index of collateral
_collateralValue
uint256
collateral value (collateral precision)
getCollateralFromUsdNormalizedValue
function getCollateralFromUsdNormalizedValue(uint8 _collateralIndex, uint256 _normalizedValue) external view returns (uint256)
Returns collateral value (collateral precision) from USD normalized value
Parameters
_collateralIndex
uint8
index of collateral
_normalizedValue
uint256
normalized value (1e18 USD)
getGnsPriceUsd
function getGnsPriceUsd(uint8 _collateralIndex) external view returns (uint256)
Returns GNS/USD price based on GNS/collateral price
Parameters
_collateralIndex
uint8
index of collateral
getGnsPriceUsd
function getGnsPriceUsd(uint8 _collateralIndex, uint256 _gnsPriceCollateral) external view returns (uint256)
Returns GNS/USD price based on GNS/collateral price
Parameters
_collateralIndex
uint8
index of collateral
_gnsPriceCollateral
uint256
GNS/collateral price (1e10)
getGnsPriceCollateralIndex
function getGnsPriceCollateralIndex(uint8 _collateralIndex) external view returns (uint256)
Returns GNS/collateral price
Parameters
_collateralIndex
uint8
index of collateral
getGnsPriceCollateralAddress
function getGnsPriceCollateralAddress(address _collateral) external view returns (uint256)
Returns GNS/collateral price
Parameters
_collateral
address
address of the collateral
getLinkUsdPriceFeed
function getLinkUsdPriceFeed() external view returns (contract IChainlinkFeed)
Returns the link/usd price feed address
getTwapInterval
function getTwapInterval() external view returns (uint24)
Returns the twap interval in seconds
getMinAnswers
function getMinAnswers() external view returns (uint8)
Returns the minimum answers to execute an order and take the median
getMarketJobId
function getMarketJobId() external view returns (bytes32)
Returns the market job id
getLimitJobId
function getLimitJobId() external view returns (bytes32)
Returns the limit job id
getOracle
function getOracle(uint256 _index) external view returns (address)
Returns a specific oracle
Parameters
_index
uint256
index of the oracle
getOracles
function getOracles() external view returns (address[])
Returns all oracles
getCollateralGnsLiquidityPool
function getCollateralGnsLiquidityPool(uint8 _collateralIndex) external view returns (struct IPriceAggregator.LiquidityPoolInfo)
Returns collateral/gns liquidity pool info
Parameters
_collateralIndex
uint8
index of collateral
getCollateralUsdPriceFeed
function getCollateralUsdPriceFeed(uint8 _collateralIndex) external view returns (contract IChainlinkFeed)
Returns collateral/usd chainlink price feed
Parameters
_collateralIndex
uint8
index of collateral
getPriceAggregatorOrder
function getPriceAggregatorOrder(bytes32 _requestId) external view returns (struct IPriceAggregator.Order)
Returns order data
Parameters
_requestId
bytes32
index of collateral
getPriceAggregatorOrderAnswers
function getPriceAggregatorOrderAnswers(struct ITradingStorage.Id _orderId) external view returns (struct IPriceAggregator.OrderAnswer[])
Returns order data
Parameters
_orderId
ITradingStorage.Id
order id
getChainlinkToken
function getChainlinkToken() external view returns (address)
Returns chainlink token address
getRequestCount
function getRequestCount() external view returns (uint256)
Returns requestCount (used by ChainlinkClientUtils)
getPendingRequest
function getPendingRequest(bytes32 _id) external view returns (address)
Returns pendingRequests mapping entry (used by ChainlinkClientUtils)
LinkUsdPriceFeedUpdated
event LinkUsdPriceFeedUpdated(address value)
Emitted when LINK/USD price feed is updated
Parameters
value
address
new value
CollateralUsdPriceFeedUpdated
event CollateralUsdPriceFeedUpdated(uint8 collateralIndex, address value)
Emitted when collateral/USD price feed is updated
Parameters
collateralIndex
uint8
collateral index
value
address
new value
CollateralGnsLiquidityPoolUpdated
event CollateralGnsLiquidityPoolUpdated(uint8 collateralIndex, struct IPriceAggregator.LiquidityPoolInfo newValue)
Emitted when collateral/GNS Uniswap V3 pool is updated
Parameters
collateralIndex
uint8
collateral index
newValue
struct IPriceAggregator.LiquidityPoolInfo
new value
TwapIntervalUpdated
event TwapIntervalUpdated(uint32 newValue)
Emitted when TWAP interval is updated
Parameters
newValue
uint32
new value
MinAnswersUpdated
event MinAnswersUpdated(uint8 value)
Emitted when minimum answers count is updated
Parameters
value
uint8
new value
OracleAdded
event OracleAdded(uint256 index, address value)
Emitted when an oracle is added
Parameters
index
uint256
new oracle index
value
address
value
OracleReplaced
event OracleReplaced(uint256 index, address oldOracle, address newOracle)
Emitted when an oracle is replaced
Parameters
index
uint256
oracle index
oldOracle
address
old value
newOracle
address
new value
OracleRemoved
event OracleRemoved(uint256 index, address oldOracle)
Emitted when an oracle is removed
Parameters
index
uint256
oracle index
oldOracle
address
old value
JobIdUpdated
event JobIdUpdated(uint256 index, bytes32 jobId)
Emitted when market job id is updated
Parameters
index
uint256
index
jobId
bytes32
new value
LinkRequestCreated
event LinkRequestCreated(struct Chainlink.Request request)
Emitted when a chainlink request is created
Parameters
request
struct Chainlink.Request
link request details
PriceRequested
event PriceRequested(uint8 collateralIndex, uint256 pairIndex, struct ITradingStorage.Id tradeId, struct ITradingStorage.Id pendingOrderId, enum ITradingStorage.PendingOrderType orderType, uint256 fromBlock, bool isLookback, bytes32 job, uint256 linkFeePerNode, uint256 nodesCount)
Emitted when a price is requested to the oracles
Parameters
collateralIndex
uint8
collateral index
pairIndex
uint256
trading pair index
tradeId
struct ITradingStorage.Id
trader id
pendingOrderId
struct ITradingStorage.Id
pending order id
orderType
enum ITradingStorage.PendingOrderType
order type (market open/market close/limit open/stop open/etc.)
fromBlock
uint256
block number from which to start fetching prices (for lookbacks)
isLookback
bool
true if lookback
job
bytes32
chainlink job id (market/lookback)
linkFeePerNode
uint256
link fee distributed per node (1e18 precision)
nodesCount
uint256
amount of nodes to fetch prices from
TradingCallbackExecuted
event TradingCallbackExecuted(struct ITradingCallbacks.AggregatorAnswer a, enum ITradingStorage.PendingOrderType orderType)
Emitted when a trading callback is called from the price aggregator
Parameters
a
struct ITradingCallbacks.AggregatorAnswer
aggregator answer data
orderType
enum ITradingStorage.PendingOrderType
order type
PriceReceived
event PriceReceived(struct ITradingStorage.Id orderId, uint16 pairIndex, bytes32 request, uint256 priceData, bool isLookback, bool usedInMedian)
Emitted when a price is received from the oracles
Parameters
orderId
struct ITradingStorage.Id
pending order id
pairIndex
uint16
trading pair index
request
bytes32
chainlink request id
priceData
uint256
OrderAnswer compressed into uint256
isLookback
bool
true if lookback
usedInMedian
bool
false if order already executed because min answers count was already reached
LinkClaimedBack
event LinkClaimedBack(uint256 amountLink)
Emitted when LINK tokens are claimed back by gov fund
Parameters
amountLink
uint256
amount of LINK tokens claimed back
TransferAndCallToOracleFailed
error TransferAndCallToOracleFailed()
SourceNotOracleOfRequest
error SourceNotOracleOfRequest()
RequestAlreadyPending
error RequestAlreadyPending()
OracleAlreadyListed
error OracleAlreadyListed()
InvalidCandle
error InvalidCandle()
WrongCollateralUsdDecimals
error WrongCollateralUsdDecimals()
InvalidPoolType
error InvalidPoolType()
Last updated
Was this helpful?