IndividualPool

OpenGuild's Individual Pool contract

An Individual is a pool where anyone can withdraw cryptocurrency from the pool and pay it back over time.

Methods

DEFAULT_ADMIN_ROLE

function DEFAULT_ADMIN_ROLE() external view returns (bytes32)

Returns

NameTypeDescription

_0

bytes32

undefined

OWNER_ROLE

function OWNER_ROLE() external view returns (bytes32)

Returns

NameTypeDescription

_0

bytes32

undefined

PAUSER_ROLE

function PAUSER_ROLE() external view returns (bytes32)

Returns

NameTypeDescription

_0

bytes32

undefined

PERCENTAGE_DECIMAL

function PERCENTAGE_DECIMAL() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

undefined

RECIPIENT_ROLE

function RECIPIENT_ROLE() external view returns (bytes32)

Returns

NameTypeDescription

_0

bytes32

undefined

__BasePool__init

function __BasePool__init(address _owner, contract ProtocolConfig _config, contract IERC20Upgradeable _poolToken, enum ProtocolConfig.PoolType _poolType) external nonpayable

Run only once, on initialization

Parameters

NameTypeDescription

_owner

address

The address of who should have the "OWNER_ROLE" of this contract

_config

contract ProtocolConfig

The address of the OpenGuild ProtocolConfig contract

_poolToken

contract IERC20Upgradeable

The ERC20 token denominating investments, withdrawals and contributions

_poolType

enum ProtocolConfig.PoolType

The pool type of the BasePool

__BaseUpgradeablePausable__init

function __BaseUpgradeablePausable__init(address owner) external nonpayable

Parameters

NameTypeDescription

owner

address

undefined

__PauserPausable__init

function __PauserPausable__init() external nonpayable

applyFee

function applyFee(uint256 amount, uint256 takeRate) external view returns (uint256, uint256)

Parameters

NameTypeDescription

amount

uint256

Amount to subtract the fee from

takeRate

uint256

Rate to calculate the fee

Returns

NameTypeDescription

_0

uint256

Tuple of OpenGuild's take + remainder

_1

uint256

a tuple where the first value is the fee taken from the amount and the second is the remainder (amount without the fee)

claimFromAggregatePool

function claimFromAggregatePool(address claimer, uint256 claimAmount) external nonpayable

Sends all claimable dividends to the claimer (msg.sender)Must be called by an aggregate pool

IMPORTANT: CALLER IS RESPONSIBLE FOR PASSING IN A CORRECT CLAIM AMOUNT VALUE Otherwise, this individual pool's dividends could be depleted.

Parameters

NameTypeDescription

claimer

address

The investor that made the aggregate pool investment

claimAmount

uint256

The amount to claim

claimedDividends

function claimedDividends(address) external view returns (uint256)

Parameters

NameTypeDescription

_0

address

undefined

Returns

NameTypeDescription

_0

uint256

undefined

contribute

function contribute(uint256 amount) external nonpayable

Contributes capital and disburses the dividends to warrant tokens accordinglyOnly callable by the recipient

Parameters

NameTypeDescription

amount

uint256

Amount to be contributed

cumulativeDividends

function cumulativeDividends() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

undefined

getCumulativeDividends

function getCumulativeDividends() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

The sum of all dividends returned by this individual pool to all recipients, both aggregate pools who have this pool in their allocation and investors who invest directly into this pool

getFirstWithdrawalTime

function getFirstWithdrawalTime() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

Timestamp for the first time withdraw() was called in this pool

getInvestorClaimedDividends

function getInvestorClaimedDividends(address investor) external view returns (uint256)

Parameters

NameTypeDescription

investor

address

the investor to get the claimed dividends for

Returns

NameTypeDescription

_0

uint256

Total dividends claimed by the investor

getRecipient

function getRecipient() external view returns (address)

Returns

NameTypeDescription

_0

address

Current recipient address

getRoleAdmin

function getRoleAdmin(bytes32 role) external view returns (bytes32)

Returns the admin role that controls role. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.

Parameters

NameTypeDescription

role

bytes32

undefined

Returns

NameTypeDescription

_0

bytes32

undefined

getRoleMember

function getRoleMember(bytes32 role, uint256 index) external view returns (address)

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

NameTypeDescription

role

bytes32

undefined

index

uint256

undefined

Returns

NameTypeDescription

_0

address

undefined

getRoleMemberCount

function getRoleMemberCount(bytes32 role) external view returns (uint256)

Returns the number of accounts that have role. Can be used together with {getRoleMember} to enumerate all bearers of a role.

Parameters

NameTypeDescription

role

bytes32

undefined

Returns

NameTypeDescription

_0

uint256

undefined

getTotalDeployedAmount

function getTotalDeployedAmount() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

The cumulative deployed amount from all recipients, both aggregate pools who have this pool in their allocation and investors who invest directly into this pool.

getTotalUndeployedAmount

function getTotalUndeployedAmount() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

Total undeployed amount in this individual pool

getWithdrawableBalance

function getWithdrawableBalance() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

The current withdrawable balance

grantRole

function grantRole(bytes32 role, address account) external nonpayable

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

NameTypeDescription

role

bytes32

undefined

account

address

undefined

hasRole

function hasRole(bytes32 role, address account) external view returns (bool)

Returns true if account has been granted role.

Parameters

NameTypeDescription

role

bytes32

undefined

account

address

undefined

Returns

NameTypeDescription

_0

bool

undefined

initialize

function initialize(address _owner, contract ProtocolConfig _config, contract IERC20Upgradeable _poolToken, address _recipient) external nonpayable

Run only once, on initialization

Parameters

NameTypeDescription

_owner

address

The address that is assigned the "OWNER_ROLE" of this contract

_config

contract ProtocolConfig

The address of the OpenGuild ProtocolConfig contract

_poolToken

contract IERC20Upgradeable

The ERC20 token denominating investments, withdrawals and contributions

_recipient

address

The recipient of this individual pool

investFromAggregatePool

function investFromAggregatePool(uint256 amount, address investor) external nonpayable

Invest function called by an aggregate poolOnly callable by an aggregate pool

The warrant token is issued by the issuing aggregate pool, not this individual pool

Parameters

NameTypeDescription

amount

uint256

The amount to be invested

investor

address

The address of the investor from the aggregate pool

isAdmin

function isAdmin() external view returns (bool)

Returns

NameTypeDescription

_0

bool

undefined

pause

function pause() external nonpayable

Pauses all functions guarded by Pause See {Pausable-_pause}. Requirements: - the caller must have the PAUSER_ROLE.

paused

function paused() external view returns (bool)

Returns true if the contract is paused, and false otherwise.

Returns

NameTypeDescription

_0

bool

undefined

poolToken

function poolToken() external view returns (contract IERC20Upgradeable)

Returns

NameTypeDescription

_0

contract IERC20Upgradeable

undefined

poolType

function poolType() external view returns (enum ProtocolConfig.PoolType)

Returns

NameTypeDescription

_0

enum ProtocolConfig.PoolType

undefined

recipientBalance

function recipientBalance() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

undefined

recipientMaxBalance

function recipientMaxBalance() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

undefined

renounceRole

function renounceRole(bytes32 role, address account) external nonpayable

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

NameTypeDescription

role

bytes32

undefined

account

address

undefined

revokeRole

function revokeRole(bytes32 role, address account) external nonpayable

Revokes role from account. If account had been granted role, emits a {RoleRevoked} event. Requirements: - the caller must have role's admin role.

Parameters

NameTypeDescription

role

bytes32

undefined

account

address

undefined

setMaxBalance

function setMaxBalance(uint256 amount) external nonpayable

Sets the new max balance

Parameters

NameTypeDescription

amount

uint256

The new max balance

setRecipient

function setRecipient(address newRecipient) external nonpayable

Replace the current recipient with a new recipientOnly callable by the owner

There can only be one recipient at a time

Parameters

NameTypeDescription

newRecipient

address

The address of the new recipient

supportsInterface

function supportsInterface(bytes4 interfaceId) external view returns (bool)

See {IERC165-supportsInterface}.

Parameters

NameTypeDescription

interfaceId

bytes4

undefined

Returns

NameTypeDescription

_0

bool

undefined

totalDeployed

function totalDeployed() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

undefined

totalInvestedAmountForInvestor

function totalInvestedAmountForInvestor(address) external view returns (uint256)

Parameters

NameTypeDescription

_0

address

undefined

Returns

NameTypeDescription

_0

uint256

undefined

totalUnclaimedDividends

function totalUnclaimedDividends() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

undefined

totalUndeployed

function totalUndeployed() external view returns (uint256)

Returns

NameTypeDescription

_0

uint256

undefined

unpause

function unpause() external nonpayable

Unpauses the contract See {Pausable-_unpause}. Requirements: - the caller must have the Pauser role

withdraw

function withdraw(uint256 amount) external nonpayable

Withdraws capital and updates undeployed and deployed balancesOnly callable by the recipient

Parameters

NameTypeDescription

amount

uint256

Amount to be withdrawn

Events

Claim

event Claim(address indexed from, uint256 amount)

Parameters

NameTypeDescription

from indexed

address

undefined

amount

uint256

undefined

Contribute

event Contribute(address indexed from, uint256 amount)

Parameters

NameTypeDescription

from indexed

address

undefined

amount

uint256

undefined

Invest

event Invest(address indexed from, uint256 amount)

Parameters

NameTypeDescription

from indexed

address

undefined

amount

uint256

undefined

Paused

event Paused(address account)

Parameters

NameTypeDescription

account

address

undefined

RemoveUndeployedCapital

event RemoveUndeployedCapital(address indexed remover)

Parameters

NameTypeDescription

remover indexed

address

undefined

RoleAdminChanged

event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)

Parameters

NameTypeDescription

role indexed

bytes32

undefined

previousAdminRole indexed

bytes32

undefined

newAdminRole indexed

bytes32

undefined

RoleGranted

event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)

Parameters

NameTypeDescription

role indexed

bytes32

undefined

account indexed

address

undefined

sender indexed

address

undefined

RoleRevoked

event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)

Parameters

NameTypeDescription

role indexed

bytes32

undefined

account indexed

address

undefined

sender indexed

address

undefined

Unpaused

event Unpaused(address account)

Parameters

NameTypeDescription

account

address

undefined

Withdraw

event Withdraw(address indexed from, uint256 amount)

Parameters

NameTypeDescription

from indexed

address

undefined

amount

uint256

undefined

Last updated