IGovernor_v1.sol
Functions
init
The module's initializer function.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the community multisig. |
|
| The address of the team multisig. |
|
| The timelock period needed to upgrade a {IInverterBeacon_v1}. |
|
| The address of the initial {FeeManager_v1}. |
|
| The address of the initial {ModuleFactory_v1}. |
moduleFactoryInitCallback
Callback function that is called by {ModuleFactory_v1} during initialization.
Parameters
Name | Type | Description |
---|---|---|
|
| The array of {IInverterBeacon_v1}s that will be registered. |
getBeaconTimelock
Returns the current timelock of a {IInverterBeacon_v1} address.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1}. |
Returns
Name | Type | Description |
---|---|---|
|
| The timelock of the {IInverterBeacon_v1} address. |
getLinkedBeacons
Returns the list of currently linked {IInverterBeacon_v1}s.
Returns
Name | Type | Description |
---|---|---|
|
| LinkedBeacons The array of {IInverterBeacon_v1}s that are currently linked to the {Governor_v1}. |
getFeeManager
Returns the {FeeManager_v1} address.
Returns
Name | Type | Description |
---|---|---|
|
| Address of the {FeeManager_v1}. |
getModuleFactory
Returns the {ModuleFactory_v1} address.
Returns
Name | Type | Description |
---|---|---|
|
| Address of the {ModuleFactory_v1}. |
setFeeManager
Sets the address of the {FeeManager_v1}.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the new {FeeManager_v1}. |
setModuleFactory
Sets the address of the {ModuleFactory_v1}.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the new {ModuleFactory_v1}. |
setFeeManagerMaxFee
Sets the maximum fee percentage that can be assigned in the linked {FeeManager_v1}.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
The given max fee can not be higher than the BPS.
Parameters
Name | Type | Description |
---|---|---|
|
| The max Fee in relation to the BPS. |
setFeeManagerDefaultProtocolTreasury
Sets the default protocol treasury address in the linked {FeeManager_v1}.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
The given treasury address can not be address(0).
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the default protocol treasury. |
setFeeManagerWorkflowTreasuries
Sets the protocol treasury address for a specific workflow in the linked {FeeManager_v1}.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
The given treasury address can not be address(0).
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the workflow. |
|
| The address of the protocol treasury for that specific workflow. |
setFeeManagerDefaultCollateralFee
Sets the default collateral fee of the protocol in the linked {FeeManager_v1}.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
The given fee needs to be less than the BPS.
Parameters
Name | Type | Description |
---|---|---|
|
| The default collateral fee of the protocol in relation to the BPS. |
setFeeManagerDefaultIssuanceFee
Sets the default issuance fee of the protocol in the linked {FeeManager_v1}.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
The given fee needs to be less than the BPS.
Parameters
Name | Type | Description |
---|---|---|
|
| The default issuance fee of the protocol in relation to the BPS. |
setFeeManagerCollateralWorkflowFee
Sets the collateral fee for a specific workflow module function in the linked {FeeManager_v1}.
Can only be accessed by either the COMMUNITY_MULTISIG_ROLE
or the TEAM_MULTISIG_ROLE
.
The given fee needs to be less than the BPS.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the workflow that contains the module function. |
|
| The address of the module that contains the function. |
|
| The function selector of the target function. |
|
| Boolean that determines if the fee is actually used or not. |
|
| The collateral fee in relation to the BPS. |
setFeeManagerIssuanceWorkflowFee
Sets the issuance fee for a specific workflow module function in the linked {FeeManager_v1}.
Can only be accessed by either the COMMUNITY_MULTISIG_ROLE
or the TEAM_MULTISIG_ROLE
.
The given fee needs to be less than the BPS.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the workflow that contains the module function. |
|
| The address of the module that contains the function. |
|
| The function selector of the target function. |
|
| Boolean that determines if the fee is actually used or not. |
|
| The issuance fee in relation to the BPS. |
registerMetadataInModuleFactory
Registers a {IInverterBeacon_v1} with the provided metadata
in the target {ModuleFactory_v1}.
Can only be accessed by either the COMMUNITY_MULTISIG_ROLE
or the TEAM_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The metadata that will be registered. |
|
| The {IInverterBeacon_v1} that will be registered. |
upgradeBeaconWithTimelock
Starts the upgrade process of a {IInverterBeacon_v1} by creating a timelock period after which the {IInverterBeacon_v1} can be upgraded via triggerUpgradeBeaconWithTimelock()
.
This function will override previous timelocks even if they are active.
Can only be accessed by either the COMMUNITY_MULTISIG_ROLE
or the TEAM_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1} that is intended to be upgraded. |
|
| The address of the intended new Implementation of the {IInverterBeacon_v1}. |
|
| The intended new minor version of the {IInverterBeacon_v1}. |
|
| The intended new patch version of the {IInverterBeacon_v1}. |
triggerUpgradeBeaconWithTimelock
Upgrades a {IInverterBeacon_v1} with the data provided by the active timelock.
Can only be accessed by either the COMMUNITY_MULTISIG_ROLE
or the TEAM_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1} that is intended to be upgraded. |
cancelUpgrade
Cancels an upgrade of {IInverterBeacon_v1} by setting the active timelock to inactive.
Can only be accessed by either the COMMUNITY_MULTISIG_ROLE
or the TEAM_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1} for which the timelock should be canceled. |
setTimelockPeriod
Sets the timelock period of a {IInverterBeacon_v1} upgrade process.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The new timelock period. |
initiateBeaconShutdown
Initiates the shutdown of a {IInverterBeacon_v1}.
Can only be accessed by either the COMMUNITY_MULTISIG_ROLE
or the TEAM_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1} that should be shut down. |
initiateBeaconShutdownForAllLinkedBeacons
Initiates the shutdown of all linked {IInverterBeacon_v1}s.
Can only be accessed by either the COMMUNITY_MULTISIG_ROLE
or the TEAM_MULTISIG_ROLE
.
forceUpgradeBeaconAndRestartImplementation
This function forces the upgrade of a beacon and restarts the implementation afterwards.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1} that is intended to be upgraded and restarted. |
|
| The address of the intended new Implementation of the {IInverterBeacon_v1}. |
|
| The intended new minor version of the {IInverterBeacon_v1}. |
|
| The intended new patch version of the {IInverterBeacon_v1}. |
restartBeaconImplementation
Restarts the {IInverterBeacon_v1} implementation.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1} that should restarted. |
acceptOwnership
Accepts the ownership over the target address.
Can only be accessed by the COMMUNITY_MULTISIG_ROLE
or TEAM_MULTISIG_ROLE
.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of target that wants to hand over the ownership. |
Events
BeaconTimelockStarted
Event emitted when a new timelock period for a upgrade of a {IInverterBeacon_v1} is started.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1}. |
|
| The address of the new Implementation. |
|
| The new minor version. |
|
| The new patch version. |
|
| Timestamp of when the timelock is exceeded. |
BeaconUpgraded
Event emitted when a {IInverterBeacon_v1} is upgraded.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1}. |
|
| The address of the new Implementation. |
|
| The new minor version. |
|
| The new patch version. |
BeaconUpgradedCanceled
Event emitted when a {IInverterBeacon_v1} upgraded is canceled.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1}. |
FeeManagerUpdated
Event emitted when the fee manager is updated.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the fee manager. |
ModuleFactoryUpdated
Event emitted when the module factory is updated.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the module factory. |
TimelockPeriodSet
Event emitted when a timelock period is set.
Parameters
Name | Type | Description |
---|---|---|
|
| The new timelock period. |
BeaconShutdownInitiated
Event emitted when a {IInverterBeacon_v1} shutdown is initiated.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1}. |
BeaconForcefullyUpgradedAndImplementationRestarted
Event emitted when a {IInverterBeacon_v1} is forcefully upgraded and the implementation gets restarted immediately.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1}. |
|
| The address of the new Implementation. |
|
| The new minor version. |
|
| The new patch version. |
BeaconImplementationRestarted
Event emitted when a {IInverterBeacon_v1} implementation is restarted.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the {IInverterBeacon_v1}. |
OwnershipAccepted
Event emitted when the {Governor_v1} contract accepts the ownership over another contract.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the contract that distributed the ownership. |
Errors
Governor__OnlyLinkedModuleFactory
This function can only be accessed by the linked {ModuleFactory_v1}.
Governor__LinkedBeaconsNotEmpty
This function can only be called when the linked {IInverterBeacon_v1} array is empty.
Governor__InvalidAddress
The given address is invalid.
Governor__InvalidTimelockPeriod
The given amount is invalid.
Governor__BeaconNotAccessible
The given target address is not accessible.
Governor__OnlyCommunityOrTeamMultisig
This function can only be accessed by the CommunityMultisig or TeamMultisig.
Governor__TimelockPeriodNotExceeded
The timelock period needed for the {IInverterBeacon_v1} to be upgraded has not been exceeded yet.
Governor__UpgradeProcessNotStarted
This upgrade process for this {IInverterBeacon_v1} has not yet been started.
Governor__CallToTargetContractFailed
The call to the target contract has failed.
Structs
Timelock
Struct used to store information about a timelock for a {IInverterBeacon_v1} upgrade.
The timelock is needed to upgrade a {IInverterBeacon_v1} to new implementation.
Properties
Name | Type | Description |
---|---|---|
|
| Is the timelock currently active. |
|
| |
|
| The new inteded Implementation address of the {IInverterBeacon_v1}. |
|
| The new intended minor version of the {IInverterBeacon_v1}. |
|
| The new intended patch version of the {IInverterBeacon_v1}. |
Last updated