Skip to main content
Interface for GNSFeeTiers facet (inherits types and also contains functions, events, and custom errors)

initializeFeeTiers

function initializeFeeTiers(uint256[] _groupIndices, uint256[] _groupVolumeMultipliers, uint256[] _feeTiersIndices, struct IFeeTiers.FeeTier[] _feeTiers) external

Parameters

NameTypeDescription
_groupIndicesuint256[]group indices (pairs storage fee index) to initialize
_groupVolumeMultipliersuint256[]corresponding group volume multipliers (1e3)
_feeTiersIndicesuint256[]fee tiers indices to initialize
_feeTiersIFeeTiers.FeeTier[]fee tiers values to initialize (feeMultiplier, pointsThreshold)

setGroupVolumeMultipliers

function setGroupVolumeMultipliers(uint256[] _groupIndices, uint256[] _groupVolumeMultipliers) external
Updates groups volume multipliers

Parameters

NameTypeDescription
_groupIndicesuint256[]indices of groups to update
_groupVolumeMultipliersuint256[]corresponding new volume multipliers (1e3)

setFeeTiers

function setFeeTiers(uint256[] _feeTiersIndices, struct IFeeTiers.FeeTier[] _feeTiers) external
Updates fee tiers

Parameters

NameTypeDescription
_feeTiersIndicesuint256[]indices of fee tiers to update
_feeTiersIFeeTiers.FeeTier[]new fee tiers values (feeMultiplier, pointsThreshold)

setTradersFeeTiersEnrollment

function setTradersFeeTiersEnrollment(address[] _traders, struct IFeeTiers.TraderEnrollment[] _values) external
Updates traders enrollment status in fee tiers

Parameters

NameTypeDescription
_tradersaddress[]group of traders
_valuesIFeeTiers.TraderEnrollment[]corresponding enrollment values

addTradersUnclaimedPoints

function addTradersUnclaimedPoints(address[] _traders, enum IFeeTiers.CreditType[] _creditTypes, uint224[] _points) external
Credits points to traders

Parameters

NameTypeDescription
_tradersaddress[]traders addresses
_creditTypesenum IFeeTiers.CreditType[]types of credit (IMMEDIATE, CLAIMABLE)
_pointsuint224[]points to credit (1e18)

updateTraderPoints

function updateTraderPoints(address _trader, uint256 _volumeUsd, uint256 _pairIndex) external
Increases daily points from a new trade, re-calculate trailing points, and cache daily fee tier for a trader.

Parameters

NameTypeDescription
_traderaddresstrader address
_volumeUsduint256trading volume in USD (1e18)
_pairIndexuint256pair index

calculateFeeAmount

function calculateFeeAmount(address _trader, uint256 _normalFeeAmountCollateral) external view returns (uint256)
Returns fee amount after applying the trader’s active fee tier multiplier

Parameters

NameTypeDescription
_traderaddressaddress of trader
_normalFeeAmountCollateraluint256base fee amount (collateral precision)

getFeeTiersCount

function getFeeTiersCount() external view returns (uint256)
Returns the current number of active fee tiers

getFeeTier

function getFeeTier(uint256 _feeTierIndex) external view returns (struct IFeeTiers.FeeTier)
Returns a fee tier’s details (feeMultiplier, pointsThreshold)

Parameters

NameTypeDescription
_feeTierIndexuint256fee tier index

getGroupVolumeMultiplier

function getGroupVolumeMultiplier(uint256 _groupIndex) external view returns (uint256)
Returns a group’s volume multiplier

Parameters

NameTypeDescription
_groupIndexuint256group index (pairs storage fee index)

getFeeTiersTraderInfo

function getFeeTiersTraderInfo(address _trader) external view returns (struct IFeeTiers.TraderInfo)
Returns a trader’s info (lastDayUpdated, trailingPoints)

Parameters

NameTypeDescription
_traderaddresstrader address

getFeeTiersTraderDailyInfo

function getFeeTiersTraderDailyInfo(address _trader, uint32 _day) external view returns (struct IFeeTiers.TraderDailyInfo)
Returns a trader’s daily fee tier info (feeMultiplierCache, points)

Parameters

NameTypeDescription
_traderaddresstrader address
_dayuint32day

getTraderFeeTiersEnrollment

function getTraderFeeTiersEnrollment(address _trader) external view returns (struct IFeeTiers.TraderEnrollment)
Returns a trader’s fee tiers enrollment status

Parameters

NameTypeDescription
_traderaddresstrader address

getTraderUnclaimedPoints

function getTraderUnclaimedPoints(address _trader) external view returns (uint224)
Returns a trader’s unclaimed points, credited by Governance

Parameters

NameTypeDescription
_traderaddresstrader address

GroupVolumeMultipliersUpdated

event GroupVolumeMultipliersUpdated(uint256[] groupIndices, uint256[] groupVolumeMultipliers)
Emitted when group volume multipliers are updated

Parameters

NameTypeDescription
groupIndicesuint256[]indices of updated groups
groupVolumeMultipliersuint256[]new corresponding volume multipliers (1e3)

FeeTiersUpdated

event FeeTiersUpdated(uint256[] feeTiersIndices, struct IFeeTiers.FeeTier[] feeTiers)
Emitted when fee tiers are updated

Parameters

NameTypeDescription
feeTiersIndicesuint256[]indices of updated fee tiers
feeTiersstruct IFeeTiers.FeeTier[]new corresponding fee tiers values (feeMultiplier, pointsThreshold)

TraderDailyPointsIncreased

event TraderDailyPointsIncreased(address trader, uint32 day, uint224 points)
Emitted when a trader’s daily points are updated

Parameters

NameTypeDescription
traderaddresstrader address
dayuint32day
pointsuint224points added (1e18 precision)

TraderInfoFirstUpdate

event TraderInfoFirstUpdate(address trader, uint32 day)
Emitted when a trader info is updated for the first time

Parameters

NameTypeDescription
traderaddressaddress of trader
dayuint32day

TraderTrailingPointsExpired

event TraderTrailingPointsExpired(address trader, uint32 fromDay, uint32 toDay, uint224 expiredPoints)
Emitted when a trader’s trailing points are updated

Parameters

NameTypeDescription
traderaddresstrader address
fromDayuint32from day
toDayuint32to day
expiredPointsuint224expired points amount (1e18 precision)

TraderInfoUpdated

event TraderInfoUpdated(address trader, struct IFeeTiers.TraderInfo traderInfo)
Emitted when a trader’s info is updated

Parameters

NameTypeDescription
traderaddressaddress of trader
traderInfostruct IFeeTiers.TraderInfonew trader info value (lastDayUpdated, trailingPoints)

TraderFeeMultiplierCached

event TraderFeeMultiplierCached(address trader, uint32 day, uint32 feeMultiplier)
Emitted when a trader’s cached fee multiplier is updated (this is the one used in fee calculations)

Parameters

NameTypeDescription
traderaddressaddress of trader
dayuint32day
feeMultiplieruint32new fee multiplier (1e3 precision)

TraderEnrollmentUpdated

event TraderEnrollmentUpdated(address trader, struct IFeeTiers.TraderEnrollment enrollment)
Emitted when a trader’s enrollment status is updated

Parameters

NameTypeDescription
traderaddressaddress of trader
enrollmentstruct IFeeTiers.TraderEnrollmenttrader’s new enrollment status

TraderPointsCredited

event TraderPointsCredited(address trader, uint32 day, enum IFeeTiers.CreditType creditType, uint224 points)
Emitted when a trader is credited points by governance

Parameters

NameTypeDescription
traderaddresstrader address
dayuint32day the points were credited on, may be different from the day the points were claimed
creditTypeenum IFeeTiers.CreditTypecredit type (IMMEDIATE, CLAIMABLE)
pointsuint224points added (1e18 precision)

TraderUnclaimedPointsClaimed

event TraderUnclaimedPointsClaimed(address trader, uint32 day, uint224 points)
Emitted when a trader’s unclaimed points are claimed

Parameters

NameTypeDescription
traderaddresstrader address
dayuint32day of claim
pointsuint224points added (1e18 precision)

WrongFeeTier

error WrongFeeTier()

PointsOverflow

error PointsOverflow()