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

initializeReferrals

function initializeReferrals(uint256 _allyFeeP, uint256 _startReferrerFeeP, uint256 _targetVolumeUsd) external

Parameters

NameTypeDescription
_allyFeePuint256% of total referral fee going to ally
_startReferrerFeePuint256initial % of total referral fee earned when zero volume referred
_targetVolumeUsduint256usd opening volume to refer to reach 100% of referral fee

updateAllyFeeP

function updateAllyFeeP(uint256 _value) external
Updates allyFeeP

Parameters

NameTypeDescription
_valueuint256new ally fee %

updateStartReferrerFeeP

function updateStartReferrerFeeP(uint256 _value) external
Updates startReferrerFeeP

Parameters

NameTypeDescription
_valueuint256new start referrer fee %

updateReferralsTargetVolumeUsd

function updateReferralsTargetVolumeUsd(uint256 _value) external
Updates targetVolumeUsd

Parameters

NameTypeDescription
_valueuint256new target volume in usd

whitelistAllies

function whitelistAllies(address[] _allies) external
Whitelists ally addresses

Parameters

NameTypeDescription
_alliesaddress[]array of ally addresses

unwhitelistAllies

function unwhitelistAllies(address[] _allies) external
Unwhitelists ally addresses

Parameters

NameTypeDescription
_alliesaddress[]array of ally addresses

whitelistReferrers

function whitelistReferrers(address[] _referrers, address[] _allies) external
Whitelists referrer addresses

Parameters

NameTypeDescription
_referrersaddress[]array of referrer addresses
_alliesaddress[]array of corresponding ally addresses

unwhitelistReferrers

function unwhitelistReferrers(address[] _referrers) external
Unwhitelists referrer addresses

Parameters

NameTypeDescription
_referrersaddress[]array of referrer addresses

registerPotentialReferrer

function registerPotentialReferrer(address _trader, address _referral) external
Registers potential referrer for trader (only works if trader wasn’t referred yet by someone else)

Parameters

NameTypeDescription
_traderaddresstrader address
_referraladdressreferrer address

distributeReferralReward

function distributeReferralReward(address _trader, uint256 _volumeUsd, uint256 _referrerFeeUsd, uint256 _gnsPriceUsd) external
Distributes ally and referrer rewards

Parameters

NameTypeDescription
_traderaddresstrader address
_volumeUsduint256trading volume in usd (1e18 precision)
_referrerFeeUsduint256referrer fee in USD (1e18 precision)
_gnsPriceUsduint256token price in usd (1e10 precision)

claimAllyRewards

function claimAllyRewards() external
Claims pending GNS ally rewards of caller

claimReferrerRewards

function claimReferrerRewards() external
Claims pending GNS referrer rewards of caller

getReferrerFeeProgressP

function getReferrerFeeProgressP(address _referrer) external view returns (uint256)
Returns referrer fee % progress towards earning 100% based on his volume referred (1e10)

Parameters

NameTypeDescription
_referreraddressreferrer address

getTraderLastReferrer

function getTraderLastReferrer(address _trader) external view returns (address)
Returns last referrer of trader (whether referrer active or not)

Parameters

NameTypeDescription
_traderaddressaddress of trader

getTraderActiveReferrer

function getTraderActiveReferrer(address _trader) external view returns (address)
Returns active referrer of trader

Parameters

NameTypeDescription
_traderaddressaddress of trader

getReferrersReferred

function getReferrersReferred(address _ally) external view returns (address[])
Returns referrers referred by ally

Parameters

NameTypeDescription
_allyaddressaddress of ally

getTradersReferred

function getTradersReferred(address _referrer) external view returns (address[])
Returns traders referred by referrer

Parameters

NameTypeDescription
_referreraddressaddress of referrer

getReferralsAllyFeeP

function getReferralsAllyFeeP() external view returns (uint256)
Returns ally fee % of total referral fee

getReferralsStartReferrerFeeP

function getReferralsStartReferrerFeeP() external view returns (uint256)
Returns start referrer fee % of total referral fee when zero volume was referred

getReferralsTargetVolumeUsd

function getReferralsTargetVolumeUsd() external view returns (uint256)
Returns target volume in usd to reach 100% of referral fee

getAllyDetails

function getAllyDetails(address _ally) external view returns (struct IReferrals.AllyDetails)
Returns ally details

Parameters

NameTypeDescription
_allyaddressaddress of ally

getReferrerDetails

function getReferrerDetails(address _referrer) external view returns (struct IReferrals.ReferrerDetails)
Returns referrer details

Parameters

NameTypeDescription
_referreraddressaddress of referrer

UpdatedAllyFeeP

event UpdatedAllyFeeP(uint256 value)
Emitted when allyFeeP is updated

Parameters

NameTypeDescription
valueuint256new ally fee %

UpdatedStartReferrerFeeP

event UpdatedStartReferrerFeeP(uint256 value)
Emitted when startReferrerFeeP is updated

Parameters

NameTypeDescription
valueuint256new start referrer fee %

UpdatedOpenFeeP

event UpdatedOpenFeeP(uint256 value)
Emitted when openFeeP is updated

Parameters

NameTypeDescription
valueuint256new open fee %

UpdatedTargetVolumeUsd

event UpdatedTargetVolumeUsd(uint256 value)
Emitted when targetVolumeUsd is updated

Parameters

NameTypeDescription
valueuint256new target volume in usd

AllyWhitelisted

event AllyWhitelisted(address ally)
Emitted when an ally is whitelisted

Parameters

NameTypeDescription
allyaddressally address

AllyUnwhitelisted

event AllyUnwhitelisted(address ally)
Emitted when an ally is unwhitelisted

Parameters

NameTypeDescription
allyaddressally address

ReferrerWhitelisted

event ReferrerWhitelisted(address referrer, address ally)
Emitted when a referrer is whitelisted

Parameters

NameTypeDescription
referreraddressreferrer address
allyaddressally address

ReferrerUnwhitelisted

event ReferrerUnwhitelisted(address referrer)
Emitted when a referrer is unwhitelisted

Parameters

NameTypeDescription
referreraddressreferrer address

ReferrerRegistered

event ReferrerRegistered(address trader, address referrer)
Emitted when a trader has a new active referrer

AllyRewardDistributed

event AllyRewardDistributed(address ally, address trader, uint256 volumeUsd, uint256 amountGns, uint256 amountValueUsd)
Emitted when ally rewards are distributed for a trade

Parameters

NameTypeDescription
allyaddressaddress of ally
traderaddressaddress of trader
volumeUsduint256trade volume in usd (1e18 precision)
amountGnsuint256amount of GNS reward (1e18 precision)
amountValueUsduint256USD value of GNS reward (1e18 precision)

ReferrerRewardDistributed

event ReferrerRewardDistributed(address referrer, address trader, uint256 volumeUsd, uint256 amountGns, uint256 amountValueUsd)
Emitted when referrer rewards are distributed for a trade

Parameters

NameTypeDescription
referreraddressaddress of referrer
traderaddressaddress of trader
volumeUsduint256trade volume in usd (1e18 precision)
amountGnsuint256amount of GNS reward (1e18 precision)
amountValueUsduint256USD value of GNS reward (1e18 precision)

AllyRewardsClaimed

event AllyRewardsClaimed(address ally, uint256 amountGns)
Emitted when an ally claims his pending rewards

Parameters

NameTypeDescription
allyaddressaddress of ally
amountGnsuint256GNS pending rewards amount

ReferrerRewardsClaimed

event ReferrerRewardsClaimed(address referrer, uint256 amountGns)
Emitted when a referrer claims his pending rewards

Parameters

NameTypeDescription
referreraddressaddress of referrer
amountGnsuint256GNS pending rewards amount

NoPendingRewards

error NoPendingRewards()

AlreadyActive

error AlreadyActive()

AlreadyInactive

error AlreadyInactive()

AllyNotActive

error AllyNotActive()