IGovPool
Interface Description
License: MIT
This is the Governance pool contract. This contract is the third contract the user can deploy through the factory. The users can participate in proposal's creation, voting and execution processes
Enums info
ProposalState
The enum that holds information about proposal state
Parameters:
Voting
the proposal is in voting state
WaitingForVotingTransfer
the proposal is approved and waiting for transfer to validators contract
ValidatorVoting
the proposal is in validators voting state
Defeated
the proposal is defeated
SucceededFor
the proposal is succeeded on for step
SucceededAgainst
the proposal is succeeded on against step
Locked
the proposal is locked
ExecutedFor
the proposal is executed on for step
ExecutedAgainst
the proposal is executed on against step
Undefined
the proposal is undefined
RewardType
The enum that holds information about reward type
Parameters:
Create
the reward type for proposal creation
Vote
the reward type for voting for proposal
Execute
the reward type for proposal execution
SaveOffchainResults
the reward type for saving off-chain results
VoteType
The enum that holds information about vote type
Parameters:
PersonalVote
the vote type for personal voting
MicropoolVote
the vote type for micropool voting
DelegatedVote
the vote type for delegated voting
TreasuryVote
the vote type for treasury voting
Structs info
Dependencies
The struct that holds information about dependencies
Parameters:
settingsAddress
address
the address of settings contract
userKeeperAddress
address
the address of user keeper contract
validatorsAddress
address payable
the address of validators contract
expertNftAddress
address
the address of expert nft contract
nftMultiplierAddress
address
the address of nft multiplier contract
votePowerAddress
address
the address of vote power contract
ProposalCore
The struct holds core properties of proposal
Parameters:
settings
struct IGovSettings.ProposalSettings
the struct that holds information about settings of the proposal
voteEnd
uint64
the timestamp of voting end for the proposal
executeAfter
uint64
the timestamp of execution in seconds after voting end
executed
bool
the boolean indicating whether the proposal has been executed
votesFor
uint256
the total number of votes for the proposal from all voters
votesAgainst
uint256
the total number of votes against the proposal from all voters
rawVotesFor
uint256
the total number of votes for the proposal from all voters before the formula
rawVotesAgainst
uint256
the total number of votes against the proposal from all voters before the formula
givenRewards
uint256
the amount of rewards payable after the proposal execution
ProposalAction
The struct holds information about proposal action
Parameters:
executor
address
the address of call's target, bounded by index with value
and data
value
uint256
the eth value for call, bounded by index with executor
and data
data
bytes
the of call data, bounded by index with executor
and value
Proposal
The struct holds all information about proposal
Parameters:
core
struct IGovPool.ProposalCore
the struct that holds information about core properties of proposal
descriptionURL
string
the string with link to IPFS doc with proposal description
actionsOnFor
struct IGovPool.ProposalAction[]
the array of structs with information about actions on for step
actionsOnAgainst
struct IGovPool.ProposalAction[]
the array of structs with information about actions on against step
ProposalView
The struct that is used in view functions of contract as a return argument
Parameters:
proposal
struct IGovPool.Proposal
the Proposal
struct
validatorProposal
struct IGovValidators.ExternalProposal
the ExternalProposal
struct
proposalState
enum IGovPool.ProposalState
the value from enum ProposalState
, that shows proposal state at current time
requiredQuorum
uint256
the required votes amount to confirm the proposal
requiredValidatorsQuorum
uint256
the the required validator votes to confirm the proposal
RawVote
The struct that holds information about the typed vote (only for internal needs)
Parameters:
tokensVoted
uint256
the total erc20 amount voted from one user for the proposal before the formula
totalVoted
uint256
the total power of typed votes from one user for the proposal before the formula
nftsAmount
uint256
the amount of nfts participating in the vote
nftsVoted
struct EnumerableSet.UintSet
the set of ids of nfts voted from one user for the proposal
VoteInfo
The struct that holds information about the global vote properties (only for internal needs)
Parameters:
rawVotes
mapping(enum IGovPool.VoteType => struct IGovPool.RawVote)
matching vote types with their infos
isVoteFor
bool
the boolean flag that indicates whether the vote is "for" the proposal
totalVoted
uint256
the total power of votes from one user for the proposal after the formula
totalRawVoted
uint256
the total power of votes from one user for the proposal before the formula
VoteInfoView
The struct that is used in view functions of contract as a return argument
Parameters:
isVoteFor
bool
the boolean flag that indicates whether the vote is "for" the proposal
totalVoted
uint256
the total power of votes from one user for the proposal after the formula
tokensVoted
uint256
the total erc20 amount voted from one user for the proposal before the formula
totalRawVoted
uint256
the total power of typed votes from one user for the proposal before the formula
nftsVoted
uint256[]
the set of ids of nfts voted from one user for the proposal
DelegatorRewards
The struct that is used in view functions of contract as a return argument
Parameters:
rewardTokens
address[]
the list of reward tokens
isVoteFor
bool[]
the list of flags indicating whether the vote is "for" the proposal
isClaimed
bool[]
the list of flags indicating whether the rewards have been claimed
expectedRewards
uint256[]
the list of expected rewards to be claimed
DelegatorInfo
The struct that holds information about the delegator (only for internal needs)
Parameters:
delegationTimes
uint256[]
the list of timestamps when delegated amount was changed
delegationPowers
uint256[]
the list of delegated assets powers
isClaimed
mapping(uint256 => bool)
matching proposals ids with flags indicating whether rewards have been claimed
PendingRewards
The struct that holds reward properties (only for internal needs)
Parameters:
areVotingRewardsSet
mapping(uint256 => bool)
matching proposals ids with flags indicating whether voting rewards have been set during the personal or micropool claim
staticRewards
mapping(uint256 => uint256)
matching proposal ids to their static rewards
votingRewards
mapping(uint256 => struct IGovPool.VotingRewards)
matching proposal ids to their voting rewards
offchainRewards
mapping(address => uint256)
matching off-chain token addresses to their rewards
offchainTokens
struct EnumerableSet.AddressSet
the list of off-chain token addresses
UserInfo
The struct that holds the user info (only for internal needs)
Parameters:
voteInfos
mapping(uint256 => struct IGovPool.VoteInfo)
matching proposal ids to their infos
pendingRewards
struct IGovPool.PendingRewards
user's pending rewards
delegatorInfos
mapping(address => struct IGovPool.DelegatorInfo)
matching delegators to their infos
votedInProposals
struct EnumerableSet.UintSet
the list of active proposals user voted in
treasuryExemptProposals
struct EnumerableSet.UintSet
the list of proposals user's treasury is exempted from
VotingRewards
The struct that is used in view functions of contract as a return argument
Parameters:
personal
uint256
rewards for the personal voting
micropool
uint256
rewards for the micropool voting
treasury
uint256
rewards for the treasury voting
PendingRewardsView
The struct that is used in view functions of contract as a return argument
Parameters:
onchainTokens
address[]
the list of on-chain token addresses
staticRewards
uint256[]
the list of static rewards
votingRewards
struct IGovPool.VotingRewards[]
the list of voting rewards
offchainRewards
uint256[]
the list of off-chain rewards
offchainTokens
address[]
the list of off-chain token addresses
CreditInfo
The struct is used to hold info about validators monthly withdrawal credit
Parameters:
tokenList
address[]
the list of token allowed to withdraw
tokenInfo
mapping(address => struct IGovPool.TokenCreditInfo)
the mapping token => withdrawals history and limits
TokenCreditInfo
The struct is used to hold info about limits and withdrawals history
Parameters:
monthLimit
uint256
the monthly withdraw limit for the token
cumulativeAmounts
uint256[]
the list of amounts withdrawn
timestamps
uint256[]
the list of timestamps of withdraws
CreditInfoView
The struct is used to return info about current credit state
Parameters:
token
address
the token address
monthLimit
uint256
the amount that validator could withdraw monthly
currentWithdrawLimit
uint256
the amount that validators could withdraw now
OffChain
The struct that holds off-chain properties (only for internal needs)
Parameters:
verifier
address
the off-chain verifier address
resultsHash
string
the ipfs results hash
usedHashes
mapping(bytes32 => bool)
matching hashes to their usage state
Functions info
getHelperContracts (0x485f4044)
The function to get helper contract of this pool
Return values:
settings
address
settings address
userKeeper
address
user keeper address
validators
address
validators address
poolRegistry
address
pool registry address
votePower
address
vote power address
getNftContracts (0x80326e95)
The function to get the nft contracts of this pool
Return values:
nftMultiplier
address
rewards multiplier nft contract
expertNft
address
local expert nft contract
dexeExpertNft
address
global expert nft contract
babt
address
binance bound token
createProposal (0xda1c6cfa)
Create proposal
Parameters:
descriptionURL
string
IPFS url to the proposal's description
actionsOnFor
struct IGovPool.ProposalAction[]
the array of structs with information about actions on for step
actionsOnAgainst
struct IGovPool.ProposalAction[]
the array of structs with information about actions on against step
createProposalAndVote (0xee0e5215)
Create and vote for on the proposal
Parameters:
descriptionURL
string
IPFS url to the proposal's description
actionsOnFor
struct IGovPool.ProposalAction[]
the array of structs with information about actions on for step
actionsOnAgainst
struct IGovPool.ProposalAction[]
the array of structs with information about actions on against step
voteAmount
uint256
the erc20 vote amount
voteNftIds
uint256[]
the nft ids that will be used in voting
moveProposalToValidators (0x2db47bdd)
Move proposal from internal voting to Validators
contract
Parameters:
proposalId
uint256
Proposal ID
vote (0x544df02c)
The function for voting for proposal with own tokens
Parameters:
proposalId
uint256
the id of the proposal
isVoteFor
bool
the bool flag for voting for or against the proposal
voteAmount
uint256
the erc20 vote amount
voteNftIds
uint256[]
the nft ids that will be used in voting
cancelVote (0xbacbe2da)
The function for canceling vote
Parameters:
proposalId
uint256
the id of the proposal to cancel all votes from which
deposit (0xde3ab781)
The function for depositing tokens to the pool
Parameters:
amount
uint256
the erc20 deposit amount
nftIds
uint256[]
the array of nft ids to deposit
withdraw (0xfb8c5ef0)
The function for withdrawing deposited tokens
Parameters:
receiver
address
the withdrawal receiver address
amount
uint256
the erc20 withdrawal amount
nftIds
uint256[]
the array of nft ids to withdraw
delegate (0x46d0b0b9)
The function for delegating tokens
Parameters:
delegatee
address
the target address for delegation (person who will receive the delegation)
amount
uint256
the erc20 delegation amount
nftIds
uint256[]
the array of nft ids to delegate
delegateTreasury (0x39588f1e)
The function for delegating tokens from treasury
Parameters:
delegatee
address
the target address for delegation (person who will receive the delegation)
amount
uint256
the erc20 delegation amount
nftIds
uint256[]
the array of nft ids to delegate
undelegate (0x7810436a)
The function for undelegating delegated tokens
Parameters:
delegatee
address
the undelegation target address (person who will be undelegated)
amount
uint256
the erc20 undelegation amount
nftIds
uint256[]
the array of nft ids to undelegate
undelegateTreasury (0xb6b90df4)
The function for undelegating delegated tokens from treasury
Parameters:
delegatee
address
the undelegation target address (person who will be undelegated)
amount
uint256
the erc20 undelegation amount
nftIds
uint256[]
the array of nft ids to undelegate
unlock (0x2f6c493c)
The function that unlocks user funds in completed proposals
Parameters:
user
address
the user whose funds to unlock
execute (0xfe0d94c1)
Execute proposal
Parameters:
proposalId
uint256
Proposal ID
claimRewards (0x0520537f)
The function for claiming rewards from executed proposals
Parameters:
proposalIds
uint256[]
the array of proposal ids
user
address
the address of the user
claimMicropoolRewards (0x7b0e1203)
The function for claiming micropool rewards from executed proposals
Parameters:
proposalIds
uint256[]
the array of proposal ids
delegator
address
the address of the delegator
delegatee
address
the address of the delegatee
changeVotePower (0xcfd9c3c3)
The function to change vote power contract
Parameters:
votePower
address
new contract for the voting power formula
editDescriptionURL (0x0dbf1c47)
The function for changing description url
Parameters:
newDescriptionURL
string
the string with new url
changeVerifier (0xcf04fb94)
The function for changing verifier address
Parameters:
newVerifier
address
the address of verifier
setCreditInfo (0xbaa7652f)
The function for setting validators credit limit
Parameters:
tokens
address[]
the list of tokens to credit
amounts
uint256[]
the list of amounts to credit per month
transferCreditAmount (0xc1e09f97)
The function for fulfilling transfer request from validators
Parameters:
tokens
address[]
the list of tokens to send
amounts
uint256[]
the list of amounts to send
destination
address
the address to send tokens
changeBABTRestriction (0x2050a31b)
The function for changing the KYC restriction
Parameters:
onlyBABT
bool
true id restriction is needed
setNftMultiplierAddress (0xa43040eb)
The function for setting address of nft multiplier contract
Parameters:
nftMultiplierAddress
address
the address of nft multiplier
saveOffchainResults (0x41c47e3e)
The function for saving ipfs hash of off-chain proposal results
Parameters:
resultsHash
string
the ipfs results hash
signature
bytes
the signature from verifier
getProposals (0x5e3b4365)
The paginated function for getting proposal info list
Parameters:
offset
uint256
the proposal starting index
limit
uint256
the number of proposals to observe
Return values:
[0]
struct IGovPool.ProposalView[]
ProposalView
array
getProposalState (0x9080936f)
Parameters:
proposalId
uint256
Proposal ID
Return values:
[0]
enum IGovPool.ProposalState
ProposalState
: 0 -Voting
, proposal where addresses can vote 1 -WaitingForVotingTransfer
, approved proposal that waiting moveProposalToValidators()
call 2 -ValidatorVoting
, validators voting 3 -Defeated
, proposal where voting time is over and proposal defeated on first or second step 4 -SucceededFor
, successful proposal with votes for but not executed yet 5 -SucceededAgainst
, successful proposal with votes against but not executed yet 6 -Locked
, successful proposal but temporarily locked for execution 7 -ExecutedFor
, executed proposal with the required number of votes on for step 8 -ExecutedAgainst
, executed proposal with the required number of votes on against step 9 -Undefined
, nonexistent proposal
getUserActiveProposalsCount (0x38fa211c)
The function for getting user's active proposals count
Parameters:
user
address
the address of user
Return values:
[0]
uint256
the number of active proposals
getTotalVotes (0x6545ea83)
The function for getting total raw votes in the proposal by one voter
Parameters:
proposalId
uint256
the id of proposal
voter
address
the address of voter
voteType
enum IGovPool.VoteType
the type of vote
Return values:
[0]
uint256
Arguments
: core raw votes for, core raw votes against, user typed raw votes, is vote for indicator
getProposalRequiredQuorum (0xda437f37)
The function to get required quorum of proposal
Parameters:
proposalId
uint256
the id of proposal
Return values:
[0]
uint256
the required number for votes to reach the quorum
getUserVotes (0x466d7af2)
The function to get information about user's votes
Parameters:
proposalId
uint256
the id of proposal
voter
address
the address of voter
voteType
enum IGovPool.VoteType
the type of vote
Return values:
[0]
struct IGovPool.VoteInfoView
VoteInfoView
array
getWithdrawableAssets (0x7ecd20bb)
The function to get withdrawable assets
Parameters:
delegator
address
the delegator address
Return values:
[0]
uint256
Arguments
: erc20 amount, array nft ids
getPendingRewards (0x566aff6a)
The function to get on-chain and off-chain rewards
Parameters:
user
address
the address of the user whose rewards are required
proposalIds
uint256[]
the list of proposal ids
Return values:
[0]
struct IGovPool.PendingRewardsView
the list of rewards
getDelegatorRewards (0x529285af)
The function to get delegator staking rewards from all micropools
Parameters:
proposalIds
uint256[]
the list of proposal ids
delegator
address
the address of the delegator
delegatee
address
the address of the delegatee
Return values:
[0]
struct IGovPool.DelegatorRewards
rewards delegator rewards
getCreditInfo (0xf06817cf)
The function to get info about validators credit limit
Return values:
[0]
struct IGovPool.CreditInfoView[]
the list of credit infos
getOffchainInfo (0xb3a72fc4)
The function to get off-chain info
Return values:
validator
address
the verifier address
resultsHash
string
the ipfs hash
getOffchainSignHash (0x8e19ade9)
The function to get the sign hash from string resultsHash, chainid, govPool address
Parameters:
resultsHash
string
the ipfs hash
user
address
the user who requests the signature
Return values:
[0]
bytes32
bytes32 hash
getExpertStatus (0x0660b478)
The function to get expert status of a voter
Return values:
[0]
bool
address of a person, who votes
coreProperties (0xe9bbc80c)
The function to get core properties
Return values:
[0]
contract ICoreProperties
ICoreProperties
interface