Skip to content
LogoLogo

HubCoreFactory

Git Source

Inherits: AccessManagedUpgradeable, CaliberFactory, BridgeAdapterFactory, IHubCoreFactory

Constants

HubCoreFactoryStorageLocation

bytes32 private constant HubCoreFactoryStorageLocation =
        0xa73526acc519facb543e3fac63cbe361155292db6c01a81eec358613ec9ee100;

Functions

_getHubCoreFactoryStorage

function _getHubCoreFactoryStorage() internal pure returns (HubCoreFactoryStorage storage $);

Returns

NameTypeDescription
$HubCoreFactoryStorage

constructor

constructor(address _registry) MakinaContext(_registry);

Parameters

NameTypeDescription
_registryaddress

initialize

function initialize(address initialAuthority) external initializer;

Parameters

NameTypeDescription
initialAuthorityaddress

isMachine

Address => Whether this is a Machine instance deployed by this factory.

function isMachine(address machine) external view override returns (bool);

Parameters

NameTypeDescription
machineaddress

Returns

NameTypeDescription
<none>bool

isPreDepositVault

Address => Whether this is a PreDepositVault instance deployed by this factory.

function isPreDepositVault(address preDepositVault) external view override returns (bool);

Parameters

NameTypeDescription
preDepositVaultaddress

Returns

NameTypeDescription
<none>bool

createPreDepositVault

Deploys a new PreDepositVault instance.

function createPreDepositVault(
        IPreDepositVault.PreDepositVaultInitParams calldata params,
        address depositToken,
        address accountingToken,
        string memory tokenName,
        string memory tokenSymbol,
        bool setupAMFunctionRoles
    ) external override restricted returns (address);

Parameters

NameTypeDescription
paramsIPreDepositVault.PreDepositVaultInitParamsThe initialization parameters.
depositTokenaddressThe address of the deposit token.
accountingTokenaddressThe address of the accounting token.
tokenNamestringThe name of the share token.
tokenSymbolstringThe symbol of the share token.
setupAMFunctionRolesboolWhether to set roles for restricted functions on the deployed instance.

Returns

NameTypeDescription
<none>addressThe address of the deployed PreDepositVault instance.

createMachineFromPreDeposit

Deploys a new Machine instance and migrates an existing PreDepositVault instance to it.

function createMachineFromPreDeposit(
        IMachine.MachineInitParams calldata mParams,
        ICaliber.CaliberInitParams calldata cParams,
        IMakinaGovernable.MakinaGovernableInitParams calldata mgParams,
        ISpokeSnapshotConsumer.SpokeSnapshotConsumerInitParams calldata sscParams,
        BridgeAdapterInitParams[] calldata baParams,
        address preDepositVault,
        bytes32 salt,
        bool setupAMFunctionRoles
    ) external override restricted returns (address);

Parameters

NameTypeDescription
mParamsIMachine.MachineInitParamsThe machine initialization parameters.
cParamsICaliber.CaliberInitParamsThe caliber initialization parameters.
mgParamsIMakinaGovernable.MakinaGovernableInitParamsThe makina governable initialization parameters.
sscParamsISpokeSnapshotConsumer.SpokeSnapshotConsumerInitParamsThe spoke snapshot consumer initialization parameters.
baParamsBridgeAdapterInitParams[]The list of bridge adapter initialization parameters and controller configuration.
preDepositVaultaddressThe address of the PreDepositVault instance to migrate.
saltbytes32The salt used to deploy the hub caliber deterministically.
setupAMFunctionRolesboolWhether to set roles for restricted functions on the deployed instance.

Returns

NameTypeDescription
<none>addressThe address of the deployed Machine instance.

createMachine

Deploys a new Machine instance.

function createMachine(
        IMachine.MachineInitParams calldata mParams,
        ICaliber.CaliberInitParams calldata cParams,
        IMakinaGovernable.MakinaGovernableInitParams calldata mgParams,
        ISpokeSnapshotConsumer.SpokeSnapshotConsumerInitParams calldata sscParams,
        BridgeAdapterInitParams[] calldata baParams,
        address accountingToken,
        string memory tokenName,
        string memory tokenSymbol,
        bytes32 salt,
        bool setupAMFunctionRoles
    ) external override restricted returns (address);

Parameters

NameTypeDescription
mParamsIMachine.MachineInitParamsThe machine initialization parameters.
cParamsICaliber.CaliberInitParamsThe caliber initialization parameters.
mgParamsIMakinaGovernable.MakinaGovernableInitParamsThe makina governable initialization parameters.
sscParamsISpokeSnapshotConsumer.SpokeSnapshotConsumerInitParamsThe spoke snapshot consumer initialization parameters.
baParamsBridgeAdapterInitParams[]The list of bridge adapter initialization parameters and controller configuration.
accountingTokenaddressThe address of the accounting token.
tokenNamestringThe name of the share token.
tokenSymbolstringThe symbol of the share token.
saltbytes32The salt used to deploy the hub caliber deterministically.
setupAMFunctionRolesboolWhether to set roles for restricted functions on the deployed instance.

Returns

NameTypeDescription
<none>addressThe address of the deployed Machine instance.

createBridgeAdapter

Deploys a bridge adapter instance.

function createBridgeAdapter(address controller, BridgeAdapterInitParams calldata baParams)
        external
        override
        restricted
        returns (address);

Parameters

NameTypeDescription
controlleraddressThe address of the bridge controller for which to deploy the adapter.
baParamsBridgeAdapterInitParamsThe bridge adapter initialization parameters and controller configuration.

Returns

NameTypeDescription
<none>addressThe address of the deployed bridge adapter.

_createShareToken

Deploys a machine share token.

function _createShareToken(string memory name, string memory symbol, address initialOwner)
        internal
        returns (address);

Parameters

NameTypeDescription
namestring
symbolstring
initialOwneraddress

Returns

NameTypeDescription
<none>address

_setupPreDepositVaultAMFunctionRoles

Sets function roles for a deployed pre-deposit vault instance in the provided authority.

function _setupPreDepositVaultAMFunctionRoles(address _authority, address _preDepositVault) internal;

Parameters

NameTypeDescription
_authorityaddress
_preDepositVaultaddress

_setupMachineBundleAMFunctionRoles

Sets function roles for a deployed machine instance, its hub caliber, and its initial fee manager if applicable, in the provided authority.

function _setupMachineBundleAMFunctionRoles(
        address _authority,
        address _machine,
        address _caliber,
        address _initialFeeManager
    ) internal;

Parameters

NameTypeDescription
_authorityaddress
_machineaddress
_caliberaddress
_initialFeeManageraddress

_setupMachineAMFunctionRoles

Sets function roles for a deployed machine instance.

function _setupMachineAMFunctionRoles(address _authority, address _machine) internal;

Parameters

NameTypeDescription
_authorityaddress
_machineaddress

_setupInitialFeeManagerAMFunctionRoles

Sets function roles for the initial fee manager of a deployed machine instance if applicable.

function _setupInitialFeeManagerAMFunctionRoles(address _authority, address _feeManager) internal;

Parameters

NameTypeDescription
_authorityaddress
_feeManageraddress

_checkAuthority

Checks that the provided authority matches the current authority.

function _checkAuthority(address _authority) internal view;

Parameters

NameTypeDescription
_authorityaddress

Structs

HubCoreFactoryStorage

Note:

  • storage-location: erc7201:makina.storage.HubCoreFactory
struct HubCoreFactoryStorage {
        mapping(address preDepositVault => bool isPreDepositVault) _isPreDepositVault;
        mapping(address machine => bool isMachine) _isMachine;
        mapping(address machine => bytes32 salt) _instanceSalts;
    }

Properties

NameTypeDescription
_isPreDepositVaultmapping(address preDepositVault => bool isPreDepositVault)
_isMachinemapping(address machine => bool isMachine)
_instanceSaltsmapping(address machine => bytes32 salt)