> For the complete documentation index, see [llms.txt](https://docs.inverter.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.inverter.network/contracts/technical-reference/external/governance/interfaces/igovernor_v1.sol.md).

# IGovernor\_v1.sol

[Git Source](https://github.com/InverterNetwork/inverter-contracts/blob/924235ad72271a7cb09cd1b027f938f90a42eb93/src/external/governance/interfaces/IGovernor_v1.sol)

### Functions

#### init

The module's initializer function.

```solidity
function init(
    address _communityMultisig,
    address _teamMultisig,
    uint _timelockPeriod,
    address _feeManager,
    address _moduleFactory
) external;
```

**Parameters**

| Name                 | Type      | Description                                                                                                                                   |
| -------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `_communityMultisig` | `address` | The address of the community multisig.                                                                                                        |
| `_teamMultisig`      | `address` | The address of the team multisig.                                                                                                             |
| `_timelockPeriod`    | `uint256` | The timelock period needed to upgrade a [{IInverterBeacon\_v1}.](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) |
| `_feeManager`        | `address` | The address of the initial [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).                             |
| `_moduleFactory`     | `address` | The address of the initial [{ModuleFactory\_v1}](/contracts/technical-reference/factories/modulefactory_v1.sol.md).                           |

#### moduleFactoryInitCallback

Callback function that is called by [{ModuleFactory\_v1} ](/contracts/technical-reference/factories/modulefactory_v1.sol.md)during initialization.

```solidity
function moduleFactoryInitCallback(
    IInverterBeacon_v1[] calldata registeredBeacons
) external;
```

**Parameters**

| Name                | Type                   | Description                                                                                                                                 |
| ------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `registeredBeacons` | `IInverterBeacon_v1[]` | The array of [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)s that will be registered. |

#### getBeaconTimelock

Returns the current timelock of a[ {IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) address.

```solidity
function getBeaconTimelock(address beacon)
    external
    view
    returns (Timelock memory);
```

**Parameters**

| Name     | Type      | Description                                                                                                              |
| -------- | --------- | ------------------------------------------------------------------------------------------------------------------------ |
| `beacon` | `address` | The address of the [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md). |

**Returns**

| Name     | Type       | Description                                                                                                                       |
| -------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `<none>` | `Timelock` | The timelock of the [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) address. |

#### getLinkedBeacons

Returns the list of currently linked[ {IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)s.

```solidity
function getLinkedBeacons()
    external
    view
    returns (IInverterBeacon_v1[] memory);
```

**Returns**

| Name     | Type                   | Description                                                                                                                                                                                                                                                |
| -------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<none>` | `IInverterBeacon_v1[]` | LinkedBeacons The array of [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)s that are currently linked to the [{Governor\_v1}](/contracts/technical-reference/external/governance/governor_v1.sol.md). |

#### getFeeManager

Returns the [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md) address.

```solidity
function getFeeManager() external view returns (address);
```

**Returns**

| Name     | Type      | Description                                                                                           |
| -------- | --------- | ----------------------------------------------------------------------------------------------------- |
| `<none>` | `address` | Address of the [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md). |

#### getModuleFactory

Returns the [{ModuleFactory\_v1}](/contracts/technical-reference/factories/modulefactory_v1.sol.md) address.

```solidity
function getModuleFactory() external view returns (address);
```

**Returns**

| Name     | Type      | Description                                                                                             |
| -------- | --------- | ------------------------------------------------------------------------------------------------------- |
| `<none>` | `address` | Address of the [{ModuleFactory\_v1}](/contracts/technical-reference/factories/modulefactory_v1.sol.md). |

#### setFeeManager

Sets the address of the [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

```solidity
function setFeeManager(address newFeeManager) external;
```

**Parameters**

| Name            | Type      | Description                                                                                                   |
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------- |
| `newFeeManager` | `address` | The address of the new [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md). |

#### setModuleFactory

Sets the address of the [{ModuleFactory\_v1}](/contracts/technical-reference/factories/modulefactory_v1.sol.md).

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

```solidity
function setModuleFactory(address newModuleFactory) external;
```

**Parameters**

| Name               | Type      | Description                                                                                                     |
| ------------------ | --------- | --------------------------------------------------------------------------------------------------------------- |
| `newModuleFactory` | `address` | The address of the new [{ModuleFactory\_v1}](/contracts/technical-reference/factories/modulefactory_v1.sol.md). |

#### setFeeManagerMaxFee

Sets the maximum fee percentage that can be assigned in the linked [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

*The given max fee can not be higher than the BPS.*

```solidity
function setFeeManagerMaxFee(uint maxFee) external;
```

**Parameters**

| Name     | Type      | Description                         |
| -------- | --------- | ----------------------------------- |
| `maxFee` | `uint256` | The max Fee in relation to the BPS. |

#### setFeeManagerDefaultProtocolTreasury

Sets the default protocol treasury address in the linked [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

*The given treasury address can not be address(0).*

```solidity
function setFeeManagerDefaultProtocolTreasury(address _defaultProtocolTreasury)
    external;
```

**Parameters**

| Name                       | Type      | Description                                   |
| -------------------------- | --------- | --------------------------------------------- |
| `_defaultProtocolTreasury` | `address` | The address of the default protocol treasury. |

#### setFeeManagerWorkflowTreasuries

Sets the protocol treasury address for a specific workflow in the linked [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

*The given treasury address can not be address(0).*

```solidity
function setFeeManagerWorkflowTreasuries(address workflow, address treasury)
    external;
```

**Parameters**

| Name       | Type      | Description                                                      |
| ---------- | --------- | ---------------------------------------------------------------- |
| `workflow` | `address` | The address of the workflow.                                     |
| `treasury` | `address` | The address of the protocol treasury for that specific workflow. |

#### setFeeManagerDefaultCollateralFee

Sets the default collateral fee of the protocol in the linked [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

*The given fee needs to be less than the BPS.*

```solidity
function setFeeManagerDefaultCollateralFee(uint _defaultCollateralFee)
    external;
```

**Parameters**

| Name                    | Type      | Description                                                        |
| ----------------------- | --------- | ------------------------------------------------------------------ |
| `_defaultCollateralFee` | `uint256` | 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}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

*The given fee needs to be less than the BPS.*

```solidity
function setFeeManagerDefaultIssuanceFee(uint _defaultIssuanceFee) external;
```

**Parameters**

| Name                  | Type      | Description                                                      |
| --------------------- | --------- | ---------------------------------------------------------------- |
| `_defaultIssuanceFee` | `uint256` | 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}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).

*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.*

```solidity
function setFeeManagerCollateralWorkflowFee(
    address workflow,
    address module,
    bytes4 functionSelector,
    bool set,
    uint fee
) external;
```

**Parameters**

| Name               | Type      | Description                                                    |
| ------------------ | --------- | -------------------------------------------------------------- |
| `workflow`         | `address` | The address of the workflow that contains the module function. |
| `module`           | `address` | The address of the module that contains the function.          |
| `functionSelector` | `bytes4`  | The function selector of the target function.                  |
| `set`              | `bool`    | Boolean that determines if the fee is actually used or not.    |
| `fee`              | `uint256` | The collateral fee in relation to the BPS.                     |

#### setFeeManagerIssuanceWorkflowFee

Sets the issuance fee for a specific workflow module function in the linked [{FeeManager\_v1}](/contracts/technical-reference/external/fees/feemanager_v1.sol.md).

*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.*

```solidity
function setFeeManagerIssuanceWorkflowFee(
    address workflow,
    address module,
    bytes4 functionSelector,
    bool set,
    uint fee
) external;
```

**Parameters**

| Name               | Type      | Description                                                    |
| ------------------ | --------- | -------------------------------------------------------------- |
| `workflow`         | `address` | The address of the workflow that contains the module function. |
| `module`           | `address` | The address of the module that contains the function.          |
| `functionSelector` | `bytes4`  | The function selector of the target function.                  |
| `set`              | `bool`    | Boolean that determines if the fee is actually used or not.    |
| `fee`              | `uint256` | The issuance fee in relation to the BPS.                       |

#### registerMetadataInModuleFactory

Registers a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) with the provided `metadata` in the target [{ModuleFactory\_v1}](/contracts/technical-reference/factories/modulefactory_v1.sol.md).

*Can only be accessed by either the `COMMUNITY_MULTISIG_ROLE` or the `TEAM_MULTISIG_ROLE`.*

```solidity
function registerMetadataInModuleFactory(
    IModule_v1.Metadata memory metadata,
    IInverterBeacon_v1 beacon
) external;
```

**Parameters**

| Name       | Type                  | Description                                                                                                                       |
| ---------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `metadata` | `IModule_v1.Metadata` | The metadata that will be registered.                                                                                             |
| `beacon`   | `IInverterBeacon_v1`  | The[ {IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) that will be registered. |

#### upgradeBeaconWithTimelock

Starts the upgrade process of a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) by creating a timelock period after which the [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) 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`.*

```solidity
function upgradeBeaconWithTimelock(
    address beacon,
    address newImplementation,
    uint newMinorVersion,
    uint newPatchVersion
) external;
```

**Parameters**

| Name                | Type      | Description                                                                                                                                                                                                                                |
| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `beacon`            | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/99/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol) that is intended to be upgraded.    |
| `newImplementation` | `address` | The address of the intended new Implementation of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/99/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol). |
| `newMinorVersion`   | `uint256` | The intended new minor version of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/99/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol).                 |
| `newPatchVersion`   | `uint256` | The intended new patch version of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/99/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol).                 |

#### triggerUpgradeBeaconWithTimelock

Upgrades a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) with the data provided by the active timelock.

*Can only be accessed by either the `COMMUNITY_MULTISIG_ROLE` or the `TEAM_MULTISIG_ROLE`.*

```solidity
function triggerUpgradeBeaconWithTimelock(address beacon) external;
```

**Parameters**

| Name     | Type      | Description                                                                                                                                                                                                                             |
| -------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon` | `address` | The address of the [{IInverterBeacon\_v1} ](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/99/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol)that is intended to be upgraded. |

#### cancelUpgrade

Cancels an upgrade of [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) by setting the active timelock to inactive.

*Can only be accessed by either the `COMMUNITY_MULTISIG_ROLE` or the `TEAM_MULTISIG_ROLE`.*

```solidity
function cancelUpgrade(address beacon) external;
```

**Parameters**

| Name     | Type      | Description                                                                                                                                                                                                                                       |
| -------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon` | `address` | The address of the [{IInverterBeacon\_v1} ](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/99/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol)for which the timelock should be canceled. |

#### setTimelockPeriod

Sets the timelock period of a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) upgrade process.

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

```solidity
function setTimelockPeriod(uint newtimelockPeriod) external;
```

**Parameters**

| Name                | Type      | Description              |
| ------------------- | --------- | ------------------------ |
| `newtimelockPeriod` | `uint256` | The new timelock period. |

#### initiateBeaconShutdown

Initiates the shutdown of a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md).

*Can only be accessed by either the `COMMUNITY_MULTISIG_ROLE` or the `TEAM_MULTISIG_ROLE`.*

```solidity
function initiateBeaconShutdown(address beacon) external;
```

**Parameters**

| Name     | Type      | Description                                                                                                                                                                                                                      |
| -------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon` | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/99/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol) that should be shut down. |

#### initiateBeaconShutdownForAllLinkedBeacons

Initiates the shutdown of all linked [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)s.

*Can only be accessed by either the `COMMUNITY_MULTISIG_ROLE` or the `TEAM_MULTISIG_ROLE`.*

```solidity
function initiateBeaconShutdownForAllLinkedBeacons() external;
```

#### forceUpgradeBeaconAndRestartImplementation

This function forces the upgrade of a beacon and restarts the implementation afterwards.

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

```solidity
function forceUpgradeBeaconAndRestartImplementation(
    address beacon,
    address newImplementation,
    uint newMinorVersion,
    uint newPatchVersion
) external;
```

**Parameters**

| Name                | Type      | Description                                                                                                                                                                                                                                           |
| ------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon`            | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol) that is intended to be upgraded and restarted. |
| `newImplementation` | `address` | The address of the intended new Implementation of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol).            |
| `newMinorVersion`   | `uint256` | The intended new minor version of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol).                            |
| `newPatchVersion`   | `uint256` | The intended new patch version of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol).                            |

#### restartBeaconImplementation

Restarts the [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) implementation.

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE`.*

```solidity
function restartBeaconImplementation(address beacon) external;
```

**Parameters**

| Name     | Type      | Description                                                                                                                                                                                                                   |
| -------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon` | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol) that should restarted. |

#### acceptOwnership

Accepts the ownership over the target address.

*Can only be accessed by the `COMMUNITY_MULTISIG_ROLE` or `TEAM_MULTISIG_ROLE`.*

```solidity
function acceptOwnership(address adr) external;
```

**Parameters**

| Name  | Type      | Description                                                  |
| ----- | --------- | ------------------------------------------------------------ |
| `adr` | `address` | 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} ](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)is started.

```solidity
event BeaconTimelockStarted(
    address beacon,
    address newImplementation,
    uint newMinorVersion,
    uint newPatchVersion,
    uint timelockExceeded
);
```

**Parameters**

| Name                | Type      | Description                                                                                                                                                                                             |
| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon`            | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol). |
| `newImplementation` | `address` | The address of the new Implementation.                                                                                                                                                                  |
| `newMinorVersion`   | `uint256` | The new minor version.                                                                                                                                                                                  |
| `newPatchVersion`   | `uint256` | The new patch version.                                                                                                                                                                                  |
| `timelockExceeded`  | `uint256` | Timestamp of when the timelock is exceeded.                                                                                                                                                             |

#### BeaconUpgraded

Event emitted when a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) is upgraded.

```solidity
event BeaconUpgraded(
    address beacon,
    address newImplementation,
    uint newMinorVersion,
    uint newPatchVersion
);
```

**Parameters**

| Name                | Type      | Description                                                                                                                                                                                             |
| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon`            | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol). |
| `newImplementation` | `address` | The address of the new Implementation.                                                                                                                                                                  |
| `newMinorVersion`   | `uint256` | The new minor version.                                                                                                                                                                                  |
| `newPatchVersion`   | `uint256` | The new patch version.                                                                                                                                                                                  |

#### BeaconUpgradedCanceled

Event emitted when a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) upgraded is canceled.

```solidity
event BeaconUpgradedCanceled(address beacon);
```

**Parameters**

| Name     | Type      | Description                                                                                                                                                                                             |
| -------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon` | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol). |

#### FeeManagerUpdated

Event emitted when the fee manager is updated.

```solidity
event FeeManagerUpdated(address feeManager);
```

**Parameters**

| Name         | Type      | Description                     |
| ------------ | --------- | ------------------------------- |
| `feeManager` | `address` | The address of the fee manager. |

#### ModuleFactoryUpdated

Event emitted when the module factory is updated.

```solidity
event ModuleFactoryUpdated(address moduleFactory);
```

**Parameters**

| Name            | Type      | Description                        |
| --------------- | --------- | ---------------------------------- |
| `moduleFactory` | `address` | The address of the module factory. |

#### TimelockPeriodSet

Event emitted when a timelock period is set.

```solidity
event TimelockPeriodSet(uint newTimelockPeriod);
```

**Parameters**

| Name                | Type      | Description              |
| ------------------- | --------- | ------------------------ |
| `newTimelockPeriod` | `uint256` | The new timelock period. |

#### BeaconShutdownInitiated

Event emitted when a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) shutdown is initiated.

```solidity
event BeaconShutdownInitiated(address beacon);
```

**Parameters**

| Name     | Type      | Description                                                                                                                                                                                             |
| -------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon` | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol). |

#### BeaconForcefullyUpgradedAndImplementationRestarted

Event emitted when a [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) is forcefully upgraded and the implementation gets restarted immediately.

```solidity
event BeaconForcefullyUpgradedAndImplementationRestarted(
    address beacon,
    address newImplementation,
    uint newMinorVersion,
    uint newPatchVersion
);
```

**Parameters**

| Name                | Type      | Description                                                                                                                                                                                             |
| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon`            | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol). |
| `newImplementation` | `address` | The address of the new Implementation.                                                                                                                                                                  |
| `newMinorVersion`   | `uint256` | The new minor version.                                                                                                                                                                                  |
| `newPatchVersion`   | `uint256` | The new patch version.                                                                                                                                                                                  |

#### BeaconImplementationRestarted

Event emitted when a [{IInverterBeacon\_v1} ](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)implementation is restarted.

```solidity
event BeaconImplementationRestarted(address beacon);
```

**Parameters**

| Name     | Type      | Description                                                                                                                                                                                             |
| -------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `beacon` | `address` | The address of the [{IInverterBeacon\_v1}](https://app.gitbook.com/o/sSiSCgqZvpq2Pl32soAb/s/7XSxOkwmgeDYeGDuEW1s/~/changes/92/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol). |

#### OwnershipAccepted

Event emitted when the [{Governor\_v1} ](/contracts/technical-reference/external/governance/governor_v1.sol.md)contract accepts the ownership over another contract.

```solidity
event OwnershipAccepted(address adr);
```

**Parameters**

| Name  | Type      | Description                                                 |
| ----- | --------- | ----------------------------------------------------------- |
| `adr` | `address` | The address of the contract that distributed the ownership. |

### Errors

#### Governor\_\_OnlyLinkedModuleFactory

This function can only be accessed by the linked [{ModuleFactory\_v1}](/contracts/technical-reference/factories/modulefactory_v1.sol.md).

```solidity
error Governor__OnlyLinkedModuleFactory();
```

#### Governor\_\_LinkedBeaconsNotEmpty

This function can only be called when the linked [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md) array is empty.

```solidity
error Governor__LinkedBeaconsNotEmpty();
```

#### Governor\_\_InvalidAddress

The given address is invalid.

```solidity
error Governor__InvalidAddress(address adr);
```

#### Governor\_\_InvalidTimelockPeriod

The given amount is invalid.

```solidity
error Governor__InvalidTimelockPeriod(uint amt);
```

#### Governor\_\_BeaconNotAccessible

The given target address is not accessible.

```solidity
error Governor__BeaconNotAccessible(address target);
```

#### Governor\_\_OnlyCommunityOrTeamMultisig

This function can only be accessed by the CommunityMultisig or TeamMultisig.

```solidity
error Governor__OnlyCommunityOrTeamMultisig();
```

#### Governor\_\_TimelockPeriodNotExceeded

The timelock period needed for the [{IInverterBeacon\_v1} ](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)to be upgraded has not been exceeded yet.

```solidity
error Governor__TimelockPeriodNotExceeded();
```

#### Governor\_\_UpgradeProcessNotStarted

This upgrade process for this [{IInverterBeacon\_v1} ](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)has not yet been started.

```solidity
error Governor__UpgradeProcessNotStarted();
```

#### Governor\_\_CallToTargetContractFailed

The call to the target contract has failed.

```solidity
error Governor__CallToTargetContractFailed();
```

### Structs

#### Timelock

Struct used to store information about a timelock for a[ {IInverterBeacon\_v1} ](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)upgrade.

*The timelock is needed to upgrade a* [*{IInverterBeacon\_v1}* ](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md)*to new implementation.*

```solidity
struct Timelock {
    bool timelockActive;
    uint timelockUntil;
    address intendedImplementation;
    uint intendedMinorVersion;
    uint intendedPatchVersion;
}
```

**Properties**

| Name                     | Type      | Description                                                                                                                                         |
| ------------------------ | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `timelockActive`         | `bool`    | Is the timelock currently active.                                                                                                                   |
| `timelockUntil`          | `uint256` |                                                                                                                                                     |
| `intendedImplementation` | `address` | The new inteded Implementation address of the [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md). |
| `intendedMinorVersion`   | `uint256` | The new intended minor version of the [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md).         |
| `intendedPatchVersion`   | `uint256` | The new intended patch version of the [{IInverterBeacon\_v1}](/contracts/technical-reference/proxies/interfaces/iinverterbeacon_v1.sol.md).         |
