🏭Factory

Factory contract is the main contract of the protocol. It is used to create vault proxies and serves as registry.

View Methods

countVault

function countVault() external view returns (uint256)

Returns the number of vaults from the factory.

Return Value:

Type
Description

uint256

number of vaults

getWhitelistedTokens

function getWhitelistedTokens() external view returns (address[] memory)

Returns a list of all whitelisted token addresses.

Return Value:

Type
Description

address[]

addresses of whitelisted tokens

getFeesReceiver

function getFeesReceiver(uint256 _feeType) external view returns (address)

Returns the address of the fees receiver.

Call Parameters:

Name
Type
Description

_feeType

uint256

0 corresponds to managementFeesReceiver

Return Value:

Type
Description

address

address of the fees receivercreateVault

isTokenWhitelisted

function isTokenWhitelisted(address _token) public view returns (bool)

Checks if a token is whitelisted.

Call Parameters:

Name
Type
Description

_tokens

address

token's address to check

Return Value:

Type
Description

bool

returns true if the address of the token is whitelisted

getFactoryState

function getFactoryState()
    external
    view
    returns (
        address[] memory,
        address,
        address,
        address,
        address,
        address
    )

Returns all parameters from the factory.

Return Values:

Type
Description

address[]

addresses of the vaults

address

address of the fees manager

address

address of the access manager

address

address of the harvester

address

address of the proxy

address

address of the router

getVaultState

function getVaultState(address _vault)
    external
    view
    returns (
        VLib.Token[] memory vTokens,
        VLib.ConstantProps memory constantProps,
        VLib.HistoryProps memory historyProps,
        VLib.ConfigProps memory configProps,
        VLib.FeesProps memory feesProps,
        VLib.SecurityProps memory securityProps,
        uint256[] memory balances,
        uint256[] memory positions,
        uint256 vvl,
        uint256 sharePrice,
        uint256[2] memory ongoingFees
    )

Returns the parameters of a vault.

Call Parameters:

Name
Type
Description

_vault

address

address of the vault

Return Values:

Name
Type
Description

vTokens

VLib.Token[]

list of the tokens managed by the vault

constantProps

VLib.constantProps

constant parameters from the vault

historyProps

VLib.HistoryProps

previous parameters

configProps

VLib.ConfigProps

main configuration parameters from the vault

feesProps

VLib.FeesProps

fees parameter from the vault

securityProps

VLib.securityProps

security parameter from the vault

balances

uint256

amount of each assets in the vault

positions

uint256

positions from the vaults

vvl

uint256

vault's TVL

sharePrice

uint256

share price

ongoingFees

uint256[2]

amount of management and performance fees to harvest

getVaultOngoingFees

function getVaultOngoingFees(address _vault) 
    external 
    view 
    returns (
        uint256 ongoingManagementFees, 
        uint256 ongoingPerformanceFees
    )

Returns the amount of fees to harvest according to a vault address.

Call Parameters:

Name
Type
Description

_vault

address

address of the vault

Return Values:

Name
Type
Description

ongoingManagementFees

uint256

amount of management fees to harvest

ongoingPerformanceFees

uint256

amount of performance fees to harvest

getShareState

function getShareState(address _vault)
    external
    view
    returns (
        address share,
        string memory name,
        string memory symbol,
        uint8 decimals,
        uint256 supply,
        bool transferable
    )

Returns the share parameters from a vault according to its address.

Call Parameters:

Name
Type
Description

_vault

address

address of the vault

Return Values:

Name
Type
Description

share

address

address of vault's share

name

string

name of the vault's share

symbol

string

symbol of vault's share

decimals

uint8

vault's share decimals

supply

uint256

vault's share supply

transferable

bool

vault's share transferability

getUserShareState

function getUserShareState(address _vault, address _user)
    external
    view
    returns (
        address share,
        uint256 balance,
        uint256 allowanceToVault
    )

Returns user's share information according to the vault's address and the user address.

Call Parameters:

Name
Type
Description

_vault

address

address of the vault

_user

address

address of the user

Return Values:

Name
Type
Description

share

address

address of vault's share

balance

uint256

amount of share in user's wallet

allowanceToVault

uint256

allowance between the user and the vault

getRolesPerVault

function getRolesPerVault(address _vault)
    external
    view
    returns (
        bytes32[3] memory,
        address[] memory,
        address[] memory,
        address[] memory
    )

Returns the roles names and the addresses of the admins, strategists and harvesters according to a vault address.

Call Parameters:

Name
Type
Description

_vault

address

address of the vault

Return Values:

Type
Description

bytes32[3]

list of roles names

address[]

list of admins addresses

address[]

list of strategists addresses

address[]

list of harvesters addresses

Write Methods

createVault

function createVault(
    address[] calldata _tokensAddresses,
    VLib.CreationProps calldata _creationProps,
    VLib.FeesProps calldata _feesProps,
    VLib.SecurityProps calldata _securityProps
) external

Creates a vault with the parameters requested.

This method can only be called by address with VAULT_CREATOR_ROLE.

Call Parameters:

Name
Type
Description

_tokensAddresses

address[]

all manageable assets

_creationProps

VLib.CreationProps

main vault information

_feesProps

VLib.FeesProps

fees parameters

_securityProps

VLib.SecurityProps

security parameters

setAccessManager

function setAccessManager(address _newAccesslolManager) external

Settles the new AccessManager.

This method can only be called by the contract owner.

Call Parameters:

Name
Type
Description

_newAccessManager

address

address of the new AccessManager

setFeesManager

function setFeesManager(address _newFeesManager) external

Settles the new FeesManager.

This method can only be called by the contract owner.

Call Parameters:

Name
Type
Description

_newFeesManager

address

address of the new FeesManager

setHarvester

function setHarvester(address _newHarvester) external

Settles the new Harvester.

This method can only be called by the contract owner.

Call Parameters:

Name
Type
Description

_newHarvester

address

address of the new Harvester

setSwapContracts

function setSwapContracts(address _newSwapRouter, address _newSwapProxy) external

Settles the new aggregator proxy and router.

This method can only be called by the contract owner.

Call Parameters:

Name
Type
Description

_newSwapRouter

address

address of the new router

_newSwapProxy

address

address of the new proxy

setSwapAdapter

function setSwapAdapter(address _newSwapAdapter) external

Settles the new swap adapter.

This method can only be called by the contract owner.

Call Parameters:

Name
Type
Description

_newSwapAdapter

address

address of the new swap adapter

addTokenAndPriceFeedsToWL

function addTokensAndPriceFeedsToWL(
    address[] calldata _tokens, 
    address[] calldata _priceFeeds
) external

Whitelists a tokens and their oracles for vaults.

This method can only be called by the contract owner.

Call Parameters:

Name
Type
Description

_token

address[]

list of tokens addresses to whitelist

_priceFeeds

address[]

list token's oracle addresses to whitelist

removeTokensFromWhitelist

function removeTokensFromWhitelist(address[] calldata _tokens) external

Removes tokens and their oracles from the whitelist.

This method can only be called by the contract owner.

Parameters:

Name
Type
Description

_tokens

address[]

list of tokens addresses to remove

Last updated