MultiDepositorVaultFactory
Last updated
Last updated
Inherits: IMultiDepositorVaultFactory, FeeVaultDeployer, Sweepable
Used to create new multi-depositor vaults using delegate call
Only one instance of the factory will be required per chain
ERC7201-compliant transient storage slot for storing vault token erc20 name during deployment
Equal to keccak256(abi.encode(uint256(keccak256("aera.factory.erc20.name")) - 1)) & ~bytes32(uint256(0xff));
bytes32 internal constant ERC20_NAME_SLOT = 0x79a9bb099f009196aa3acc685f15554a8e8fd10fee7019652e2c9a6d65a86500;
ERC7201-compliant transient storage slot for storing vault token erc20 symbol during deployment
Equal to keccak256(abi.encode(uint256(keccak256("aera.factory.erc20.symbol")) - 1)) & ~bytes32(uint256(0xff));
bytes32 internal constant ERC20_SYMBOL_SLOT = 0xab25fe6ab1c05d9a94c8d6727a857804585a85a98c2bb360f69300eb1a356300;
ERC7201-compliant transient storage slot for storing multi depositor vault parameters during deployment
Equal to keccak256(abi.encode(uint256(keccak256("aera.factory.multiDepositorVaultParameters")) - 1)) & ~bytes32(uint256(0xff));
bytes32 internal constant MULTI_DEPOSITOR_VAULT_PARAMETERS_SLOT =
0xe5669a0cf4b353071b0fa74e3cea85f64b33cd9eee158e4f6614aca797ff3a00;
Address of the deploy delegate
address internal immutable _DEPLOY_DELEGATE;
constructor(address initialOwner, Authority initialAuthority, address deployDelegate)
Sweepable(initialOwner, initialAuthority);
Create multi depositor vault
function create(
bytes32 salt,
string calldata description,
ERC20Parameters calldata erc20Params,
BaseVaultParameters calldata baseVaultParams,
FeeVaultParameters calldata feeVaultParams,
IBeforeTransferHook beforeTransferHook,
address expectedVaultAddress
) external override requiresAuth returns (address deployedVault);
Parameters
salt
bytes32
The salt used to generate the vault address
description
string
Vault description
erc20Params
ERC20Parameters
ERC20 parameters for deployment
baseVaultParams
BaseVaultParameters
Base vault parameters for deployment
feeVaultParams
FeeVaultParameters
Fee vault parameters for deployment
beforeTransferHook
IBeforeTransferHook
Before transfer hooks for deployment
expectedVaultAddress
address
Expected vault address to check against deployed vault address
Returns
deployedVault
address
Deployed vault address
Get the ERC20 name of vault units
function getERC20Name() external view returns (string memory name);
Returns
name
string
The name of the vault ERC20 token
Get the ERC20 symbol of vault units
function getERC20Symbol() external view returns (string memory symbol);
Returns
symbol
string
The symbol of the vault ERC20 token
Get the vault parameters
function multiDepositorVaultParameters() external view returns (IBeforeTransferHook beforeTransferHook);
Returns
beforeTransferHook
IBeforeTransferHook
The hooks called before vault unit transfers
Deploy vault
function _deployVault(
bytes32 salt,
string calldata description,
ERC20Parameters calldata erc20Params,
BaseVaultParameters calldata baseVaultParams,
FeeVaultParameters calldata feeVaultParams,
IBeforeTransferHook beforeTransferHook
) internal returns (address deployed);
Parameters
salt
bytes32
The salt value to create vault
description
string
Vault description
erc20Params
ERC20Parameters
ERC20 parameters for vault deployment used in MultiDepositorVault
baseVaultParams
BaseVaultParameters
Parameters for vault deployment used in BaseVault
feeVaultParams
FeeVaultParameters
Parameters for vault deployment specific to FeeVault
beforeTransferHook
IBeforeTransferHook
Parameters for vault deployment specific to MultiDepositorVault
Returns
deployed
address
Deployed vault address
Store ERC20 name and symbol in transient storage
function _storeERC20Parameters(ERC20Parameters calldata params) internal;
Parameters
params
ERC20Parameters
Struct containing ERC20 name and symbol
Store beforeTransferHook address in transient storage
function _storeMultiDepositorVaultParameters(IBeforeTransferHook beforeTransferHook) internal;
Parameters
beforeTransferHook
IBeforeTransferHook
The hooks called before token transfers
Create a new vault with delegate call
function _createVault(bytes32 salt) internal returns (address deployed);
Parameters
salt
bytes32
The salt value to create vault
Returns
deployed
address
Deployed vault address
Load a short string from the given storage slot
function _loadStringFromSlot(uint256 slot) internal view returns (string memory);
Parameters
slot
uint256
Storage slot to read from
Returns
<none>
string
Decoded string