From 153adb1cbf3c5128c5c19741af2acd75a5814a80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8r=E2=88=82=C2=A1?= Date: Mon, 6 Nov 2023 13:35:07 +0100 Subject: [PATCH] Unified governance plugin setup --- .../contracts/src/GovernancePluginsSetup.sol | 262 ++++++++++++++++++ .../contracts/src/MainVotingPluginSetup.sol | 156 ----------- .../contracts/src/MemberAccessPluginSetup.sol | 138 --------- ...ta.json => governance-build-metadata.json} | 5 + .../src/governance-release-metadata.json | 5 + .../src/main-voting-release-metadata.json | 5 - .../src/member-access-build-metadata.json | 45 --- .../src/member-access-release-metadata.json | 5 - 8 files changed, 272 insertions(+), 349 deletions(-) create mode 100644 packages/contracts/src/GovernancePluginsSetup.sol delete mode 100644 packages/contracts/src/MainVotingPluginSetup.sol delete mode 100644 packages/contracts/src/MemberAccessPluginSetup.sol rename packages/contracts/src/{main-voting-build-metadata.json => governance-build-metadata.json} (92%) create mode 100644 packages/contracts/src/governance-release-metadata.json delete mode 100644 packages/contracts/src/main-voting-release-metadata.json delete mode 100644 packages/contracts/src/member-access-build-metadata.json delete mode 100644 packages/contracts/src/member-access-release-metadata.json diff --git a/packages/contracts/src/GovernancePluginsSetup.sol b/packages/contracts/src/GovernancePluginsSetup.sol new file mode 100644 index 0000000..0ccd326 --- /dev/null +++ b/packages/contracts/src/GovernancePluginsSetup.sol @@ -0,0 +1,262 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.8; + +import {PermissionLib} from "@aragon/osx/core/permission/PermissionLib.sol"; +import {DAO} from "@aragon/osx/core/dao/DAO.sol"; +import {PluginSetup, IPluginSetup} from "@aragon/osx/framework/plugin/setup/PluginSetup.sol"; +import {MemberAccessPlugin} from "./MemberAccessPlugin.sol"; +import {MemberAccessExecuteCondition} from "./MemberAccessExecuteCondition.sol"; +import {MainVotingPlugin} from "./MainVotingPlugin.sol"; +import {MajorityVotingBase} from "@aragon/osx/plugins/governance/majority-voting/MajorityVotingBase.sol"; + +/// @title GovernancePluginsSetup +/// @dev Release 1, Build 1 +contract GovernancePluginsSetup is PluginSetup { + address private immutable memberAccessPluginImplementation; + address private immutable mainVotingPluginImplementation; + + constructor() { + memberAccessPluginImplementation = address(new MemberAccessPlugin()); + mainVotingPluginImplementation = address(new MainVotingPlugin()); + } + + /// @inheritdoc IPluginSetup + /// @notice Prepares the installation of the two governance plugins in one go + function prepareInstallation( + address _dao, + bytes memory _data + ) external returns (address mainVotingPlugin, PreparedSetupData memory preparedSetupData) { + // Decode the custom installation parameters + ( + MajorityVotingBase.VotingSettings memory _votingSettings, + address[] memory _initialEditors, + uint64 _memberAccessProposalDuration, + address _pluginUpgrader + ) = abi.decode(_data, (MajorityVotingBase.VotingSettings, address[], uint64, address)); + + // Deploy the main voting plugin + mainVotingPlugin = createERC1967Proxy( + mainVotingPluginImplementation, + abi.encodeWithSelector( + MainVotingPlugin.initialize.selector, + _dao, + _votingSettings, + _initialEditors + ) + ); + + // Deploy the member access plugin + MemberAccessPlugin.MultisigSettings memory _multisigSettings; + _multisigSettings.proposalDuration = _memberAccessProposalDuration; + _multisigSettings.mainVotingPlugin = MainVotingPlugin(mainVotingPlugin); + + address _memberAccessPlugin = createERC1967Proxy( + memberAccessPluginImplementation, + abi.encodeWithSelector(MemberAccessPlugin.initialize.selector, _dao, _multisigSettings) + ); + + // Condition contract (member access plugin execute) + address conditionContract = address(new MemberAccessExecuteCondition(mainVotingPlugin)); + + // List the requested permissions + PermissionLib.MultiTargetPermission[] + memory permissions = new PermissionLib.MultiTargetPermission[]( + _pluginUpgrader == address(0x0) ? 7 : 9 + ); + + // The main voting plugin can execute on the DAO + permissions[0] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: _dao, + who: mainVotingPluginImplementation, + condition: PermissionLib.NO_CONDITION, + permissionId: DAO(payable(_dao)).EXECUTE_PERMISSION_ID() + }); + // The DAO can update the main voting plugin settings + permissions[1] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: mainVotingPluginImplementation, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MainVotingPlugin(mainVotingPluginImplementation) + .UPDATE_VOTING_SETTINGS_PERMISSION_ID() + }); + // The DAO can manage the list of addresses + permissions[2] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: mainVotingPluginImplementation, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MainVotingPlugin(mainVotingPluginImplementation) + .UPDATE_ADDRESSES_PERMISSION_ID() + }); + // The DAO can upgrade the main voting plugin + permissions[3] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: mainVotingPluginImplementation, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MainVotingPlugin(mainVotingPluginImplementation) + .UPGRADE_PLUGIN_PERMISSION_ID() + }); + + // The member access plugin needs to execute on the DAO + permissions[4] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: _dao, + who: _memberAccessPlugin, + condition: conditionContract, + permissionId: DAO(payable(_dao)).EXECUTE_PERMISSION_ID() + }); + + // The DAO needs to be able to update the member access plugin settings + permissions[5] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: _memberAccessPlugin, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MemberAccessPlugin(memberAccessPluginImplementation) + .UPDATE_MULTISIG_SETTINGS_PERMISSION_ID() + }); + + // The DAO needs to be able to upgrade the member access plugin + permissions[6] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: _memberAccessPlugin, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MemberAccessPlugin(memberAccessPluginImplementation) + .UPGRADE_PLUGIN_PERMISSION_ID() + }); + + // pluginUpgrader needs to be able to upgrade the plugins + if (_pluginUpgrader != address(0x0)) { + permissions[7] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: mainVotingPluginImplementation, + who: _pluginUpgrader, + condition: PermissionLib.NO_CONDITION, + permissionId: MainVotingPlugin(mainVotingPluginImplementation) + .UPGRADE_PLUGIN_PERMISSION_ID() + }); + permissions[8] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Grant, + where: _memberAccessPlugin, + who: _pluginUpgrader, + condition: PermissionLib.NO_CONDITION, + permissionId: MemberAccessPlugin(memberAccessPluginImplementation) + .UPGRADE_PLUGIN_PERMISSION_ID() + }); + } + + preparedSetupData.permissions = permissions; + preparedSetupData.helpers = new address[](1); + preparedSetupData.helpers[0] = _memberAccessPlugin; + } + + /// @inheritdoc IPluginSetup + function prepareUninstallation( + address _dao, + SetupPayload calldata _payload + ) external view returns (PermissionLib.MultiTargetPermission[] memory permissionChanges) { + // Decode incoming params + address _pluginUpgrader = abi.decode(_payload.data, (address)); + + permissionChanges = new PermissionLib.MultiTargetPermission[]( + _pluginUpgrader == address(0x0) ? 7 : 9 + ); + + // Main voting plugin permissions + + // The plugin can no longer execute on the DAO + permissionChanges[0] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _dao, + who: _payload.plugin, + condition: PermissionLib.NO_CONDITION, + permissionId: DAO(payable(_dao)).EXECUTE_PERMISSION_ID() + }); + // The DAO can no longer update the plugin settings + permissionChanges[1] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _payload.plugin, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MainVotingPlugin(mainVotingPluginImplementation) + .UPDATE_VOTING_SETTINGS_PERMISSION_ID() + }); + // The DAO can no longer manage the list of addresses + permissionChanges[2] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _payload.plugin, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MainVotingPlugin(mainVotingPluginImplementation) + .UPDATE_ADDRESSES_PERMISSION_ID() + }); + // The DAO can no longer upgrade the plugin + permissionChanges[3] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _payload.plugin, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MainVotingPlugin(mainVotingPluginImplementation) + .UPGRADE_PLUGIN_PERMISSION_ID() + }); + + // Member access plugin permissions + + // The plugin can no longer execute on the DAO + permissionChanges[4] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _dao, + who: _payload.plugin, + condition: PermissionLib.NO_CONDITION, + permissionId: DAO(payable(_dao)).EXECUTE_PERMISSION_ID() + }); + // The DAO can no longer update the plugin settings + permissionChanges[5] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _payload.plugin, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MemberAccessPlugin(memberAccessPluginImplementation) + .UPDATE_MULTISIG_SETTINGS_PERMISSION_ID() + }); + // The DAO can no longer upgrade the plugin + permissionChanges[6] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _payload.plugin, + who: _dao, + condition: PermissionLib.NO_CONDITION, + permissionId: MemberAccessPlugin(memberAccessPluginImplementation) + .UPGRADE_PLUGIN_PERMISSION_ID() + }); + + if (_pluginUpgrader != address(0x0)) { + // pluginUpgrader can no longer upgrade the plugins + permissionChanges[7] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _payload.plugin, + who: _pluginUpgrader, + condition: PermissionLib.NO_CONDITION, + permissionId: MainVotingPlugin(mainVotingPluginImplementation) + .UPGRADE_PLUGIN_PERMISSION_ID() + }); + permissionChanges[8] = PermissionLib.MultiTargetPermission({ + operation: PermissionLib.Operation.Revoke, + where: _payload.plugin, + who: _pluginUpgrader, + condition: PermissionLib.NO_CONDITION, + permissionId: MemberAccessPlugin(memberAccessPluginImplementation) + .UPGRADE_PLUGIN_PERMISSION_ID() + }); + } + } + + /// @inheritdoc IPluginSetup + function implementation() external view returns (address) { + return memberAccessPluginImplementation; + } +} diff --git a/packages/contracts/src/MainVotingPluginSetup.sol b/packages/contracts/src/MainVotingPluginSetup.sol deleted file mode 100644 index bd4023d..0000000 --- a/packages/contracts/src/MainVotingPluginSetup.sol +++ /dev/null @@ -1,156 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -pragma solidity ^0.8.8; - -import {PermissionLib} from "@aragon/osx/core/permission/PermissionLib.sol"; -import {DAO} from "@aragon/osx/core/dao/DAO.sol"; -import {PluginSetup, IPluginSetup} from "@aragon/osx/framework/plugin/setup/PluginSetup.sol"; -import {MainVotingPlugin} from "./MainVotingPlugin.sol"; -import {MajorityVotingBase} from "@aragon/osx/plugins/governance/majority-voting/MajorityVotingBase.sol"; - -/// @title MainVotingPluginSetup -/// @dev Release 1, Build 1 -contract MainVotingPluginSetup is PluginSetup { - address private immutable pluginImplementation; - - constructor() { - pluginImplementation = address(new MainVotingPlugin()); - } - - /// @inheritdoc IPluginSetup - function prepareInstallation( - address _dao, - bytes memory _data - ) external returns (address plugin, PreparedSetupData memory preparedSetupData) { - // Decode incoming params - ( - MajorityVotingBase.VotingSettings memory _votingSettings, - address[] memory _initialEditors, - address _pluginUpgrader - ) = abi.decode(_data, (MajorityVotingBase.VotingSettings, address[], address)); - - // Deploy new plugin instance - plugin = createERC1967Proxy( - pluginImplementation, - abi.encodeWithSelector( - MainVotingPlugin.initialize.selector, - _dao, - _votingSettings, - _initialEditors - ) - ); - - PermissionLib.MultiTargetPermission[] - memory permissions = new PermissionLib.MultiTargetPermission[]( - _pluginUpgrader == address(0x0) ? 4 : 5 - ); - - // The plugin can execute on the DAO - permissions[0] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: _dao, - who: plugin, - condition: PermissionLib.NO_CONDITION, - permissionId: DAO(payable(_dao)).EXECUTE_PERMISSION_ID() - }); - // The DAO can update the plugin settings - permissions[1] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MainVotingPlugin(pluginImplementation) - .UPDATE_VOTING_SETTINGS_PERMISSION_ID() - }); - // The DAO can manage the list of addresses - permissions[2] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MainVotingPlugin(pluginImplementation).UPDATE_ADDRESSES_PERMISSION_ID() - }); - // The DAO can upgrade the plugin - permissions[3] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MainVotingPlugin(pluginImplementation).UPGRADE_PLUGIN_PERMISSION_ID() - }); - // _pluginUpgrader can upgrade the plugin - if (_pluginUpgrader != address(0x0)) { - permissions[4] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: plugin, - who: _pluginUpgrader, - condition: PermissionLib.NO_CONDITION, - permissionId: MainVotingPlugin(pluginImplementation).UPGRADE_PLUGIN_PERMISSION_ID() - }); - } - - preparedSetupData.permissions = permissions; - } - - /// @inheritdoc IPluginSetup - function prepareUninstallation( - address _dao, - SetupPayload calldata _payload - ) external view returns (PermissionLib.MultiTargetPermission[] memory permissionChanges) { - // Decode incoming params - address _pluginUpgrader = abi.decode(_payload.data, (address)); - - permissionChanges = new PermissionLib.MultiTargetPermission[]( - _pluginUpgrader == address(0x0) ? 4 : 5 - ); - - // The plugin can no longer execute on the DAO - permissionChanges[0] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _dao, - who: _payload.plugin, - condition: PermissionLib.NO_CONDITION, - permissionId: DAO(payable(_dao)).EXECUTE_PERMISSION_ID() - }); - // The DAO can no longer update the plugin settings - permissionChanges[1] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _payload.plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MainVotingPlugin(pluginImplementation) - .UPDATE_VOTING_SETTINGS_PERMISSION_ID() - }); - // The DAO can no longer manage the list of addresses - permissionChanges[2] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _payload.plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MainVotingPlugin(pluginImplementation).UPDATE_ADDRESSES_PERMISSION_ID() - }); - // The DAO can no longer upgrade the plugin - permissionChanges[3] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _payload.plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MainVotingPlugin(pluginImplementation).UPGRADE_PLUGIN_PERMISSION_ID() - }); - // pluginUpgrader can no longer upgrade the plugin - if (_pluginUpgrader != address(0x0)) { - permissionChanges[4] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _payload.plugin, - who: _pluginUpgrader, - condition: PermissionLib.NO_CONDITION, - permissionId: MainVotingPlugin(pluginImplementation).UPGRADE_PLUGIN_PERMISSION_ID() - }); - } - } - - /// @inheritdoc IPluginSetup - function implementation() external view returns (address) { - return pluginImplementation; - } -} diff --git a/packages/contracts/src/MemberAccessPluginSetup.sol b/packages/contracts/src/MemberAccessPluginSetup.sol deleted file mode 100644 index 19b5ab9..0000000 --- a/packages/contracts/src/MemberAccessPluginSetup.sol +++ /dev/null @@ -1,138 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -pragma solidity ^0.8.8; - -import {PermissionLib} from "@aragon/osx/core/permission/PermissionLib.sol"; -import {DAO} from "@aragon/osx/core/dao/DAO.sol"; -import {PluginSetup, IPluginSetup} from "@aragon/osx/framework/plugin/setup/PluginSetup.sol"; -import {MemberAccessPlugin} from "./MemberAccessPlugin.sol"; -import {MemberAccessExecuteCondition} from "./MemberAccessExecuteCondition.sol"; - -/// @title MemberAccessPluginSetup -/// @dev Release 1, Build 1 -contract MemberAccessPluginSetup is PluginSetup { - address private immutable pluginImplementation; - - constructor() { - pluginImplementation = address(new MemberAccessPlugin()); - } - - /// @inheritdoc IPluginSetup - function prepareInstallation( - address _dao, - bytes memory _data - ) external returns (address plugin, PreparedSetupData memory preparedSetupData) { - ( - MemberAccessPlugin.MultisigSettings memory _multisigSettings, - address _pluginUpgrader - ) = abi.decode(_data, (MemberAccessPlugin.MultisigSettings, address)); - - plugin = createERC1967Proxy( - pluginImplementation, - abi.encodeWithSelector(MemberAccessPlugin.initialize.selector, _dao, _multisigSettings) - ); - - // Condition contract - address conditionContract = address( - new MemberAccessExecuteCondition(address(_multisigSettings.mainVotingPlugin)) - ); - - PermissionLib.MultiTargetPermission[] - memory permissions = new PermissionLib.MultiTargetPermission[]( - _pluginUpgrader == address(0x0) ? 3 : 4 - ); - - // The plugin needs to execute on the DAO - permissions[0] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: _dao, - who: plugin, - condition: conditionContract, - permissionId: DAO(payable(_dao)).EXECUTE_PERMISSION_ID() - }); - - // The DAO needs to be able to update the plugin settings - permissions[1] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MemberAccessPlugin(pluginImplementation) - .UPDATE_MULTISIG_SETTINGS_PERMISSION_ID() - }); - - // The DAO needs to be able to upgrade the plugin - permissions[2] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MemberAccessPlugin(pluginImplementation).UPGRADE_PLUGIN_PERMISSION_ID() - }); - - // pluginUpgrader needs to be able to upgrade the plugin - if (_pluginUpgrader != address(0x0)) { - permissions[3] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Grant, - where: plugin, - who: _pluginUpgrader, - condition: PermissionLib.NO_CONDITION, - permissionId: MemberAccessPlugin(pluginImplementation) - .UPGRADE_PLUGIN_PERMISSION_ID() - }); - } - - preparedSetupData.permissions = permissions; - } - - /// @inheritdoc IPluginSetup - function prepareUninstallation( - address _dao, - SetupPayload calldata _payload - ) external view returns (PermissionLib.MultiTargetPermission[] memory permissions) { - // Decode incoming params - address _pluginUpgrader = abi.decode(_payload.data, (address)); - - permissions = new PermissionLib.MultiTargetPermission[]( - _pluginUpgrader == address(0x0) ? 3 : 4 - ); - - permissions[0] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _dao, - who: _payload.plugin, - condition: PermissionLib.NO_CONDITION, - permissionId: DAO(payable(_dao)).EXECUTE_PERMISSION_ID() - }); - permissions[1] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _payload.plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MemberAccessPlugin(pluginImplementation) - .UPDATE_MULTISIG_SETTINGS_PERMISSION_ID() - }); - permissions[2] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _payload.plugin, - who: _dao, - condition: PermissionLib.NO_CONDITION, - permissionId: MemberAccessPlugin(pluginImplementation).UPGRADE_PLUGIN_PERMISSION_ID() - }); - if (_pluginUpgrader != address(0x0)) { - permissions[3] = PermissionLib.MultiTargetPermission({ - operation: PermissionLib.Operation.Revoke, - where: _payload.plugin, - who: _pluginUpgrader, - condition: PermissionLib.NO_CONDITION, - permissionId: MemberAccessPlugin(pluginImplementation) - .UPGRADE_PLUGIN_PERMISSION_ID() - }); - } - } - - /// @inheritdoc IPluginSetup - function implementation() external view returns (address) { - return pluginImplementation; - } -} diff --git a/packages/contracts/src/main-voting-build-metadata.json b/packages/contracts/src/governance-build-metadata.json similarity index 92% rename from packages/contracts/src/main-voting-build-metadata.json rename to packages/contracts/src/governance-build-metadata.json index eaee91b..885f250 100644 --- a/packages/contracts/src/main-voting-build-metadata.json +++ b/packages/contracts/src/governance-build-metadata.json @@ -42,6 +42,11 @@ "name": "initialEditors", "type": "address[]" }, + { + "internalType": "uint64", + "name": "memberAccessProposalDuration", + "type": "uint64" + }, { "internalType": "address", "name": "pluginUpgrader", diff --git a/packages/contracts/src/governance-release-metadata.json b/packages/contracts/src/governance-release-metadata.json new file mode 100644 index 0000000..9de523c --- /dev/null +++ b/packages/contracts/src/governance-release-metadata.json @@ -0,0 +1,5 @@ +{ + "name": "Main Voting Plugin and Member Access Plugin", + "description": "", + "images": {} +} diff --git a/packages/contracts/src/main-voting-release-metadata.json b/packages/contracts/src/main-voting-release-metadata.json deleted file mode 100644 index c4a4604..0000000 --- a/packages/contracts/src/main-voting-release-metadata.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Main Voting Plugin", - "description": "", - "images": {} -} diff --git a/packages/contracts/src/member-access-build-metadata.json b/packages/contracts/src/member-access-build-metadata.json deleted file mode 100644 index ba0169c..0000000 --- a/packages/contracts/src/member-access-build-metadata.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "ui": {}, - "change": "Initial build.", - "pluginSetup": { - "prepareInstallation": { - "description": "The information required for the installation of build 1.", - "inputs": [ - { - "components": [ - { - "internalType": "uint64", - "name": "proposalDuration", - "type": "uint64" - }, - { - "internalType": "contract MainVotingPlugin", - "name": "mainVotingPlugin", - "type": "address" - } - ], - "internalType": "struct MemberAccessPlugin.MultisigSettings", - "name": "_multisigSettings", - "type": "tuple", - "description": "The settings of the multisig approval logic" - }, - { - "internalType": "address", - "name": "pluginUpgrader", - "type": "address" - } - ] - }, - "prepareUpdate": {}, - "prepareUninstallation": { - "description": "The information required for the uninstallation of build 1.", - "inputs": [ - { - "internalType": "address", - "name": "pluginUpgrader", - "type": "address" - } - ] - } - } -} diff --git a/packages/contracts/src/member-access-release-metadata.json b/packages/contracts/src/member-access-release-metadata.json deleted file mode 100644 index 77d1763..0000000 --- a/packages/contracts/src/member-access-release-metadata.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Member Access Voting Plugin", - "description": "", - "images": {} -}