AggregatePool
An AggregatePool is a pool where investors can invest cryptocurrency into multiple IndividualPools and claim dividends from each. Whenever users invest into an aggregate pool, they are minted shares (ERC20 tokens).
1 share = 1 poolToken (ie 1 USDT). Therefore, do not use the aggregate pool's decimal() function in front-end views- use poolToken.decimal() instead.
Methods
ALLOCATION_MARGIN_OF_ERROR
Returns
DEFAULT_ADMIN_ROLE
Returns
INVESTOR_ROLE
Returns
OWNER_ROLE
Returns
PAUSER_ROLE
Returns
PERCENTAGE_DECIMAL
Returns
POOL_MANAGER_ROLE
Returns
__BasePool__init
Run only once, on initialization
Parameters
__BaseUpgradeablePausable__init
Parameters
__PauserPausable__init
addInvestors
Grants all addresses the INVESTOR_ROLEOnly callable by the owner
Parameters
allowance
See {IERC20-allowance}.
Parameters
Returns
applyFee
Parameters
Returns
approve
See {IERC20-approve}. Requirements: - spender
cannot be the zero address.
Parameters
Returns
balanceOf
See {IERC20-balanceOf}.
Parameters
Returns
claim
Claim all unclaimed dividends from currentIndividualPoolsOnly callable by an investor
currentIndividualPools
Parameters
Returns
decimals
Returns the number of decimals used to get its user representation. For example, if decimals
equals 2
, a balance of 505
tokens should be displayed to a user as 5.05
(505 / 10 ** 2
). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for display purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.
Returns
decreaseAllowance
Atomically decreases the allowance granted to spender
by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender
cannot be the zero address. - spender
must have allowance for the caller of at least subtractedValue
.
Parameters
Returns
getCumulativeDividends
Gets the sum of all dividends returned to this aggregate pool
Returns
getCurrentIndividualPools
Gets the list of current individual pools in this aggregate pool
Returns
getFirstWithdrawalTime
Gets the earliest withdrawal timestamp for the individual pools in the aggregate pool
Returns
getInvestorClaimedDividends
Gets the total claimed dividends aggregated across currentIndividualPools for a single investor
Parameters
Returns
getInvestorDeployedAmount
Gets the total deployed amount aggregated across currentIndividualPools for a single investor
Parameters
Returns
getInvestorUnclaimedDividends
Gets the total unclaimed dividends aggregated across currentIndividualPools for a single investor
Parameters
Returns
getInvestorUndeployedAmount
Gets the total undeployed amount aggregated across currentIndividualPools for a single investor
Parameters
Returns
getPoolManager
Gets the address of the pool manager
Returns
getRoleAdmin
Returns the admin role that controls role
. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.
Parameters
Returns
getRoleMember
Returns one of the accounts that have role
. index
must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.
Parameters
Returns
getRoleMemberCount
Returns the number of accounts that have role
. Can be used together with {getRoleMember} to enumerate all bearers of a role.
Parameters
Returns
getTotalDeployedAmount
Gets the sum of all investments deployed aggregated across currentIndividualPools
Returns
getTotalUndeployedAmount
Gets the total undeployed amount aggregated across currentIndividualPools
Returns
grantRole
Grants role
to account
. If account
had not been already granted role
, emits a {RoleGranted} event. Requirements: - the caller must have role
's admin role.
Parameters
hasRole
Returns true
if account
has been granted role
.
Parameters
Returns
increaseAllowance
Atomically increases the allowance granted to spender
by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender
cannot be the zero address.
Parameters
Returns
individualPoolAllocations
Parameters
Returns
initialize
Run only once, on initialization
Parameters
invest
Invests capital into the aggregate pool and distributes investments accordingly to individualPoolAllocationsOnly callable by an investor
Parameters
investorInvestmentLimit
Returns
isAdmin
Returns
name
Returns the name of the token.
Returns
pause
Pauses all functions guarded by Pause See {Pausable-_pause}. Requirements: - the caller must have the PAUSER_ROLE.
paused
Returns true if the contract is paused, and false otherwise.
Returns
poolInvestmentLimit
Returns
poolToken
Returns
poolType
Returns
removeInvestors
Removes all addresses from the INVESTOR_ROLEOnly callable by the owner
Parameters
renounceRole
Revokes role
from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked role
, emits a {RoleRevoked} event. Requirements: - the caller must be account
.
Parameters
revokeRole
Revokes role
from account
. If account
had been granted role
, emits a {RoleRevoked} event. Requirements: - the caller must have role
's admin role.
Parameters
setInvestorInvestmentLimit
Set a new investor investment limitOnly callable by the owner
There are no checks for the minimum newLimit because if the limit is set to an amount lower than an investor's totalInvestedAmountForInvestor, then investors won't be able to make any new investments which is the expected behavior.
Parameters
setPoolAllocations
Sets the percentage of investments that should go into each poolOnly callable by pool manager
Parameters
setPoolInvestmentLimit
Set a new pool investment limitOnly callable by the owner
There are no checks for the minimum newLimit because if the limit is set to an amount lower than the exisiting capital in the pool, then investors won't be able to make any new investments which is the expected behavior.
Parameters
setPoolManager
Replace the current pool manager with a new pool managerOnly callable by the owner
Parameters
supportsInterface
See {IERC165-supportsInterface}.
Parameters
Returns
symbol
Returns the symbol of the token, usually a shorter version of the name.
Returns
totalInvestedAmountForInvestor
Parameters
Returns
totalSupply
See {IERC20-totalSupply}.
Returns
transfer
See {IERC20-transfer}. Requirements: - recipient
cannot be the zero address. - the caller must have a balance of at least amount
.
Parameters
Returns
transferFrom
See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - sender
and recipient
cannot be the zero address. - sender
must have a balance of at least amount
. - the caller must have allowance for sender
's tokens of at least amount
.
Parameters
Returns
unpause
Unpauses the contract See {Pausable-_unpause}. Requirements: - the caller must have the Pauser role
Events
Approval
Parameters
Claim
Parameters
Contribute
Parameters
Invest
Parameters
Paused
Parameters
RemoveUndeployedCapital
Parameters
RoleAdminChanged
Parameters
RoleGranted
Parameters
RoleRevoked
Parameters
SetPoolAllocations
Parameters
Transfer
Parameters
Unpaused
Parameters
Withdraw
Parameters
Last updated