diff --git a/.changeset/cool-readers-try.md b/.changeset/cool-readers-try.md new file mode 100644 index 00000000000..5650b7097a3 --- /dev/null +++ b/.changeset/cool-readers-try.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#internal add modify DON function to capability registry diff --git a/contracts/.changeset/quiet-guests-march.md b/contracts/.changeset/quiet-guests-march.md new file mode 100644 index 00000000000..40285829c1a --- /dev/null +++ b/contracts/.changeset/quiet-guests-march.md @@ -0,0 +1,5 @@ +--- +"@chainlink/contracts": patch +--- + +Add update DON function to capability registry diff --git a/contracts/src/v0.8/keystone/CapabilityRegistry.sol b/contracts/src/v0.8/keystone/CapabilityRegistry.sol index cb7b5408045..7c115530ca5 100644 --- a/contracts/src/v0.8/keystone/CapabilityRegistry.sol +++ b/contracts/src/v0.8/keystone/CapabilityRegistry.sol @@ -177,14 +177,11 @@ contract CapabilityRegistry is OwnerIsCreator, TypeAndVersionInterface { /// @param signer The node's signer address event NodeUpdated(bytes32 p2pId, uint256 nodeOperatorId, bytes32 signer); - /// @notice This event is emitted when a new DON is created - /// @param donId The ID of the newly created DON - /// @param isPublic True if the newly created DON is public - event DONAdded(uint256 donId, bool isPublic); - - /// @notice This event is emitted when a DON is removed - /// @param donId The ID of the removed DON - event DONRemoved(uint32 donId); + /// @notice This event is emitted when a DON's config is set + /// @param donId The ID of the DON the config was set for + /// @param configCount The number of times the DON has been + /// configured + event ConfigSet(uint32 donId, uint32 configCount); /// @notice This error is emitted when a DON does not exist /// @param donId The ID of the nonexistent DON @@ -550,44 +547,29 @@ contract CapabilityRegistry is OwnerIsCreator, TypeAndVersionInterface { bool isPublic ) external onlyOwner { uint32 id = s_donId; - s_dons[id].id = id; - s_dons[id].isPublic = isPublic; - - uint32 configCount = 1; - - DONCapabilityConfig storage donCapabilityConfig = s_dons[id].config[configCount]; - - for (uint256 i; i < nodes.length; ++i) { - bytes32 nodeP2PId = nodes[i]; - if (donCapabilityConfig.nodes.contains(nodeP2PId)) revert DuplicateDONNode(id, nodeP2PId); - - donCapabilityConfig.nodes.add(nodeP2PId); - } - - for (uint256 i; i < capabilityConfigurations.length; ++i) { - CapabilityConfiguration calldata configuration = capabilityConfigurations[i]; - bytes32 capabilityId = configuration.capabilityId; - - if (!s_hashedCapabilityIds.contains(capabilityId)) revert CapabilityDoesNotExist(capabilityId); - if (s_deprecatedHashedCapabilityIds.contains(capabilityId)) revert CapabilityIsDeprecated(capabilityId); - - if (donCapabilityConfig.capabilityConfigs[capabilityId].length > 0) - revert DuplicateDONCapability(id, capabilityId); - - for (uint256 j; j < nodes.length; ++j) { - bytes32 nodeP2PId = nodes[j]; - if (!s_nodes[nodeP2PId].supportedCapabilityIds[s_nodes[nodeP2PId].configCount].contains(capabilityId)) - revert NodeDoesNotSupportCapability(nodeP2PId, capabilityId); - } - - donCapabilityConfig.capabilityIds.push(capabilityId); - donCapabilityConfig.capabilityConfigs[capabilityId] = configuration.config; - } + _setDONConfig(id, 1, nodes, capabilityConfigurations, isPublic); + ++s_donId; + } - s_dons[id].configCount = configCount; + /// @notice Updates a DON's configuration. This allows + /// the admin to reconfigure the list of capabilities supported + /// by the DON, the list of nodes that make up the DON as well + /// as whether or not the DON can accept external workflows + /// @param nodes The nodes making up the DON + /// @param capabilityConfigurations The list of configurations for the + /// capabilities supported by the DON + /// @param isPublic True if the DON is can accept external workflows + function updateDON( + uint32 donId, + bytes32[] calldata nodes, + CapabilityConfiguration[] calldata capabilityConfigurations, + bool isPublic + ) external onlyOwner { + uint32 configCount = s_dons[donId].configCount; + if (configCount == 0) revert DONDoesNotExist(donId); + _setDONConfig(donId, ++configCount, nodes, capabilityConfigurations, isPublic); ++s_donId; - emit DONAdded(id, isPublic); } /// @notice Removes DONs from the Capability Registry @@ -600,19 +582,20 @@ contract CapabilityRegistry is OwnerIsCreator, TypeAndVersionInterface { // DON config count starts at index 1 if (don.configCount == 0) revert DONDoesNotExist(donId); delete s_dons[donId]; - emit DONRemoved(donId); + emit ConfigSet(donId, 0); } } /// @notice Gets DON's data /// @param donId The DON ID /// @return uint32 The DON ID + /// @return uint32 The DON's config count /// @return bool True if the DON is public /// @return bytes32[] The list of node P2P IDs that are in the DON /// @return CapabilityConfiguration[] The list of capability configurations supported by the DON function getDON( uint32 donId - ) external view returns (uint32, bool, bytes32[] memory, CapabilityConfiguration[] memory) { + ) external view returns (uint32, uint32, bool, bytes32[] memory, CapabilityConfiguration[] memory) { uint32 configCount = s_dons[donId].configCount; DONCapabilityConfig storage donCapabilityConfig = s_dons[donId].config[configCount]; @@ -627,7 +610,13 @@ contract CapabilityRegistry is OwnerIsCreator, TypeAndVersionInterface { }); } - return (s_dons[donId].id, s_dons[donId].isPublic, donCapabilityConfig.nodes.values(), capabilityConfigurations); + return ( + s_dons[donId].id, + configCount, + s_dons[donId].isPublic, + donCapabilityConfig.nodes.values(), + capabilityConfigurations + ); } /// @notice Returns the DON specific configuration for a capability @@ -638,4 +627,52 @@ contract CapabilityRegistry is OwnerIsCreator, TypeAndVersionInterface { uint32 configCount = s_dons[donId].configCount; return s_dons[donId].config[configCount].capabilityConfigs[capabilityId]; } + + /// @notice Sets the configuration for a DON + /// @param donId The ID of the DON to set the configuration for + /// @param configCount The number of times the DON has been configured + /// @param nodes The nodes making up the DON + /// @param capabilityConfigurations The list of configurations for the + /// capabilities supported by the DON + /// @param isPublic True if the DON is can accept external workflows + function _setDONConfig( + uint32 donId, + uint32 configCount, + bytes32[] calldata nodes, + CapabilityConfiguration[] calldata capabilityConfigurations, + bool isPublic + ) internal { + s_dons[donId].isPublic = isPublic; + + DONCapabilityConfig storage donCapabilityConfig = s_dons[donId].config[configCount]; + for (uint256 i; i < nodes.length; ++i) { + bytes32 nodeP2PId = nodes[i]; + if (donCapabilityConfig.nodes.contains(nodeP2PId)) revert DuplicateDONNode(donId, nodeP2PId); + + donCapabilityConfig.nodes.add(nodeP2PId); + } + + for (uint256 i; i < capabilityConfigurations.length; ++i) { + CapabilityConfiguration calldata configuration = capabilityConfigurations[i]; + bytes32 capabilityId = configuration.capabilityId; + + if (!s_hashedCapabilityIds.contains(capabilityId)) revert CapabilityDoesNotExist(capabilityId); + if (s_deprecatedHashedCapabilityIds.contains(capabilityId)) revert CapabilityIsDeprecated(capabilityId); + + if (donCapabilityConfig.capabilityConfigs[capabilityId].length > 0) + revert DuplicateDONCapability(donId, capabilityId); + + for (uint256 j; j < nodes.length; ++j) { + bytes32 nodeP2PId = nodes[j]; + if (!s_nodes[nodeP2PId].supportedCapabilityIds[s_nodes[nodeP2PId].configCount].contains(capabilityId)) + revert NodeDoesNotSupportCapability(nodeP2PId, capabilityId); + } + + donCapabilityConfig.capabilityIds.push(capabilityId); + donCapabilityConfig.capabilityConfigs[capabilityId] = configuration.config; + } + + s_dons[donId].configCount = configCount; + emit ConfigSet(donId, configCount); + } } diff --git a/contracts/src/v0.8/keystone/test/CapabilityRegistry_AddDONTest.t.sol b/contracts/src/v0.8/keystone/test/CapabilityRegistry_AddDONTest.t.sol index 9b215edccdc..c7735b4e9ab 100644 --- a/contracts/src/v0.8/keystone/test/CapabilityRegistry_AddDONTest.t.sol +++ b/contracts/src/v0.8/keystone/test/CapabilityRegistry_AddDONTest.t.sol @@ -6,8 +6,9 @@ import {BaseTest} from "./BaseTest.t.sol"; import {CapabilityRegistry} from "../CapabilityRegistry.sol"; contract CapabilityRegistry_AddDONTest is BaseTest { - event DONAdded(uint256 donId, bool isPublic); + event ConfigSet(uint32 donId, uint32 configCount); + uint32 private constant DON_ID = 1; uint32 private constant TEST_NODE_OPERATOR_ONE_ID = 0; uint256 private constant TEST_NODE_OPERATOR_TWO_ID = 1; bytes32 private constant INVALID_P2P_ID = bytes32("fake-p2p"); @@ -158,22 +159,24 @@ contract CapabilityRegistry_AddDONTest is BaseTest { }); vm.expectEmit(true, true, true, true, address(s_capabilityRegistry)); - emit DONAdded(1, true); + emit ConfigSet(DON_ID, 1); s_capabilityRegistry.addDON(nodes, capabilityConfigs, true); ( uint32 id, + uint32 configCount, bool isPublic, bytes32[] memory donNodes, CapabilityRegistry.CapabilityConfiguration[] memory donCapabilityConfigs - ) = s_capabilityRegistry.getDON(1); - assertEq(id, 1); + ) = s_capabilityRegistry.getDON(DON_ID); + assertEq(id, DON_ID); + assertEq(configCount, 1); assertEq(isPublic, true); - assertEq(donCapabilityConfigs.length, 1); + assertEq(donCapabilityConfigs.length, capabilityConfigs.length); assertEq(donCapabilityConfigs[0].capabilityId, s_basicHashedCapabilityId); - assertEq(s_capabilityRegistry.getDONCapabilityConfig(1, s_basicHashedCapabilityId), CONFIG); + assertEq(s_capabilityRegistry.getDONCapabilityConfig(DON_ID, s_basicHashedCapabilityId), CONFIG); - assertEq(donNodes.length, 1); + assertEq(donNodes.length, nodes.length); assertEq(donNodes[0], P2P_ID); } } diff --git a/contracts/src/v0.8/keystone/test/CapabilityRegistry_RemoveDONsTest.t.sol b/contracts/src/v0.8/keystone/test/CapabilityRegistry_RemoveDONsTest.t.sol index 36d29b0a107..fa11493fff5 100644 --- a/contracts/src/v0.8/keystone/test/CapabilityRegistry_RemoveDONsTest.t.sol +++ b/contracts/src/v0.8/keystone/test/CapabilityRegistry_RemoveDONsTest.t.sol @@ -6,7 +6,7 @@ import {BaseTest} from "./BaseTest.t.sol"; import {CapabilityRegistry} from "../CapabilityRegistry.sol"; contract CapabilityRegistry_RemoveDONsTest is BaseTest { - event DONRemoved(uint32 donId); + event ConfigSet(uint32 donId, uint32 configCount); uint32 private constant DON_ID = 1; uint32 private constant TEST_NODE_OPERATOR_ONE_ID = 0; @@ -81,16 +81,18 @@ contract CapabilityRegistry_RemoveDONsTest is BaseTest { uint32[] memory donIDs = new uint32[](1); donIDs[0] = DON_ID; vm.expectEmit(true, true, true, true, address(s_capabilityRegistry)); - emit DONRemoved(DON_ID); + emit ConfigSet(DON_ID, 0); s_capabilityRegistry.removeDONs(donIDs); ( uint32 id, + uint32 configCount, bool isPublic, bytes32[] memory donNodes, CapabilityRegistry.CapabilityConfiguration[] memory donCapabilityConfigs ) = s_capabilityRegistry.getDON(DON_ID); assertEq(id, 0); + assertEq(configCount, 0); assertEq(isPublic, false); assertEq(donCapabilityConfigs.length, 0); assertEq(s_capabilityRegistry.getDONCapabilityConfig(DON_ID, s_basicHashedCapabilityId), bytes("")); diff --git a/contracts/src/v0.8/keystone/test/CapabilityRegistry_UpdateDONTest.t.sol b/contracts/src/v0.8/keystone/test/CapabilityRegistry_UpdateDONTest.t.sol new file mode 100644 index 00000000000..cdcf01ac060 --- /dev/null +++ b/contracts/src/v0.8/keystone/test/CapabilityRegistry_UpdateDONTest.t.sol @@ -0,0 +1,215 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import {BaseTest} from "./BaseTest.t.sol"; + +import {CapabilityRegistry} from "../CapabilityRegistry.sol"; + +contract CapabilityRegistry_UpdateDONTest is BaseTest { + event ConfigSet(uint32 donId, uint32 configCount); + + uint32 private constant DON_ID = 1; + uint32 private constant TEST_NODE_OPERATOR_ONE_ID = 0; + uint256 private constant TEST_NODE_OPERATOR_TWO_ID = 1; + bytes32 private constant INVALID_P2P_ID = bytes32("fake-p2p"); + bytes private constant CONFIG = bytes("onchain-config"); + + function setUp() public override { + BaseTest.setUp(); + + s_capabilityRegistry.addNodeOperators(_getNodeOperators()); + s_capabilityRegistry.addCapability(s_basicCapability); + s_capabilityRegistry.addCapability(s_capabilityWithConfigurationContract); + + CapabilityRegistry.NodeParams[] memory nodes = new CapabilityRegistry.NodeParams[](2); + bytes32[] memory capabilityIds = new bytes32[](2); + capabilityIds[0] = s_basicHashedCapabilityId; + capabilityIds[1] = s_capabilityWithConfigurationContractId; + + nodes[0] = CapabilityRegistry.NodeParams({ + nodeOperatorId: TEST_NODE_OPERATOR_ONE_ID, + p2pId: P2P_ID, + signer: NODE_OPERATOR_ONE_SIGNER_ADDRESS, + hashedCapabilityIds: capabilityIds + }); + + bytes32[] memory nodeTwoCapabilityIds = new bytes32[](1); + nodeTwoCapabilityIds[0] = s_basicHashedCapabilityId; + + nodes[1] = CapabilityRegistry.NodeParams({ + nodeOperatorId: TEST_NODE_OPERATOR_ONE_ID, + p2pId: P2P_ID_TWO, + signer: NODE_OPERATOR_TWO_SIGNER_ADDRESS, + hashedCapabilityIds: nodeTwoCapabilityIds + }); + + changePrank(NODE_OPERATOR_ONE_ADMIN); + s_capabilityRegistry.addNodes(nodes); + + changePrank(ADMIN); + + bytes32[] memory donNodes = new bytes32[](1); + donNodes[0] = P2P_ID; + + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](1); + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_basicHashedCapabilityId, + config: CONFIG + }); + s_capabilityRegistry.addDON(donNodes, capabilityConfigs, true); + } + + function test_RevertWhen_CalledByNonAdmin() public { + changePrank(STRANGER); + vm.expectRevert("Only callable by owner"); + bytes32[] memory nodes = new bytes32[](1); + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](1); + + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_basicHashedCapabilityId, + config: CONFIG + }); + s_capabilityRegistry.updateDON(DON_ID, nodes, capabilityConfigs, true); + } + + function test_RevertWhen_NodeDoesNotSupportCapability() public { + bytes32[] memory nodes = new bytes32[](1); + nodes[0] = P2P_ID_TWO; + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](1); + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_capabilityWithConfigurationContractId, + config: CONFIG + }); + vm.expectRevert( + abi.encodeWithSelector( + CapabilityRegistry.NodeDoesNotSupportCapability.selector, + P2P_ID_TWO, + s_capabilityWithConfigurationContractId + ) + ); + s_capabilityRegistry.updateDON(DON_ID, nodes, capabilityConfigs, true); + } + + function test_RevertWhen_DONDoesNotExist() public { + uint32 nonExistentDONId = 10; + bytes32[] memory nodes = new bytes32[](1); + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](1); + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_basicHashedCapabilityId, + config: CONFIG + }); + vm.expectRevert(abi.encodeWithSelector(CapabilityRegistry.DONDoesNotExist.selector, nonExistentDONId)); + s_capabilityRegistry.updateDON(nonExistentDONId, nodes, capabilityConfigs, true); + } + + function test_RevertWhen_CapabilityDoesNotExist() public { + bytes32[] memory nodes = new bytes32[](1); + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](1); + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_nonExistentHashedCapabilityId, + config: CONFIG + }); + vm.expectRevert( + abi.encodeWithSelector(CapabilityRegistry.CapabilityDoesNotExist.selector, s_nonExistentHashedCapabilityId) + ); + s_capabilityRegistry.updateDON(DON_ID, nodes, capabilityConfigs, true); + } + + function test_RevertWhen_DuplicateCapabilityAdded() public { + bytes32[] memory nodes = new bytes32[](1); + nodes[0] = P2P_ID; + + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](2); + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_basicHashedCapabilityId, + config: CONFIG + }); + capabilityConfigs[1] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_basicHashedCapabilityId, + config: CONFIG + }); + + vm.expectRevert( + abi.encodeWithSelector(CapabilityRegistry.DuplicateDONCapability.selector, 1, s_basicHashedCapabilityId) + ); + s_capabilityRegistry.updateDON(DON_ID, nodes, capabilityConfigs, true); + } + + function test_RevertWhen_DeprecatedCapabilityAdded() public { + bytes32 capabilityId = s_basicHashedCapabilityId; + s_capabilityRegistry.deprecateCapability(capabilityId); + + bytes32[] memory nodes = new bytes32[](1); + nodes[0] = P2P_ID; + + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](1); + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({capabilityId: capabilityId, config: CONFIG}); + + vm.expectRevert(abi.encodeWithSelector(CapabilityRegistry.CapabilityIsDeprecated.selector, capabilityId)); + s_capabilityRegistry.updateDON(DON_ID, nodes, capabilityConfigs, true); + } + + function test_RevertWhen_DuplicateNodeAdded() public { + bytes32[] memory nodes = new bytes32[](2); + nodes[0] = P2P_ID; + nodes[1] = P2P_ID; + + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](1); + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_basicHashedCapabilityId, + config: CONFIG + }); + vm.expectRevert(abi.encodeWithSelector(CapabilityRegistry.DuplicateDONNode.selector, 1, P2P_ID)); + s_capabilityRegistry.updateDON(DON_ID, nodes, capabilityConfigs, true); + } + + function test_UpdatesDON() public { + bytes32[] memory nodes = new bytes32[](1); + nodes[0] = P2P_ID; + + CapabilityRegistry.CapabilityConfiguration[] + memory capabilityConfigs = new CapabilityRegistry.CapabilityConfiguration[](2); + capabilityConfigs[0] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_basicHashedCapabilityId, + config: CONFIG + }); + capabilityConfigs[1] = CapabilityRegistry.CapabilityConfiguration({ + capabilityId: s_capabilityWithConfigurationContractId, + config: CONFIG + }); + + (, uint32 oldConfigCount, , , ) = s_capabilityRegistry.getDON(DON_ID); + + bool expectedDONIsPublic = false; + uint32 expectedConfigCount = oldConfigCount + 1; + + vm.expectEmit(true, true, true, true, address(s_capabilityRegistry)); + emit ConfigSet(DON_ID, expectedConfigCount); + s_capabilityRegistry.updateDON(DON_ID, nodes, capabilityConfigs, expectedDONIsPublic); + + ( + uint32 id, + uint32 configCount, + bool isPublic, + bytes32[] memory donNodes, + CapabilityRegistry.CapabilityConfiguration[] memory donCapabilityConfigs + ) = s_capabilityRegistry.getDON(DON_ID); + assertEq(id, DON_ID); + assertEq(configCount, expectedConfigCount); + assertEq(isPublic, false); + assertEq(donCapabilityConfigs.length, capabilityConfigs.length); + assertEq(donCapabilityConfigs[0].capabilityId, s_basicHashedCapabilityId); + assertEq(s_capabilityRegistry.getDONCapabilityConfig(DON_ID, s_basicHashedCapabilityId), CONFIG); + + assertEq(donNodes.length, nodes.length); + assertEq(donNodes[0], P2P_ID); + } +} diff --git a/core/gethwrappers/keystone/generated/keystone_capability_registry/keystone_capability_registry.go b/core/gethwrappers/keystone/generated/keystone_capability_registry/keystone_capability_registry.go index 3b267be57e1..120f0fc0265 100644 --- a/core/gethwrappers/keystone/generated/keystone_capability_registry/keystone_capability_registry.go +++ b/core/gethwrappers/keystone/generated/keystone_capability_registry/keystone_capability_registry.go @@ -55,8 +55,8 @@ type CapabilityRegistryNodeParams struct { } var CapabilityRegistryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"AccessForbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CapabilityAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityIsDeprecated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"DONDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONCapability\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposedConfigurationContract\",\"type\":\"address\"}],\"name\":\"InvalidCapabilityConfigurationContractInterface\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"name\":\"InvalidNodeCapabilities\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeOperatorAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"InvalidNodeP2PId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lengthOne\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthTwo\",\"type\":\"uint256\"}],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"NodeDoesNotSupportCapability\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDeprecated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"donId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"}],\"name\":\"DONAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"DONRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"}],\"name\":\"NodeOperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"NodeRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability\",\"name\":\"capability\",\"type\":\"tuple\"}],\"name\":\"addCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"}],\"name\":\"addDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"addNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeParams[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"addNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"deprecateCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCapabilities\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedId\",\"type\":\"bytes32\"}],\"name\":\"getCapability\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"getDON\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"getDONCapabilityConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"}],\"name\":\"getHashedCapabilityId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"getNode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeParams\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"}],\"name\":\"getNodeOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"isCapabilityDeprecated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"donIds\",\"type\":\"uint32[]\"}],\"name\":\"removeDONs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint256[]\"}],\"name\":\"removeNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"removedNodeP2PIds\",\"type\":\"bytes32[]\"}],\"name\":\"removeNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"updateNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeParams[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"updateNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600d805463ffffffff191660011790553480156200002157600080fd5b503380600081620000795760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000ac57620000ac81620000b5565b50505062000160565b336001600160a01b038216036200010f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000070565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b61371680620001706000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80635e65e309116100d85780638da5cb5b1161008c578063b06e07a711610066578063b06e07a7146103ad578063ddbe4f82146103c0578063f2fde38b146103d557600080fd5b80638da5cb5b146103525780639cb7c5f41461037a578063ae3c241c1461039a57600080fd5b80636ae5c591116100bd5780636ae5c5911461032457806373ac22b41461033757806379ba50971461034a57600080fd5b80635e65e309146102f157806365c14dc71461030457600080fd5b80631d05394c1161013a57806336b402fb1161011457806336b402fb14610275578063398f3773146102bd57806350c946fe146102d057600080fd5b80631d05394c1461022c578063235374051461023f5780632c01a1e81461026257600080fd5b8063125700111161016b57806312570011146101af578063181f5a77146101d75780631cdf63431461021957600080fd5b80630c5801e314610187578063117392ce1461019c575b600080fd5b61019a61019536600461292e565b6103e8565b005b61019a6101aa36600461299a565b6106f9565b6101c26101bd3660046129b2565b610944565b60405190151581526020015b60405180910390f35b60408051808201909152601881527f4361706162696c697479526567697374727920312e302e30000000000000000060208201525b6040516101ce9190612a2f565b61019a610227366004612a42565b610957565b61019a61023a366004612a42565b610a1a565b61025261024d366004612a9d565b610b3f565b6040516101ce9493929190612af3565b61019a610270366004612a42565b610d98565b6102af610283366004612bab565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6040519081526020016101ce565b61019a6102cb366004612a42565b61101d565b6102e36102de3660046129b2565b6111b6565b6040516101ce929190612bcd565b61019a6102ff366004612a42565b61125b565b6103176103123660046129b2565b61175e565b6040516101ce9190612c59565b61019a610332366004612caa565b611844565b61019a610345366004612a42565b611c40565b61019a612094565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ce565b61038d6103883660046129b2565b612191565b6040516101ce9190612dcd565b61019a6103a83660046129b2565b61223b565b61020c6103bb366004612ddb565b612306565b6103c86123db565b6040516101ce9190612e05565b61019a6103e3366004612e75565b612520565b828114610430576040517fab8b67c600000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff16905b848110156106f157600086868381811061046857610468612e92565b905060200201359050600085858481811061048557610485612e92565b90506020028101906104979190612ec1565b6104a090612fc9565b805190915073ffffffffffffffffffffffffffffffffffffffff166104f1576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805173ffffffffffffffffffffffffffffffffffffffff16331480159061052e57503373ffffffffffffffffffffffffffffffffffffffff851614155b15610565576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160008381526009602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614158061061757506020808201516040516105ab9201612a2f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206000868152600983529290922091926105fe9260010191016130e2565b6040516020818303038152906040528051906020012014155b156106de578051600083815260096020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217825582015160019091019061068490826131d1565b50806000015173ffffffffffffffffffffffffffffffffffffffff167f14c8f513e8a6d86d2d16b0cb64976de4e72386c4f8068eca3b7354373f8fe97a8383602001516040516106d59291906132eb565b60405180910390a25b5050806106ea90613333565b905061044c565b505050505050565b610701612534565b6040805182356020828101919091528084013582840152825180830384018152606090920190925280519101206107396003826125b7565b15610770576040517fe288638f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107826080840160608501612e75565b73ffffffffffffffffffffffffffffffffffffffff16146108ed576107ad6080830160608401612e75565b73ffffffffffffffffffffffffffffffffffffffff163b158061088d57506107db6080830160608401612e75565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f884efe6100000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b919061336b565b155b156108ed576108a26080830160608401612e75565b6040517fabb5e3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610427565b6108f86003826125d2565b50600081815260026020526040902082906109138282613388565b505060405181907f65610e5677eedff94555572640e442f89848a109ef8593fa927ac30b2565ff0690600090a25050565b60006109516005836125b7565b92915050565b61095f612534565b60005b81811015610a1557600083838381811061097e5761097e612e92565b60209081029290920135600081815260099093526040832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681559093509190506109cf6001830182612894565b50506040518181527f1e5877d7b3001d1569bf733b76c7eceda58bd6c031e5b8d0b7042308ba2e9d4f9060200160405180910390a150610a0e81613333565b9050610962565b505050565b610a22612534565b60005b81811015610a15576000838383818110610a4157610a41612e92565b9050602002016020810190610a569190612a9d565b63ffffffff8082166000908152600b6020526040812080549394509264010000000090049091169003610abd576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610427565b63ffffffff82166000818152600b602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000016905590519182527f7c551c5f33df1b67ff1dee6d812a4a2ea076c2a5bea7d3da390a75619df1553e910160405180910390a1505080610b3890613333565b9050610a25565b63ffffffff8082166000908152600b6020908152604080832080546401000000009004909416808452600190940182528083206002810180548351818602810186019094528084529495869560609586959294938893929091830182828015610bc757602002820191906000526020600020905b815481526020019060010190808311610bb3575b505050505090506000815167ffffffffffffffff811115610bea57610bea612eff565b604051908082528060200260200182016040528015610c3057816020015b604080518082019091526000815260606020820152815260200190600190039081610c085790505b50905060005b8151811015610d51576040518060400160405280848381518110610c5c57610c5c612e92565b60200260200101518152602001856003016000868581518110610c8157610c81612e92565b602002602001015181526020019081526020016000208054610ca290613095565b80601f0160208091040260200160405190810160405280929190818152602001828054610cce90613095565b8015610d1b5780601f10610cf057610100808354040283529160200191610d1b565b820191906000526020600020905b815481529060010190602001808311610cfe57829003601f168201915b5050505050815250828281518110610d3557610d35612e92565b602002602001018190525080610d4a90613333565b9050610c36565b5063ffffffff8981166000908152600b60205260409020549081169068010000000000000000900460ff16610d85856125de565b9199509750955093505050509193509193565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015611017576000848483818110610dd257610dd2612e92565b602090810292909201356000818152600a90935260409092206001015491925050151580610e2f576040517f64e2ee9200000000000000000000000000000000000000000000000000000000815260048101839052602401610427565b6000828152600a602090815260408083205463ffffffff168352600982528083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff1682526001810180549293919291840191610e8990613095565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb590613095565b8015610f025780601f10610ed757610100808354040283529160200191610f02565b820191906000526020600020905b815481529060010190602001808311610ee557829003601f168201915b505050505081525050905084158015610f325750805173ffffffffffffffffffffffffffffffffffffffff163314155b15610f69576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040902060010154610f87906007906125eb565b506000838152600a602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001681556001810183905560020191909155517f5254e609a97bab37b7cc79fe128f85c097bd6015c6e1624ae0ba392eb975320590610ffb9085815260200190565b60405180910390a15050508061101090613333565b9050610db6565b50505050565b611025612534565b60005b81811015610a1557600083838381811061104457611044612e92565b90506020028101906110569190612ec1565b61105f90612fc9565b805190915073ffffffffffffffffffffffffffffffffffffffff166110b0576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c54604080518082018252835173ffffffffffffffffffffffffffffffffffffffff908116825260208086015181840190815260008681526009909252939020825181547fffffffffffffffffffffffff00000000000000000000000000000000000000001692169190911781559151909190600182019061113390826131d1565b50905050600c6000815461114690613333565b909155508151602083015160405173ffffffffffffffffffffffffffffffffffffffff909216917fda6697b182650034bd205cdc2dbfabb06bdb3a0a83a2b45bfefa3c4881284e0b9161119b918591906132eb565b60405180910390a25050806111af90613333565b9050611028565b6040805160808101825260008082526020820181905291810191909152606080820152604080516080810182526000848152600a6020908152838220805463ffffffff808216865260018301548487015260028301548688015264010000000090910416835260030190529182206060820190611232906125de565b90526000938452600a602052604090932054929364010000000090930463ffffffff1692915050565b60005b81811015610a1557600083838381811061127a5761127a612e92565b905060200281019061128c919061340a565b6112959061343e565b905060006112b860005473ffffffffffffffffffffffffffffffffffffffff1690565b825163ffffffff1660009081526009602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff9081168352600182018054969091163314965093949193909284019161131590613095565b80601f016020809104026020016040519081016040528092919081815260200182805461134190613095565b801561138e5780601f106113635761010080835404028352916020019161138e565b820191906000526020600020905b81548152906001019060200180831161137157829003601f168201915b5050505050815250509050811580156113be5750805173ffffffffffffffffffffffffffffffffffffffff163314155b156113f5576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808401516000908152600a602052206001015415158061144b5783604001516040517f64e2ee9200000000000000000000000000000000000000000000000000000000815260040161042791815260200190565b6020840151158061149157508360200151600a600086604001518152602001908152602001600020600101541415801561149157506020840151611491906007906125b7565b156114c8576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060840151805160000361150a57806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016104279190613511565b6040858101516000908152600a602052208054640100000000900463ffffffff1690600461153783613524565b82546101009290920a63ffffffff8181021990931691831602179091556040878101516000908152600a60205290812054640100000000900490911691505b8251811015611642576115ac83828151811061159457611594612e92565b602002602001015160036125b790919063ffffffff16565b6115e457826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016104279190613511565b6116318382815181106115f9576115f9612e92565b6020908102919091018101516040808b01516000908152600a845281812063ffffffff8089168352600390910190945220916125d216565b5061163b81613333565b9050611576565b508551604080880180516000908152600a602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9096169590951790945581518082528382206002015581518152828120600190810154948b01519251825292902090910154146116f7576116c66007826125eb565b50602080880180516040808b01516000908152600a90945290922060010191909155516116f5906007906125d2565b505b60408781015188516020808b0151845193845263ffffffff909216908301528183015290517ff101cfc54994c31624d25789378d71ec4dbdc533e26a4ecc6b7648f4798d09169181900360600190a1505050505050508061175790613333565b905061125e565b6040805180820190915260008152606060208201526000828152600960209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff16835260018101805491928401916117bb90613095565b80601f01602080910402602001604051908101604052809291908181526020018280546117e790613095565b80156118345780601f1061180957610100808354040283529160200191611834565b820191906000526020600020905b81548152906001019060200180831161181757829003601f168201915b5050505050815250509050919050565b61184c612534565b600d5463ffffffff166000818152600b6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffff0000000016851768010000000000000000871515021781556001808552908101909252822090915b878110156119425760008989838181106118c9576118c9612e92565b602002919091013591506118df905083826125b7565b15611925576040517f636e405700000000000000000000000000000000000000000000000000000000815263ffffffff8616600482015260248101829052604401610427565b61192f83826125d2565b50508061193b90613333565b90506118ad565b5060005b85811015611b74573687878381811061196157611961612e92565b90506020028101906119739190612ec1565b905080356119826003826125b7565b6119bb576040517fe181733f00000000000000000000000000000000000000000000000000000000815260048101829052602401610427565b6119c66005826125b7565b15611a00576040517ff7d7a29400000000000000000000000000000000000000000000000000000000815260048101829052602401610427565b600081815260038501602052604081208054611a1b90613095565b90501115611a64576040517f3927d08000000000000000000000000000000000000000000000000000000000815263ffffffff8716600482015260248101829052604401610427565b60005b8a811015611b1c5760008c8c83818110611a8357611a83612e92565b602090810292909201356000818152600a84526040808220805463ffffffff6401000000009091048116845260039091019095529020909350611acb9290915085906125b716565b611b0b576040517fa7e792500000000000000000000000000000000000000000000000000000000081526004810182905260248101849052604401610427565b50611b1581613333565b9050611a67565b50600284018054600181018255600091825260209182902001829055611b4490830183613547565b6000838152600387016020526040902091611b609190836135ac565b50505080611b6d90613333565b9050611946565b5063ffffffff8381166000908152600b6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff1664010000000086851602179055600d80549092611bcc9116613524565b91906101000a81548163ffffffff021916908363ffffffff1602179055507fab55f4c8fb4335a586285ae209d1f1e17a7ccb22e1131963624434d98c8546a58385604051611c2e92919063ffffffff9290921682521515602082015260400190565b60405180910390a15050505050505050565b60005b81811015610a15576000838383818110611c5f57611c5f612e92565b9050602002810190611c71919061340a565b611c7a9061343e565b90506000611c9d60005473ffffffffffffffffffffffffffffffffffffffff1690565b825163ffffffff1660009081526009602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff90811683526001820180549690911633149650939491939092840191611cfa90613095565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2690613095565b8015611d735780601f10611d4857610100808354040283529160200191611d73565b820191906000526020600020905b815481529060010190602001808311611d5657829003601f168201915b505050505081525050905081158015611da35750805173ffffffffffffffffffffffffffffffffffffffff163314155b15611dda576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808401516000908152600a602052206001015415158080611dff57506040840151155b15611e3e5783604001516040517f64e2ee9200000000000000000000000000000000000000000000000000000000815260040161042791815260200190565b60208401511580611e5b57506020840151611e5b906007906125b7565b15611e92576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608401518051600003611ed457806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016104279190613511565b6040858101516000908152600a602052208054600490611f0190640100000000900463ffffffff16613524565b82546101009290920a63ffffffff8181021990931691831602179091556040868101516000908152600a602052908120546401000000009004909116905b8251811015611fbb57611f5d83828151811061159457611594612e92565b611f9557826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016104279190613511565b611faa8382815181106115f9576115f9612e92565b50611fb481613333565b9050611f3f565b508551604080880180516000908152600a602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9687161790558251808352848320600201558a01805192518252929020600101555161202d91600791906125d216565b5060408681015187516020808a0151845193845263ffffffff909216908301528183015290517fc9296aa9b0951d8000e8ed7f2b5be30c5106de8df3dbedf9a57c93f5f9e4d7da9181900360600190a15050505050508061208d90613333565b9050611c43565b60015473ffffffffffffffffffffffffffffffffffffffff163314612115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610427565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b604080516080808201835260008083526020808401829052838501829052606084018290528582526002808252918590208551938401865280548452600180820154928501929092529182015493949293919284019160ff16908111156121fa576121fa612d2e565b600181111561220b5761220b612d2e565b815260029190910154610100900473ffffffffffffffffffffffffffffffffffffffff1660209091015292915050565b612243612534565b61224e6003826125b7565b612287576040517fe181733f00000000000000000000000000000000000000000000000000000000815260048101829052602401610427565b6122926005826125b7565b156122cc576040517ff7d7a29400000000000000000000000000000000000000000000000000000000815260048101829052602401610427565b6122d76005826125d2565b5060405181907fdcea1b78b6ddc31592a94607d537543fcaafda6cc52d6d5cc7bbfca1422baf2190600090a250565b63ffffffff8083166000908152600b60209081526040808320805464010000000090049094168084526001909401825280832085845260030190915290208054606092919061235490613095565b80601f016020809104026020016040519081016040528092919081815260200182805461238090613095565b80156123cd5780601f106123a2576101008083540402835291602001916123cd565b820191906000526020600020905b8154815290600101906020018083116123b057829003601f168201915b505050505091505092915050565b606060006123e960036125de565b905060006123f760056125f7565b825161240391906136c7565b67ffffffffffffffff81111561241b5761241b612eff565b60405190808252806020026020018201604052801561248b57816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816124395790505b5090506000805b83518110156125175760008482815181106124af576124af612e92565b602002602001015190506124cd8160056125b790919063ffffffff16565b612506576124da81612191565b8484815181106124ec576124ec612e92565b6020026020010181905250828061250290613333565b9350505b5061251081613333565b9050612492565b50909392505050565b612528612534565b61253181612601565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146125b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610427565b565b600081815260018301602052604081205415155b9392505050565b60006125cb83836126f6565b606060006125cb83612745565b60006125cb83836127a1565b6000610951825490565b3373ffffffffffffffffffffffffffffffffffffffff821603612680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610427565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260018301602052604081205461273d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610951565b506000610951565b60608160000180548060200260200160405190810160405280929190818152602001828054801561279557602002820191906000526020600020905b815481526020019060010190808311612781575b50505050509050919050565b6000818152600183016020526040812054801561288a5760006127c56001836136c7565b85549091506000906127d9906001906136c7565b905081811461283e5760008660000182815481106127f9576127f9612e92565b906000526020600020015490508087600001848154811061281c5761281c612e92565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061284f5761284f6136da565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610951565b6000915050610951565b5080546128a090613095565b6000825580601f106128b0575050565b601f01602090049060005260206000209081019061253191905b808211156128de57600081556001016128ca565b5090565b60008083601f8401126128f457600080fd5b50813567ffffffffffffffff81111561290c57600080fd5b6020830191508360208260051b850101111561292757600080fd5b9250929050565b6000806000806040858703121561294457600080fd5b843567ffffffffffffffff8082111561295c57600080fd5b612968888389016128e2565b9096509450602087013591508082111561298157600080fd5b5061298e878288016128e2565b95989497509550505050565b6000608082840312156129ac57600080fd5b50919050565b6000602082840312156129c457600080fd5b5035919050565b6000815180845260005b818110156129f1576020818501810151868301820152016129d5565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006125cb60208301846129cb565b60008060208385031215612a5557600080fd5b823567ffffffffffffffff811115612a6c57600080fd5b612a78858286016128e2565b90969095509350505050565b803563ffffffff81168114612a9857600080fd5b919050565b600060208284031215612aaf57600080fd5b6125cb82612a84565b600081518084526020808501945080840160005b83811015612ae857815187529582019590820190600101612acc565b509495945050505050565b63ffffffff8516815260006020851515818401526040608081850152612b1c6080850187612ab8565b8481036060860152855180825283820190600581901b8301850185890160005b83811015612b99578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018552815180518452880151888401889052612b86888501826129cb565b9589019593505090870190600101612b3c565b50909c9b505050505050505050505050565b60008060408385031215612bbe57600080fd5b50508035926020909101359150565b60408152600060c0820163ffffffff85511660408401526020808601516060850152604086015160808501526060860151608060a086015282815180855260e0870191508383019450600092505b80831015612c3b5784518252938301936001929092019190830190612c1b565b5063ffffffff8716838701529350612c509050565b50509392505050565b6020815273ffffffffffffffffffffffffffffffffffffffff825116602082015260006020830151604080840152612c9460608401826129cb565b949350505050565b801515811461253157600080fd5b600080600080600060608688031215612cc257600080fd5b853567ffffffffffffffff80821115612cda57600080fd5b612ce689838a016128e2565b90975095506020880135915080821115612cff57600080fd5b50612d0c888289016128e2565b9094509250506040860135612d2081612c9c565b809150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8051825260208101516020830152604081015160028110612da7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b604083015260609081015173ffffffffffffffffffffffffffffffffffffffff16910152565b608081016109518284612d5d565b60008060408385031215612dee57600080fd5b612df783612a84565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015612e4757612e34838551612d5d565b9284019260809290920191600101612e21565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461253157600080fd5b600060208284031215612e8757600080fd5b81356125cb81612e53565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112612ef557600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612f5157612f51612eff565b60405290565b6040516080810167ffffffffffffffff81118282101715612f5157612f51612eff565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612fc157612fc1612eff565b604052919050565b600060408236031215612fdb57600080fd5b612fe3612f2e565b8235612fee81612e53565b815260208381013567ffffffffffffffff8082111561300c57600080fd5b9085019036601f83011261301f57600080fd5b81358181111561303157613031612eff565b613061847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612f7a565b9150808252368482850101111561307757600080fd5b80848401858401376000908201840152918301919091525092915050565b600181811c908216806130a957607f821691505b6020821081036129ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020808352600084546130f681613095565b80848701526040600180841660008114613117576001811461314f5761317d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a0101955061317d565b896000528660002060005b858110156131755781548b820186015290830190880161315a565b8a0184019650505b509398975050505050505050565b601f821115610a1557600081815260208120601f850160051c810160208610156131b25750805b601f850160051c820191505b818110156106f1578281556001016131be565b815167ffffffffffffffff8111156131eb576131eb612eff565b6131ff816131f98454613095565b8461318b565b602080601f831160018114613252576000841561321c5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556106f1565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561329f57888601518255948401946001909101908401613280565b50858210156132db57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000612c9460408301846129cb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361336457613364613304565b5060010190565b60006020828403121561337d57600080fd5b81516125cb81612c9c565b8135815560208201356001820155600281016040830135600281106133ac57600080fd5b815460608501356133bc81612e53565b74ffffffffffffffffffffffffffffffffffffffff008160081b1660ff84167fffffffffffffffffffffff000000000000000000000000000000000000000000841617178455505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112612ef557600080fd5b60006080823603121561345057600080fd5b613458612f57565b61346183612a84565b81526020808401358183015260408401356040830152606084013567ffffffffffffffff8082111561349257600080fd5b9085019036601f8301126134a557600080fd5b8135818111156134b7576134b7612eff565b8060051b91506134c8848301612f7a565b81815291830184019184810190368411156134e257600080fd5b938501935b83851015613500578435825293850193908501906134e7565b606087015250939695505050505050565b6020815260006125cb6020830184612ab8565b600063ffffffff80831681810361353d5761353d613304565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261357c57600080fd5b83018035915067ffffffffffffffff82111561359757600080fd5b60200191503681900382131561292757600080fd5b67ffffffffffffffff8311156135c4576135c4612eff565b6135d8836135d28354613095565b8361318b565b6000601f84116001811461362a57600085156135f45750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556136c0565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156136795786850135825560209485019460019092019101613659565b50868210156136b4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8181038181111561095157610951613304565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000813000a", + ABI: "[{\"inputs\":[],\"name\":\"AccessForbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CapabilityAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityIsDeprecated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"DONDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONCapability\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposedConfigurationContract\",\"type\":\"address\"}],\"name\":\"InvalidCapabilityConfigurationContractInterface\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"name\":\"InvalidNodeCapabilities\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeOperatorAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"InvalidNodeP2PId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lengthOne\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthTwo\",\"type\":\"uint256\"}],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"NodeDoesNotSupportCapability\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDeprecated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"}],\"name\":\"NodeOperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"NodeRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability\",\"name\":\"capability\",\"type\":\"tuple\"}],\"name\":\"addCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"}],\"name\":\"addDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"addNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeParams[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"addNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"deprecateCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCapabilities\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedId\",\"type\":\"bytes32\"}],\"name\":\"getCapability\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"getDON\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"getDONCapabilityConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"}],\"name\":\"getHashedCapabilityId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"getNode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeParams\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeOperatorId\",\"type\":\"uint256\"}],\"name\":\"getNodeOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"isCapabilityDeprecated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"donIds\",\"type\":\"uint32[]\"}],\"name\":\"removeDONs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint256[]\"}],\"name\":\"removeNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"removedNodeP2PIds\",\"type\":\"bytes32[]\"}],\"name\":\"removeNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"}],\"name\":\"updateDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"updateNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeParams[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"updateNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052600d805463ffffffff191660011790553480156200002157600080fd5b503380600081620000795760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000ac57620000ac81620000b5565b50505062000160565b336001600160a01b038216036200010f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000070565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6138ef80620001706000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635e65e309116100e35780639cb7c5f41161008c578063c63239c511610066578063c63239c5146103cc578063ddbe4f82146103df578063f2fde38b146103f457600080fd5b80639cb7c5f414610386578063ae3c241c146103a6578063b06e07a7146103b957600080fd5b806373ac22b4116100bd57806373ac22b41461034357806379ba5097146103565780638da5cb5b1461035e57600080fd5b80635e65e309146102fd57806365c14dc7146103105780636ae5c5911461033057600080fd5b80631d05394c1161014557806336b402fb1161011f57806336b402fb14610281578063398f3773146102c957806350c946fe146102dc57600080fd5b80631d05394c14610237578063235374051461024a5780632c01a1e81461026e57600080fd5b8063125700111161017657806312570011146101ba578063181f5a77146101e25780631cdf63431461022457600080fd5b80630c5801e314610192578063117392ce146101a7575b600080fd5b6101a56101a0366004612a68565b610407565b005b6101a56101b5366004612ad4565b610718565b6101cd6101c8366004612aec565b610963565b60405190151581526020015b60405180910390f35b60408051808201909152601881527f4361706162696c697479526567697374727920312e302e30000000000000000060208201525b6040516101d99190612b69565b6101a5610232366004612b7c565b610976565b6101a5610245366004612b7c565b610a39565b61025d610258366004612bd7565b610b64565b6040516101d9959493929190612c2d565b6101a561027c366004612b7c565b610dc4565b6102bb61028f366004612cf1565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6040519081526020016101d9565b6101a56102d7366004612b7c565b611049565b6102ef6102ea366004612aec565b6111e2565b6040516101d9929190612d13565b6101a561030b366004612b7c565b611287565b61032361031e366004612aec565b61178a565b6040516101d99190612d9f565b6101a561033e366004612df0565b611870565b6101a5610351366004612b7c565b611903565b6101a5611d57565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d9565b610399610394366004612aec565b611e54565b6040516101d99190612f13565b6101a56103b4366004612aec565b611efe565b6102176103c7366004612f21565b611fc9565b6101a56103da366004612f4b565b61209e565b6103e7612161565b6040516101d99190612fde565b6101a561040236600461304e565b6122a6565b82811461044f576040517fab8b67c600000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff16905b848110156107105760008686838181106104875761048761306b565b90506020020135905060008585848181106104a4576104a461306b565b90506020028101906104b6919061309a565b6104bf906131a2565b805190915073ffffffffffffffffffffffffffffffffffffffff16610510576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805173ffffffffffffffffffffffffffffffffffffffff16331480159061054d57503373ffffffffffffffffffffffffffffffffffffffff851614155b15610584576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160008381526009602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614158061063657506020808201516040516105ca9201612b69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060008681526009835292909220919261061d9260010191016132bb565b6040516020818303038152906040528051906020012014155b156106fd578051600083815260096020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9093169290921782558201516001909101906106a390826133aa565b50806000015173ffffffffffffffffffffffffffffffffffffffff167f14c8f513e8a6d86d2d16b0cb64976de4e72386c4f8068eca3b7354373f8fe97a8383602001516040516106f49291906134c4565b60405180910390a25b5050806107099061350c565b905061046b565b505050505050565b6107206122ba565b60408051823560208281019190915280840135828401528251808303840181526060909201909252805191012061075860038261233d565b1561078f576040517fe288638f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107a1608084016060850161304e565b73ffffffffffffffffffffffffffffffffffffffff161461090c576107cc608083016060840161304e565b73ffffffffffffffffffffffffffffffffffffffff163b15806108ac57506107fa608083016060840161304e565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f884efe6100000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190613544565b155b1561090c576108c1608083016060840161304e565b6040517fabb5e3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610446565b610917600382612358565b50600081815260026020526040902082906109328282613561565b505060405181907f65610e5677eedff94555572640e442f89848a109ef8593fa927ac30b2565ff0690600090a25050565b600061097060058361233d565b92915050565b61097e6122ba565b60005b81811015610a3457600083838381811061099d5761099d61306b565b60209081029290920135600081815260099093526040832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681559093509190506109ee60018301826129ce565b50506040518181527f1e5877d7b3001d1569bf733b76c7eceda58bd6c031e5b8d0b7042308ba2e9d4f9060200160405180910390a150610a2d8161350c565b9050610981565b505050565b610a416122ba565b60005b81811015610a34576000838383818110610a6057610a6061306b565b9050602002016020810190610a759190612bd7565b63ffffffff8082166000908152600b6020526040812080549394509264010000000090049091169003610adc576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610446565b63ffffffff82166000818152600b6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001690558051938452908301919091527ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a1505080610b5d9061350c565b9050610a44565b63ffffffff8082166000908152600b6020908152604080832080546401000000009004909416808452600190940182528083206002810180548351818602810186019094528084529495869586956060958695939488939192909190830182828015610bef57602002820191906000526020600020905b815481526020019060010190808311610bdb575b505050505090506000815167ffffffffffffffff811115610c1257610c126130d8565b604051908082528060200260200182016040528015610c5857816020015b604080518082019091526000815260606020820152815260200190600190039081610c305790505b50905060005b8151811015610d79576040518060400160405280848381518110610c8457610c8461306b565b60200260200101518152602001856003016000868581518110610ca957610ca961306b565b602002602001015181526020019081526020016000208054610cca9061326e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf69061326e565b8015610d435780601f10610d1857610100808354040283529160200191610d43565b820191906000526020600020905b815481529060010190602001808311610d2657829003601f168201915b5050505050815250828281518110610d5d57610d5d61306b565b602002602001018190525080610d729061350c565b9050610c5e565b5063ffffffff8a81166000908152600b602052604090205490811690859068010000000000000000900460ff16610daf86612364565b929d919c509a50909850909650945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015611043576000848483818110610dfe57610dfe61306b565b602090810292909201356000818152600a90935260409092206001015491925050151580610e5b576040517f64e2ee9200000000000000000000000000000000000000000000000000000000815260048101839052602401610446565b6000828152600a602090815260408083205463ffffffff168352600982528083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff1682526001810180549293919291840191610eb59061326e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee19061326e565b8015610f2e5780601f10610f0357610100808354040283529160200191610f2e565b820191906000526020600020905b815481529060010190602001808311610f1157829003601f168201915b505050505081525050905084158015610f5e5750805173ffffffffffffffffffffffffffffffffffffffff163314155b15610f95576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040902060010154610fb390600790612371565b506000838152600a602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001681556001810183905560020191909155517f5254e609a97bab37b7cc79fe128f85c097bd6015c6e1624ae0ba392eb9753205906110279085815260200190565b60405180910390a15050508061103c9061350c565b9050610de2565b50505050565b6110516122ba565b60005b81811015610a345760008383838181106110705761107061306b565b9050602002810190611082919061309a565b61108b906131a2565b805190915073ffffffffffffffffffffffffffffffffffffffff166110dc576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c54604080518082018252835173ffffffffffffffffffffffffffffffffffffffff908116825260208086015181840190815260008681526009909252939020825181547fffffffffffffffffffffffff00000000000000000000000000000000000000001692169190911781559151909190600182019061115f90826133aa565b50905050600c600081546111729061350c565b909155508151602083015160405173ffffffffffffffffffffffffffffffffffffffff909216917fda6697b182650034bd205cdc2dbfabb06bdb3a0a83a2b45bfefa3c4881284e0b916111c7918591906134c4565b60405180910390a25050806111db9061350c565b9050611054565b6040805160808101825260008082526020820181905291810191909152606080820152604080516080810182526000848152600a6020908152838220805463ffffffff80821686526001830154848701526002830154868801526401000000009091041683526003019052918220606082019061125e90612364565b90526000938452600a602052604090932054929364010000000090930463ffffffff1692915050565b60005b81811015610a345760008383838181106112a6576112a661306b565b90506020028101906112b891906135e3565b6112c190613617565b905060006112e460005473ffffffffffffffffffffffffffffffffffffffff1690565b825163ffffffff1660009081526009602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff908116835260018201805496909116331496509394919390928401916113419061326e565b80601f016020809104026020016040519081016040528092919081815260200182805461136d9061326e565b80156113ba5780601f1061138f576101008083540402835291602001916113ba565b820191906000526020600020905b81548152906001019060200180831161139d57829003601f168201915b5050505050815250509050811580156113ea5750805173ffffffffffffffffffffffffffffffffffffffff163314155b15611421576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808401516000908152600a60205220600101541515806114775783604001516040517f64e2ee9200000000000000000000000000000000000000000000000000000000815260040161044691815260200190565b602084015115806114bd57508360200151600a60008660400151815260200190815260200160002060010154141580156114bd575060208401516114bd9060079061233d565b156114f4576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060840151805160000361153657806040517f3748d4c600000000000000000000000000000000000000000000000000000000815260040161044691906136ea565b6040858101516000908152600a602052208054640100000000900463ffffffff16906004611563836136fd565b82546101009290920a63ffffffff8181021990931691831602179091556040878101516000908152600a60205290812054640100000000900490911691505b825181101561166e576115d88382815181106115c0576115c061306b565b6020026020010151600361233d90919063ffffffff16565b61161057826040517f3748d4c600000000000000000000000000000000000000000000000000000000815260040161044691906136ea565b61165d8382815181106116255761162561306b565b6020908102919091018101516040808b01516000908152600a845281812063ffffffff80891683526003909101909452209161235816565b506116678161350c565b90506115a2565b508551604080880180516000908152600a602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9096169590951790945581518082528382206002015581518152828120600190810154948b0151925182529290209091015414611723576116f2600782612371565b50602080880180516040808b01516000908152600a909452909220600101919091555161172190600790612358565b505b60408781015188516020808b0151845193845263ffffffff909216908301528183015290517ff101cfc54994c31624d25789378d71ec4dbdc533e26a4ecc6b7648f4798d09169181900360600190a150505050505050806117839061350c565b905061128a565b6040805180820190915260008152606060208201526000828152600960209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff16835260018101805491928401916117e79061326e565b80601f01602080910402602001604051908101604052809291908181526020018280546118139061326e565b80156118605780601f1061183557610100808354040283529160200191611860565b820191906000526020600020905b81548152906001019060200180831161184357829003601f168201915b5050505050815250509050919050565b6118786122ba565b600d5463ffffffff166000818152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016821790556118c7816001888888888861237d565b600d80546000906118dd9063ffffffff166136fd565b91906101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b60005b81811015610a345760008383838181106119225761192261306b565b905060200281019061193491906135e3565b61193d90613617565b9050600061196060005473ffffffffffffffffffffffffffffffffffffffff1690565b825163ffffffff1660009081526009602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff908116835260018201805496909116331496509394919390928401916119bd9061326e565b80601f01602080910402602001604051908101604052809291908181526020018280546119e99061326e565b8015611a365780601f10611a0b57610100808354040283529160200191611a36565b820191906000526020600020905b815481529060010190602001808311611a1957829003601f168201915b505050505081525050905081158015611a665750805173ffffffffffffffffffffffffffffffffffffffff163314155b15611a9d576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808401516000908152600a602052206001015415158080611ac257506040840151155b15611b015783604001516040517f64e2ee9200000000000000000000000000000000000000000000000000000000815260040161044691815260200190565b60208401511580611b1e57506020840151611b1e9060079061233d565b15611b55576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608401518051600003611b9757806040517f3748d4c600000000000000000000000000000000000000000000000000000000815260040161044691906136ea565b6040858101516000908152600a602052208054600490611bc490640100000000900463ffffffff166136fd565b82546101009290920a63ffffffff8181021990931691831602179091556040868101516000908152600a602052908120546401000000009004909116905b8251811015611c7e57611c208382815181106115c0576115c061306b565b611c5857826040517f3748d4c600000000000000000000000000000000000000000000000000000000815260040161044691906136ea565b611c6d8382815181106116255761162561306b565b50611c778161350c565b9050611c02565b508551604080880180516000908152600a602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9687161790558251808352848320600201558a018051925182529290206001015551611cf0916007919061235816565b5060408681015187516020808a0151845193845263ffffffff909216908301528183015290517fc9296aa9b0951d8000e8ed7f2b5be30c5106de8df3dbedf9a57c93f5f9e4d7da9181900360600190a150505050505080611d509061350c565b9050611906565b60015473ffffffffffffffffffffffffffffffffffffffff163314611dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610446565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b604080516080808201835260008083526020808401829052838501829052606084018290528582526002808252918590208551938401865280548452600180820154928501929092529182015493949293919284019160ff1690811115611ebd57611ebd612e74565b6001811115611ece57611ece612e74565b815260029190910154610100900473ffffffffffffffffffffffffffffffffffffffff1660209091015292915050565b611f066122ba565b611f1160038261233d565b611f4a576040517fe181733f00000000000000000000000000000000000000000000000000000000815260048101829052602401610446565b611f5560058261233d565b15611f8f576040517ff7d7a29400000000000000000000000000000000000000000000000000000000815260048101829052602401610446565b611f9a600582612358565b5060405181907fdcea1b78b6ddc31592a94607d537543fcaafda6cc52d6d5cc7bbfca1422baf2190600090a250565b63ffffffff8083166000908152600b6020908152604080832080546401000000009004909416808452600190940182528083208584526003019091529020805460609291906120179061326e565b80601f01602080910402602001604051908101604052809291908181526020018280546120439061326e565b80156120905780601f1061206557610100808354040283529160200191612090565b820191906000526020600020905b81548152906001019060200180831161207357829003601f168201915b505050505091505092915050565b6120a66122ba565b63ffffffff8087166000908152600b602052604081205464010000000090049091169081900361210a576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff88166004820152602401610446565b61212487612117836136fd565b925082888888888861237d565b600d805460009061213a9063ffffffff166136fd565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050505050565b6060600061216f6003612364565b9050600061217d6005612731565b82516121899190613720565b67ffffffffffffffff8111156121a1576121a16130d8565b60405190808252806020026020018201604052801561221157816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816121bf5790505b5090506000805b835181101561229d5760008482815181106122355761223561306b565b6020026020010151905061225381600561233d90919063ffffffff16565b61228c5761226081611e54565b8484815181106122725761227261306b565b602002602001018190525082806122889061350c565b9350505b506122968161350c565b9050612218565b50909392505050565b6122ae6122ba565b6122b78161273b565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461233b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610446565b565b600081815260018301602052604081205415155b9392505050565b60006123518383612830565b606060006123518361287f565b600061235183836128db565b63ffffffff8781166000908152600b6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff166801000000000000000087151502178155938a16835260019093019052908120905b858110156124715760008787838181106123f8576123f861306b565b6020029190910135915061240e9050838261233d565b15612454576040517f636e405700000000000000000000000000000000000000000000000000000000815263ffffffff8b16600482015260248101829052604401610446565b61245e8382612358565b50508061246a9061350c565b90506123dc565b5060005b838110156126a357368585838181106124905761249061306b565b90506020028101906124a2919061309a565b905080356124b160038261233d565b6124ea576040517fe181733f00000000000000000000000000000000000000000000000000000000815260048101829052602401610446565b6124f560058261233d565b1561252f576040517ff7d7a29400000000000000000000000000000000000000000000000000000000815260048101829052602401610446565b60008181526003850160205260408120805461254a9061326e565b90501115612593576040517f3927d08000000000000000000000000000000000000000000000000000000000815263ffffffff8c16600482015260248101829052604401610446565b60005b8881101561264b5760008a8a838181106125b2576125b261306b565b602090810292909201356000818152600a84526040808220805463ffffffff64010000000090910481168452600390910190955290209093506125fa92909150859061233d16565b61263a576040517fa7e792500000000000000000000000000000000000000000000000000000000081526004810182905260248101849052604401610446565b506126448161350c565b9050612596565b5060028401805460018101825560009182526020918290200182905561267390830183613733565b600083815260038701602052604090209161268f919083613798565b5050508061269c9061350c565b9050612475565b5063ffffffff8881166000818152600b602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000958d1695860217905581519283528201929092527ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a15050505050505050565b6000610970825490565b3373ffffffffffffffffffffffffffffffffffffffff8216036127ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610446565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260018301602052604081205461287757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610970565b506000610970565b6060816000018054806020026020016040519081016040528092919081815260200182805480156128cf57602002820191906000526020600020905b8154815260200190600101908083116128bb575b50505050509050919050565b600081815260018301602052604081205480156129c45760006128ff600183613720565b855490915060009061291390600190613720565b90508181146129785760008660000182815481106129335761293361306b565b90600052602060002001549050808760000184815481106129565761295661306b565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612989576129896138b3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610970565b6000915050610970565b5080546129da9061326e565b6000825580601f106129ea575050565b601f0160209004906000526020600020908101906122b791905b80821115612a185760008155600101612a04565b5090565b60008083601f840112612a2e57600080fd5b50813567ffffffffffffffff811115612a4657600080fd5b6020830191508360208260051b8501011115612a6157600080fd5b9250929050565b60008060008060408587031215612a7e57600080fd5b843567ffffffffffffffff80821115612a9657600080fd5b612aa288838901612a1c565b90965094506020870135915080821115612abb57600080fd5b50612ac887828801612a1c565b95989497509550505050565b600060808284031215612ae657600080fd5b50919050565b600060208284031215612afe57600080fd5b5035919050565b6000815180845260005b81811015612b2b57602081850181015186830182015201612b0f565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006123516020830184612b05565b60008060208385031215612b8f57600080fd5b823567ffffffffffffffff811115612ba657600080fd5b612bb285828601612a1c565b90969095509350505050565b803563ffffffff81168114612bd257600080fd5b919050565b600060208284031215612be957600080fd5b61235182612bbe565b600081518084526020808501945080840160005b83811015612c2257815187529582019590820190600101612c06565b509495945050505050565b600063ffffffff8088168352602081881681850152604091508615158285015260a06060850152612c6160a0850187612bf2565b8481036080860152855180825282820190600581901b8301840184890160005b83811015612cde578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018552815180518452870151878401899052612ccb89850182612b05565b9588019593505090860190600101612c81565b50909d9c50505050505050505050505050565b60008060408385031215612d0457600080fd5b50508035926020909101359150565b60408152600060c0820163ffffffff85511660408401526020808601516060850152604086015160808501526060860151608060a086015282815180855260e0870191508383019450600092505b80831015612d815784518252938301936001929092019190830190612d61565b5063ffffffff8716838701529350612d969050565b50509392505050565b6020815273ffffffffffffffffffffffffffffffffffffffff825116602082015260006020830151604080840152612dda6060840182612b05565b949350505050565b80151581146122b757600080fd5b600080600080600060608688031215612e0857600080fd5b853567ffffffffffffffff80821115612e2057600080fd5b612e2c89838a01612a1c565b90975095506020880135915080821115612e4557600080fd5b50612e5288828901612a1c565b9094509250506040860135612e6681612de2565b809150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8051825260208101516020830152604081015160028110612eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b604083015260609081015173ffffffffffffffffffffffffffffffffffffffff16910152565b608081016109708284612ea3565b60008060408385031215612f3457600080fd5b612f3d83612bbe565b946020939093013593505050565b60008060008060008060808789031215612f6457600080fd5b612f6d87612bbe565b9550602087013567ffffffffffffffff80821115612f8a57600080fd5b612f968a838b01612a1c565b90975095506040890135915080821115612faf57600080fd5b50612fbc89828a01612a1c565b9094509250506060870135612fd081612de2565b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156130205761300d838551612ea3565b9284019260809290920191600101612ffa565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146122b757600080fd5b60006020828403121561306057600080fd5b81356123518161302c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126130ce57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561312a5761312a6130d8565b60405290565b6040516080810167ffffffffffffffff8111828210171561312a5761312a6130d8565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561319a5761319a6130d8565b604052919050565b6000604082360312156131b457600080fd5b6131bc613107565b82356131c78161302c565b815260208381013567ffffffffffffffff808211156131e557600080fd5b9085019036601f8301126131f857600080fd5b81358181111561320a5761320a6130d8565b61323a847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613153565b9150808252368482850101111561325057600080fd5b80848401858401376000908201840152918301919091525092915050565b600181811c9082168061328257607f821691505b602082108103612ae6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020808352600084546132cf8161326e565b808487015260406001808416600081146132f0576001811461332857613356565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a01019550613356565b896000528660002060005b8581101561334e5781548b8201860152908301908801613333565b8a0184019650505b509398975050505050505050565b601f821115610a3457600081815260208120601f850160051c8101602086101561338b5750805b601f850160051c820191505b8181101561071057828155600101613397565b815167ffffffffffffffff8111156133c4576133c46130d8565b6133d8816133d2845461326e565b84613364565b602080601f83116001811461342b57600084156133f55750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610710565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561347857888601518255948401946001909101908401613459565b50858210156134b457878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000612dda6040830184612b05565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361353d5761353d6134dd565b5060010190565b60006020828403121561355657600080fd5b815161235181612de2565b81358155602082013560018201556002810160408301356002811061358557600080fd5b815460608501356135958161302c565b74ffffffffffffffffffffffffffffffffffffffff008160081b1660ff84167fffffffffffffffffffffff000000000000000000000000000000000000000000841617178455505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126130ce57600080fd5b60006080823603121561362957600080fd5b613631613130565b61363a83612bbe565b81526020808401358183015260408401356040830152606084013567ffffffffffffffff8082111561366b57600080fd5b9085019036601f83011261367e57600080fd5b813581811115613690576136906130d8565b8060051b91506136a1848301613153565b81815291830184019184810190368411156136bb57600080fd5b938501935b838510156136d9578435825293850193908501906136c0565b606087015250939695505050505050565b6020815260006123516020830184612bf2565b600063ffffffff808316818103613716576137166134dd565b6001019392505050565b81810381811115610970576109706134dd565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261376857600080fd5b83018035915067ffffffffffffffff82111561378357600080fd5b602001915036819003821315612a6157600080fd5b67ffffffffffffffff8311156137b0576137b06130d8565b6137c4836137be835461326e565b83613364565b6000601f84116001811461381657600085156137e05750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556138ac565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156138655786850135825560209485019460019092019101613845565b50868210156138a0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000813000a", } var CapabilityRegistryABI = CapabilityRegistryMetaData.ABI @@ -239,28 +239,29 @@ func (_CapabilityRegistry *CapabilityRegistryCallerSession) GetCapability(hashed return _CapabilityRegistry.Contract.GetCapability(&_CapabilityRegistry.CallOpts, hashedId) } -func (_CapabilityRegistry *CapabilityRegistryCaller) GetDON(opts *bind.CallOpts, donId uint32) (uint32, bool, [][32]byte, []CapabilityRegistryCapabilityConfiguration, error) { +func (_CapabilityRegistry *CapabilityRegistryCaller) GetDON(opts *bind.CallOpts, donId uint32) (uint32, uint32, bool, [][32]byte, []CapabilityRegistryCapabilityConfiguration, error) { var out []interface{} err := _CapabilityRegistry.contract.Call(opts, &out, "getDON", donId) if err != nil { - return *new(uint32), *new(bool), *new([][32]byte), *new([]CapabilityRegistryCapabilityConfiguration), err + return *new(uint32), *new(uint32), *new(bool), *new([][32]byte), *new([]CapabilityRegistryCapabilityConfiguration), err } out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - out1 := *abi.ConvertType(out[1], new(bool)).(*bool) - out2 := *abi.ConvertType(out[2], new([][32]byte)).(*[][32]byte) - out3 := *abi.ConvertType(out[3], new([]CapabilityRegistryCapabilityConfiguration)).(*[]CapabilityRegistryCapabilityConfiguration) + out1 := *abi.ConvertType(out[1], new(uint32)).(*uint32) + out2 := *abi.ConvertType(out[2], new(bool)).(*bool) + out3 := *abi.ConvertType(out[3], new([][32]byte)).(*[][32]byte) + out4 := *abi.ConvertType(out[4], new([]CapabilityRegistryCapabilityConfiguration)).(*[]CapabilityRegistryCapabilityConfiguration) - return out0, out1, out2, out3, err + return out0, out1, out2, out3, out4, err } -func (_CapabilityRegistry *CapabilityRegistrySession) GetDON(donId uint32) (uint32, bool, [][32]byte, []CapabilityRegistryCapabilityConfiguration, error) { +func (_CapabilityRegistry *CapabilityRegistrySession) GetDON(donId uint32) (uint32, uint32, bool, [][32]byte, []CapabilityRegistryCapabilityConfiguration, error) { return _CapabilityRegistry.Contract.GetDON(&_CapabilityRegistry.CallOpts, donId) } -func (_CapabilityRegistry *CapabilityRegistryCallerSession) GetDON(donId uint32) (uint32, bool, [][32]byte, []CapabilityRegistryCapabilityConfiguration, error) { +func (_CapabilityRegistry *CapabilityRegistryCallerSession) GetDON(donId uint32) (uint32, uint32, bool, [][32]byte, []CapabilityRegistryCapabilityConfiguration, error) { return _CapabilityRegistry.Contract.GetDON(&_CapabilityRegistry.CallOpts, donId) } @@ -539,6 +540,18 @@ func (_CapabilityRegistry *CapabilityRegistryTransactorSession) TransferOwnershi return _CapabilityRegistry.Contract.TransferOwnership(&_CapabilityRegistry.TransactOpts, to) } +func (_CapabilityRegistry *CapabilityRegistryTransactor) UpdateDON(opts *bind.TransactOpts, donId uint32, nodes [][32]byte, capabilityConfigurations []CapabilityRegistryCapabilityConfiguration, isPublic bool) (*types.Transaction, error) { + return _CapabilityRegistry.contract.Transact(opts, "updateDON", donId, nodes, capabilityConfigurations, isPublic) +} + +func (_CapabilityRegistry *CapabilityRegistrySession) UpdateDON(donId uint32, nodes [][32]byte, capabilityConfigurations []CapabilityRegistryCapabilityConfiguration, isPublic bool) (*types.Transaction, error) { + return _CapabilityRegistry.Contract.UpdateDON(&_CapabilityRegistry.TransactOpts, donId, nodes, capabilityConfigurations, isPublic) +} + +func (_CapabilityRegistry *CapabilityRegistryTransactorSession) UpdateDON(donId uint32, nodes [][32]byte, capabilityConfigurations []CapabilityRegistryCapabilityConfiguration, isPublic bool) (*types.Transaction, error) { + return _CapabilityRegistry.Contract.UpdateDON(&_CapabilityRegistry.TransactOpts, donId, nodes, capabilityConfigurations, isPublic) +} + func (_CapabilityRegistry *CapabilityRegistryTransactor) UpdateNodeOperators(opts *bind.TransactOpts, nodeOperatorIds []*big.Int, nodeOperators []CapabilityRegistryNodeOperator) (*types.Transaction, error) { return _CapabilityRegistry.contract.Transact(opts, "updateNodeOperators", nodeOperatorIds, nodeOperators) } @@ -817,8 +830,8 @@ func (_CapabilityRegistry *CapabilityRegistryFilterer) ParseCapabilityDeprecated return event, nil } -type CapabilityRegistryDONAddedIterator struct { - Event *CapabilityRegistryDONAdded +type CapabilityRegistryConfigSetIterator struct { + Event *CapabilityRegistryConfigSet contract *bind.BoundContract event string @@ -829,7 +842,7 @@ type CapabilityRegistryDONAddedIterator struct { fail error } -func (it *CapabilityRegistryDONAddedIterator) Next() bool { +func (it *CapabilityRegistryConfigSetIterator) Next() bool { if it.fail != nil { return false @@ -838,7 +851,7 @@ func (it *CapabilityRegistryDONAddedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(CapabilityRegistryDONAdded) + it.Event = new(CapabilityRegistryConfigSet) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -853,7 +866,7 @@ func (it *CapabilityRegistryDONAddedIterator) Next() bool { select { case log := <-it.logs: - it.Event = new(CapabilityRegistryDONAdded) + it.Event = new(CapabilityRegistryConfigSet) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -868,33 +881,33 @@ func (it *CapabilityRegistryDONAddedIterator) Next() bool { } } -func (it *CapabilityRegistryDONAddedIterator) Error() error { +func (it *CapabilityRegistryConfigSetIterator) Error() error { return it.fail } -func (it *CapabilityRegistryDONAddedIterator) Close() error { +func (it *CapabilityRegistryConfigSetIterator) Close() error { it.sub.Unsubscribe() return nil } -type CapabilityRegistryDONAdded struct { - DonId *big.Int - IsPublic bool - Raw types.Log +type CapabilityRegistryConfigSet struct { + DonId uint32 + ConfigCount uint32 + Raw types.Log } -func (_CapabilityRegistry *CapabilityRegistryFilterer) FilterDONAdded(opts *bind.FilterOpts) (*CapabilityRegistryDONAddedIterator, error) { +func (_CapabilityRegistry *CapabilityRegistryFilterer) FilterConfigSet(opts *bind.FilterOpts) (*CapabilityRegistryConfigSetIterator, error) { - logs, sub, err := _CapabilityRegistry.contract.FilterLogs(opts, "DONAdded") + logs, sub, err := _CapabilityRegistry.contract.FilterLogs(opts, "ConfigSet") if err != nil { return nil, err } - return &CapabilityRegistryDONAddedIterator{contract: _CapabilityRegistry.contract, event: "DONAdded", logs: logs, sub: sub}, nil + return &CapabilityRegistryConfigSetIterator{contract: _CapabilityRegistry.contract, event: "ConfigSet", logs: logs, sub: sub}, nil } -func (_CapabilityRegistry *CapabilityRegistryFilterer) WatchDONAdded(opts *bind.WatchOpts, sink chan<- *CapabilityRegistryDONAdded) (event.Subscription, error) { +func (_CapabilityRegistry *CapabilityRegistryFilterer) WatchConfigSet(opts *bind.WatchOpts, sink chan<- *CapabilityRegistryConfigSet) (event.Subscription, error) { - logs, sub, err := _CapabilityRegistry.contract.WatchLogs(opts, "DONAdded") + logs, sub, err := _CapabilityRegistry.contract.WatchLogs(opts, "ConfigSet") if err != nil { return nil, err } @@ -904,8 +917,8 @@ func (_CapabilityRegistry *CapabilityRegistryFilterer) WatchDONAdded(opts *bind. select { case log := <-logs: - event := new(CapabilityRegistryDONAdded) - if err := _CapabilityRegistry.contract.UnpackLog(event, "DONAdded", log); err != nil { + event := new(CapabilityRegistryConfigSet) + if err := _CapabilityRegistry.contract.UnpackLog(event, "ConfigSet", log); err != nil { return err } event.Raw = log @@ -926,126 +939,9 @@ func (_CapabilityRegistry *CapabilityRegistryFilterer) WatchDONAdded(opts *bind. }), nil } -func (_CapabilityRegistry *CapabilityRegistryFilterer) ParseDONAdded(log types.Log) (*CapabilityRegistryDONAdded, error) { - event := new(CapabilityRegistryDONAdded) - if err := _CapabilityRegistry.contract.UnpackLog(event, "DONAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -type CapabilityRegistryDONRemovedIterator struct { - Event *CapabilityRegistryDONRemoved - - contract *bind.BoundContract - event string - - logs chan types.Log - sub ethereum.Subscription - done bool - fail error -} - -func (it *CapabilityRegistryDONRemovedIterator) Next() bool { - - if it.fail != nil { - return false - } - - if it.done { - select { - case log := <-it.logs: - it.Event = new(CapabilityRegistryDONRemoved) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - - select { - case log := <-it.logs: - it.Event = new(CapabilityRegistryDONRemoved) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -func (it *CapabilityRegistryDONRemovedIterator) Error() error { - return it.fail -} - -func (it *CapabilityRegistryDONRemovedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -type CapabilityRegistryDONRemoved struct { - DonId uint32 - Raw types.Log -} - -func (_CapabilityRegistry *CapabilityRegistryFilterer) FilterDONRemoved(opts *bind.FilterOpts) (*CapabilityRegistryDONRemovedIterator, error) { - - logs, sub, err := _CapabilityRegistry.contract.FilterLogs(opts, "DONRemoved") - if err != nil { - return nil, err - } - return &CapabilityRegistryDONRemovedIterator{contract: _CapabilityRegistry.contract, event: "DONRemoved", logs: logs, sub: sub}, nil -} - -func (_CapabilityRegistry *CapabilityRegistryFilterer) WatchDONRemoved(opts *bind.WatchOpts, sink chan<- *CapabilityRegistryDONRemoved) (event.Subscription, error) { - - logs, sub, err := _CapabilityRegistry.contract.WatchLogs(opts, "DONRemoved") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - - event := new(CapabilityRegistryDONRemoved) - if err := _CapabilityRegistry.contract.UnpackLog(event, "DONRemoved", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -func (_CapabilityRegistry *CapabilityRegistryFilterer) ParseDONRemoved(log types.Log) (*CapabilityRegistryDONRemoved, error) { - event := new(CapabilityRegistryDONRemoved) - if err := _CapabilityRegistry.contract.UnpackLog(event, "DONRemoved", log); err != nil { +func (_CapabilityRegistry *CapabilityRegistryFilterer) ParseConfigSet(log types.Log) (*CapabilityRegistryConfigSet, error) { + event := new(CapabilityRegistryConfigSet) + if err := _CapabilityRegistry.contract.UnpackLog(event, "ConfigSet", log); err != nil { return nil, err } event.Raw = log @@ -2060,10 +1956,8 @@ func (_CapabilityRegistry *CapabilityRegistry) ParseLog(log types.Log) (generate return _CapabilityRegistry.ParseCapabilityAdded(log) case _CapabilityRegistry.abi.Events["CapabilityDeprecated"].ID: return _CapabilityRegistry.ParseCapabilityDeprecated(log) - case _CapabilityRegistry.abi.Events["DONAdded"].ID: - return _CapabilityRegistry.ParseDONAdded(log) - case _CapabilityRegistry.abi.Events["DONRemoved"].ID: - return _CapabilityRegistry.ParseDONRemoved(log) + case _CapabilityRegistry.abi.Events["ConfigSet"].ID: + return _CapabilityRegistry.ParseConfigSet(log) case _CapabilityRegistry.abi.Events["NodeAdded"].ID: return _CapabilityRegistry.ParseNodeAdded(log) case _CapabilityRegistry.abi.Events["NodeOperatorAdded"].ID: @@ -2094,12 +1988,8 @@ func (CapabilityRegistryCapabilityDeprecated) Topic() common.Hash { return common.HexToHash("0xdcea1b78b6ddc31592a94607d537543fcaafda6cc52d6d5cc7bbfca1422baf21") } -func (CapabilityRegistryDONAdded) Topic() common.Hash { - return common.HexToHash("0xab55f4c8fb4335a586285ae209d1f1e17a7ccb22e1131963624434d98c8546a5") -} - -func (CapabilityRegistryDONRemoved) Topic() common.Hash { - return common.HexToHash("0x7c551c5f33df1b67ff1dee6d812a4a2ea076c2a5bea7d3da390a75619df1553e") +func (CapabilityRegistryConfigSet) Topic() common.Hash { + return common.HexToHash("0xf264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651") } func (CapabilityRegistryNodeAdded) Topic() common.Hash { @@ -2143,7 +2033,7 @@ type CapabilityRegistryInterface interface { GetCapability(opts *bind.CallOpts, hashedId [32]byte) (CapabilityRegistryCapability, error) - GetDON(opts *bind.CallOpts, donId uint32) (uint32, bool, [][32]byte, []CapabilityRegistryCapabilityConfiguration, error) + GetDON(opts *bind.CallOpts, donId uint32) (uint32, uint32, bool, [][32]byte, []CapabilityRegistryCapabilityConfiguration, error) GetDONCapabilityConfig(opts *bind.CallOpts, donId uint32, capabilityId [32]byte) ([]byte, error) @@ -2179,6 +2069,8 @@ type CapabilityRegistryInterface interface { TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) + UpdateDON(opts *bind.TransactOpts, donId uint32, nodes [][32]byte, capabilityConfigurations []CapabilityRegistryCapabilityConfiguration, isPublic bool) (*types.Transaction, error) + UpdateNodeOperators(opts *bind.TransactOpts, nodeOperatorIds []*big.Int, nodeOperators []CapabilityRegistryNodeOperator) (*types.Transaction, error) UpdateNodes(opts *bind.TransactOpts, nodes []CapabilityRegistryNodeParams) (*types.Transaction, error) @@ -2195,17 +2087,11 @@ type CapabilityRegistryInterface interface { ParseCapabilityDeprecated(log types.Log) (*CapabilityRegistryCapabilityDeprecated, error) - FilterDONAdded(opts *bind.FilterOpts) (*CapabilityRegistryDONAddedIterator, error) - - WatchDONAdded(opts *bind.WatchOpts, sink chan<- *CapabilityRegistryDONAdded) (event.Subscription, error) - - ParseDONAdded(log types.Log) (*CapabilityRegistryDONAdded, error) - - FilterDONRemoved(opts *bind.FilterOpts) (*CapabilityRegistryDONRemovedIterator, error) + FilterConfigSet(opts *bind.FilterOpts) (*CapabilityRegistryConfigSetIterator, error) - WatchDONRemoved(opts *bind.WatchOpts, sink chan<- *CapabilityRegistryDONRemoved) (event.Subscription, error) + WatchConfigSet(opts *bind.WatchOpts, sink chan<- *CapabilityRegistryConfigSet) (event.Subscription, error) - ParseDONRemoved(log types.Log) (*CapabilityRegistryDONRemoved, error) + ParseConfigSet(log types.Log) (*CapabilityRegistryConfigSet, error) FilterNodeAdded(opts *bind.FilterOpts) (*CapabilityRegistryNodeAddedIterator, error) diff --git a/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 42a476c06f9..1c57c977792 100644 --- a/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -1,4 +1,4 @@ GETH_VERSION: 1.13.8 forwarder: ../../../contracts/solc/v0.8.19/KeystoneForwarder/KeystoneForwarder.abi ../../../contracts/solc/v0.8.19/KeystoneForwarder/KeystoneForwarder.bin b4c900aae9e022f01abbac7993d41f93912247613ac6270b0c4da4ef6f2016e3 -keystone_capability_registry: ../../../contracts/solc/v0.8.19/CapabilityRegistry/CapabilityRegistry.abi ../../../contracts/solc/v0.8.19/CapabilityRegistry/CapabilityRegistry.bin 7ba965f4538c0be63c94335c602916e423e2437680e47281db28a8e521a8db68 +keystone_capability_registry: ../../../contracts/solc/v0.8.19/CapabilityRegistry/CapabilityRegistry.abi ../../../contracts/solc/v0.8.19/CapabilityRegistry/CapabilityRegistry.bin 9071d50b46256a36b777ff444a58354c318d7d6bbe86a9ae28bf91a664502fc9 ocr3_capability: ../../../contracts/solc/v0.8.19/OCR3Capability/OCR3Capability.abi ../../../contracts/solc/v0.8.19/OCR3Capability/OCR3Capability.bin 9dcbdf55bd5729ba266148da3f17733eb592c871c2108ccca546618628fd9ad2