IFeeTiersUtils

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

Name
Type
Description

_groupIndices

uint256[]

group indices (pairs storage fee index) to initialize

_groupVolumeMultipliers

uint256[]

corresponding group volume multipliers (1e3)

_feeTiersIndices

uint256[]

fee tiers indices to initialize

_feeTiers

fee tiers values to initialize (feeMultiplier, pointsThreshold)

setGroupVolumeMultipliers

function setGroupVolumeMultipliers(uint256[] _groupIndices, uint256[] _groupVolumeMultipliers) external

Updates groups volume multipliers

Parameters

Name
Type
Description

_groupIndices

uint256[]

indices of groups to update

_groupVolumeMultipliers

uint256[]

corresponding new volume multipliers (1e3)

setFeeTiers

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

Updates fee tiers

Parameters

Name
Type
Description

_feeTiersIndices

uint256[]

indices of fee tiers to update

_feeTiers

new fee tiers values (feeMultiplier, pointsThreshold)

setTradersFeeTiersEnrollment

function setTradersFeeTiersEnrollment(address[] _traders, struct IFeeTiers.TraderEnrollment[] _values) external

Updates traders enrollment status in fee tiers

Parameters

Name
Type
Description

_traders

address[]

group of traders

_values

corresponding enrollment values

addTradersUnclaimedPoints

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

Credits points to traders

Parameters

Name
Type
Description

_traders

address[]

traders addresses

_creditTypes

enum IFeeTiers.CreditType[]

types of credit (IMMEDIATE, CLAIMABLE)

_points

uint224[]

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

Name
Type
Description

_trader

address

trader address

_volumeUsd

uint256

trading volume in USD (1e18)

_pairIndex

uint256

pair 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

Name
Type
Description

_trader

address

address of trader

_normalFeeAmountCollateral

uint256

base 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

Name
Type
Description

_feeTierIndex

uint256

fee tier index

getGroupVolumeMultiplier

function getGroupVolumeMultiplier(uint256 _groupIndex) external view returns (uint256)

Returns a group's volume multiplier

Parameters

Name
Type
Description

_groupIndex

uint256

group index (pairs storage fee index)

getFeeTiersTraderInfo

function getFeeTiersTraderInfo(address _trader) external view returns (struct IFeeTiers.TraderInfo)

Returns a trader's info (lastDayUpdated, trailingPoints)

Parameters

Name
Type
Description

_trader

address

trader 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

Name
Type
Description

_trader

address

trader address

_day

uint32

day

getTraderFeeTiersEnrollment

function getTraderFeeTiersEnrollment(address _trader) external view returns (struct IFeeTiers.TraderEnrollment)

Returns a trader's fee tiers enrollment status

Parameters

Name
Type
Description

_trader

address

trader address

getTraderUnclaimedPoints

function getTraderUnclaimedPoints(address _trader) external view returns (uint224)

Returns a trader's unclaimed points, credited by Governance

Parameters

Name
Type
Description

_trader

address

trader address

GroupVolumeMultipliersUpdated

event GroupVolumeMultipliersUpdated(uint256[] groupIndices, uint256[] groupVolumeMultipliers)

Emitted when group volume multipliers are updated

Parameters

Name
Type
Description

groupIndices

uint256[]

indices of updated groups

groupVolumeMultipliers

uint256[]

new corresponding volume multipliers (1e3)

FeeTiersUpdated

event FeeTiersUpdated(uint256[] feeTiersIndices, struct IFeeTiers.FeeTier[] feeTiers)

Emitted when fee tiers are updated

Parameters

Name
Type
Description

feeTiersIndices

uint256[]

indices of updated fee tiers

feeTiers

struct 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

Name
Type
Description

trader

address

trader address

day

uint32

day

points

uint224

points added (1e18 precision)

TraderInfoFirstUpdate

event TraderInfoFirstUpdate(address trader, uint32 day)

Emitted when a trader info is updated for the first time

Parameters

Name
Type
Description

trader

address

address of trader

day

uint32

day

TraderTrailingPointsExpired

event TraderTrailingPointsExpired(address trader, uint32 fromDay, uint32 toDay, uint224 expiredPoints)

Emitted when a trader's trailing points are updated

Parameters

Name
Type
Description

trader

address

trader address

fromDay

uint32

from day

toDay

uint32

to day

expiredPoints

uint224

expired points amount (1e18 precision)

TraderInfoUpdated

event TraderInfoUpdated(address trader, struct IFeeTiers.TraderInfo traderInfo)

Emitted when a trader's info is updated

Parameters

Name
Type
Description

trader

address

address of trader

traderInfo

struct IFeeTiers.TraderInfo

new 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

Name
Type
Description

trader

address

address of trader

day

uint32

day

feeMultiplier

uint32

new fee multiplier (1e3 precision)

TraderEnrollmentUpdated

event TraderEnrollmentUpdated(address trader, struct IFeeTiers.TraderEnrollment enrollment)

Emitted when a trader's enrollment status is updated

Parameters

Name
Type
Description

trader

address

address of trader

enrollment

struct IFeeTiers.TraderEnrollment

trader'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

Name
Type
Description

trader

address

trader address

day

uint32

day the points were credited on, may be different from the day the points were claimed

creditType

enum IFeeTiers.CreditType

credit type (IMMEDIATE, CLAIMABLE)

points

uint224

points added (1e18 precision)

TraderUnclaimedPointsClaimed

event TraderUnclaimedPointsClaimed(address trader, uint32 day, uint224 points)

Emitted when a trader's unclaimed points are claimed

Parameters

Name
Type
Description

trader

address

trader address

day

uint32

day of claim

points

uint224

points added (1e18 precision)

WrongFeeTier

error WrongFeeTier()

PointsOverflow

error PointsOverflow()

Last updated