Skip to content

Commit

Permalink
[MOON-1868] pre-define solidity contract instances and address (#1861)
Browse files Browse the repository at this point in the history
* pre-define solidity contract instances and address

* add constants and use them

* fix tests
  • Loading branch information
nbaztec authored Oct 25, 2022
1 parent 264138e commit 17048d9
Show file tree
Hide file tree
Showing 74 changed files with 59,188 additions and 58,563 deletions.
8 changes: 8 additions & 0 deletions precompiles/author-mapping/AuthorMappingInterface.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The AuthorMapping contract's address.
address constant AUTHOR_MAPPING_ADDRESS = 0x0000000000000000000000000000000000000807;

/// @dev The AuthorMapping contract's instance.
AuthorMapping constant AUTHOR_MAPPING_CONTRACT = AuthorMapping(
AUTHOR_MAPPING_ADDRESS
);

/// @author The Moonbeam Team
/// @title Pallet AuthorMapping Interface
/// @dev The interface through which solidity contracts will interact with pallet-author.mapping
Expand Down
6 changes: 6 additions & 0 deletions precompiles/balances-erc20/ERC20.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The IERC20 contract's address.
address constant IERC20_ADDRESS = 0x0000000000000000000000000000000000000802;

/// @dev The IERC20 contract's instance.
IERC20 constant IERC20_CONTRACT = IERC20(IERC20_ADDRESS);

/// @title ERC20 interface
/// @dev see https://github.com/ethereum/EIPs/issues/20
/// @dev copied from https://github.com/OpenZeppelin/openzeppelin-contracts
Expand Down
6 changes: 6 additions & 0 deletions precompiles/batch/Batch.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The Batch contract's address.
address constant BATCH_ADDRESS = 0x0000000000000000000000000000000000000808;

/// @dev The Batch contract's instance.
Batch constant BATCH_CONTRACT = Batch(BATCH_ADDRESS);

/// @author The Moonbeam Team
/// @title Batch precompile
/// @dev Allows to perform multiple calls throught one call to the precompile.
Expand Down
6 changes: 6 additions & 0 deletions precompiles/call-permit/CallPermit.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The CallPermit contract's address.
address constant CALL_PERMIT_ADDRESS = 0x000000000000000000000000000000000000080a;

/// @dev The CallPermit contract's instance.
CallPermit constant CALL_PERMIT_CONTRACT = CallPermit(CALL_PERMIT_ADDRESS);

/// @author The Moonbeam Team
/// @title Call Permit Interface
/// @dev The interface aims to be a general-purpose tool to perform gas-less transactions. It uses the EIP-712 standard,
Expand Down
20 changes: 20 additions & 0 deletions precompiles/collective/Collective.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,26 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The Collective Council contract's address.
address constant COLLECTIVE_COUNCIL_ADDRESS = 0x000000000000000000000000000000000000080e;
/// @dev The Collective Technical Committee contract's address.
address constant COLLECTIVE_TECHNICAL_ADDRESS = 0x000000000000000000000000000000000000080F;
/// @dev The Collective Treasury Council contract's address.
address constant COLLECTIVE_TREASURY_ADDRESS = 0x0000000000000000000000000000000000000810;

/// @dev The Collective Council contract's instance.
Collective constant COLLECTIVE_COUNCIL_CONTRACT = Collective(
COLLECTIVE_COUNCIL_ADDRESS
);
/// @dev The Collective Technical Committee contract's instance.
Collective constant COLLECTIVE_TECHNICAL_CONTRACT = Collective(
COLLECTIVE_TECHNICAL_ADDRESS
);
/// @dev The Collective Treasury Council contract's instance.
Collective constant COLLECTIVE_TREASURY_CONTRACT = Collective(
COLLECTIVE_TREASURY_ADDRESS
);

/// @title Collective precompile
/// Allows to interact with Substrate pallet_collective from the EVM.
/// Addresses:
Expand Down
8 changes: 8 additions & 0 deletions precompiles/crowdloan-rewards/CrowdloanInterface.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The CrowdloanRewards contract's address.
address constant CROWDLOAN_REWARDS_ADDRESS = 0x0000000000000000000000000000000000000801;

/// @dev The CrowdloanRewards contract's instance.
CrowdloanRewards constant CROWDLOAN_REWARDS_CONTRACT = CrowdloanRewards(
CROWDLOAN_REWARDS_ADDRESS
);

/// @author The Moonbeam Team
/// @title Pallet Crowdloan Rewards Interface
/// @dev The interface through which solidity contracts will interact with Crowdloan Rewards. We
Expand Down
6 changes: 6 additions & 0 deletions precompiles/pallet-democracy/DemocracyInterface.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The Democracy contract's address.
address constant DEMOCRACY_ADDRESS = 0x0000000000000000000000000000000000000803;

/// @dev The Democracy contract's instance.
Democracy constant DEMOCRACY_CONTRACT = Democracy(DEMOCRACY_ADDRESS);

/// @author The Moonbeam Team
/// @title Pallet Democracy Interface
/// @dev The interface through which solidity contracts will interact with pallet-democracy.
Expand Down
8 changes: 8 additions & 0 deletions precompiles/parachain-staking/StakingInterface.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The ParachainStaking contract's address.
address constant PARACHAIN_STAKING_ADDRESS = 0x0000000000000000000000000000000000000800;

/// @dev The ParachainStaking contract's instance.
ParachainStaking constant PARACHAIN_STAKING_CONTRACT = ParachainStaking(
PARACHAIN_STAKING_ADDRESS
);

/// @author The Moonbeam Team
/// @title Pallet Parachain Staking Interface
/// @dev The interface through which solidity contracts will interact with Parachain Staking
Expand Down
6 changes: 6 additions & 0 deletions precompiles/proxy/Proxy.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The Proxy contract's address.
address constant PROXY_ADDRESS = 0x000000000000000000000000000000000000080b;

/// @dev The Proxy contract's instance.
Proxy constant PROXY_CONTRACT = Proxy(PROXY_ADDRESS);

/// @author The Moonbeam Team
/// @title Pallet Proxy Interface
/// @title The interface through which solidity contracts will interact with the Proxy pallet
Expand Down
6 changes: 6 additions & 0 deletions precompiles/randomness/Randomness.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The Randomness contract's address.
address constant RANDOMNESS_ADDRESS = 0x0000000000000000000000000000000000000809;

/// @dev The Randomness contract's instance.
Randomness constant RANDOMNESS_CONTRACT = Randomness(RANDOMNESS_ADDRESS);

/// @dev Maximum number of random words being requested
uint32 constant MAX_RANDOM_WORDS = 100;
/// @dev Minimum number of blocks before a request can be fulfilled for Local VRF Request
Expand Down
7 changes: 5 additions & 2 deletions precompiles/randomness/RandomnessConsumer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.3;

/// @dev The Randomness contract's address.
address constant RANDOMNESS_ADDRESS = 0x0000000000000000000000000000000000000809;

/** ****************************************************************************
* @notice Interface for contracts using VRF randomness
* *****************************************************************************
Expand Down Expand Up @@ -112,10 +115,10 @@ abstract contract RandomnessConsumer {
uint256 requestId,
uint256[] memory randomWords
) external {
if (msg.sender != 0x0000000000000000000000000000000000000809) {
if (msg.sender != RANDOMNESS_ADDRESS) {
revert OnlyRandomnessPrecompileCanFulfill(
msg.sender,
0x0000000000000000000000000000000000000809
RANDOMNESS_ADDRESS
);
}
fulfillRandomWords(requestId, randomWords);
Expand Down
8 changes: 8 additions & 0 deletions precompiles/relay-encoder/RelayEncoder.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The RelayEncoder contract's address.
address constant RELAY_ENCODER_ADDRESS = 0x0000000000000000000000000000000000000805;

/// @dev The RelayEncoder contract's instance.
RelayEncoder constant RELAY_ENCODER_CONTRACT = RelayEncoder(
RELAY_ENCODER_ADDRESS
);

/// @author The Moonbeam Team
/// @title Pallet Relay Encoder Interface
/// @dev The interface through which solidity contracts will interact with Relay Encoder
Expand Down
14 changes: 11 additions & 3 deletions precompiles/xcm-transactor/src/v1/XcmTransactorV1.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The XcmTransactorV1 contract's address.
address constant XCM_TRANSACTOR_V1_ADDRESS = 0x0000000000000000000000000000000000000806;

/// @dev The XcmTransactorV1 contract's instance.
XcmTransactorV1 constant XCM_TRANSACTOR_V1_CONTRACT = XcmTransactorV1(
XCM_TRANSACTOR_V1_ADDRESS
);

/// @author The Moonbeam Team
/// @title Xcm Transactor Interface
/// @dev The interface through which solidity contracts will interact with xcm transactor pallet
Expand All @@ -17,7 +25,7 @@ interface XcmTransactorV1 {
/// @param index The index of which we want to retrieve the account
/// @return owner The owner of the derivative index
///
function indexToAccount(uint16 index) external view returns(address owner);
function indexToAccount(uint16 index) external view returns (address owner);

/// DEPRECATED, replaced by transactInfoWithSigned
/// Get transact info of a multilocation
Expand Down Expand Up @@ -67,7 +75,7 @@ interface XcmTransactorV1 {
/// @dev The token transfer burns/transfers the corresponding amount before sending
/// @param transactor The transactor to be used
/// @param index The index to be used
/// @param feeAsset The asset in which we want to pay fees.
/// @param feeAsset The asset in which we want to pay fees.
/// It has to be a reserve of the destination chain
/// @param weight The weight we want to buy in the destination chain
/// @param innerCall The inner call to be executed in the destination chain
Expand Down Expand Up @@ -129,4 +137,4 @@ interface XcmTransactorV1 {
uint64 weight,
bytes memory call
) external;
}
}
9 changes: 9 additions & 0 deletions precompiles/xcm-transactor/src/v2/XcmTransactorV2.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.0;

/// @dev The XcmTransactorV2 contract's address.
address constant XCM_TRANSACTOR_V2_ADDRESS = 0x000000000000000000000000000000000000080D;

/// @dev The XcmTransactorV2 contract's instance.
XcmTransactorV2 constant XCM_TRANSACTOR_V2_CONTRACT = XcmTransactorV2(
XCM_TRANSACTOR_V2_ADDRESS
);

/// @author The Moonbeam Team
/// @title Xcm Transactor Interface
/// The interface through which solidity contracts will interact with xcm transactor pallet
/// @custom:address 0x000000000000000000000000000000000000080D
Expand Down
8 changes: 7 additions & 1 deletion precompiles/xcm-utils/XcmUtils.sol
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The XcmUtils contract's address.
address constant XCM_UTILS_ADDRESS = 0x000000000000000000000000000000000000080C;

/// @dev The XcmUtils contract's instance.
XcmUtils constant XCM_UTILS_CONTRACT = XcmUtils(XCM_UTILS_ADDRESS);

/// @author The Moonbeam Team
/// @title Xcm Utils Interface
/// The interface through which solidity contracts will interact with xcm utils pallet
/// @custom:address 0x000000000000000000000000000000000000080C

interface XcmUtils {
// A multilocation is defined by its number of parents and the encoded junctions (interior)
struct Multilocation {
Expand Down
6 changes: 6 additions & 0 deletions precompiles/xtokens/Xtokens.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.3;

/// @dev The Xtokens contract's address.
address constant XTOKENS_ADDRESS = 0x0000000000000000000000000000000000000804;

/// @dev The Xtokens contract's instance.
Xtokens constant XTOKENS_CONTRACT = Xtokens(XTOKENS_ADDRESS);

/// @author The Moonbeam Team
/// @title Xtokens Interface
/// @dev The interface through which solidity contracts will interact with xtokens pallet
Expand Down
4 changes: 2 additions & 2 deletions tests/contracts/compiled/AuthorMapping.json
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,9 @@
}
},
"ewasm": { "wasm": "" },
"metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nimbusId\",\"type\":\"bytes32\"}],\"name\":\"addAssociation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nimbusId\",\"type\":\"bytes32\"}],\"name\":\"clearAssociation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeKeys\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"keys\",\"type\":\"bytes\"}],\"name\":\"setKeys\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"oldNimbusId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newNimbusId\",\"type\":\"bytes32\"}],\"name\":\"updateAssociation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Moonbeam Team\",\"custom:address\":\"0x0000000000000000000000000000000000000807\",\"details\":\"The interface through which solidity contracts will interact with pallet-author.mapping\",\"kind\":\"dev\",\"methods\":{\"addAssociation(bytes32)\":{\"custom:selector\":\"ef8b6cd8\",\"details\":\"Add association\",\"params\":{\"nimbusId\":\"The nimbusId to be associated\"}},\"clearAssociation(bytes32)\":{\"custom:selector\":\"448b54d6\",\"details\":\"Clear existing association\",\"params\":{\"nimbusId\":\"The nimbusId to be cleared\"}},\"removeKeys()\":{\"custom:selector\":\"a36fee17\",\"details\":\"Remove keys\"},\"setKeys(bytes)\":{\"custom:selector\":\"f1ec919c\",\"details\":\"Set keys\",\"params\":{\"keys\":\"The new session keys\"}},\"updateAssociation(bytes32,bytes32)\":{\"custom:selector\":\"25a39da5\",\"details\":\"Update existing association\",\"params\":{\"newNimbusId\":\"The new nimbusId to be associated\",\"oldNimbusId\":\"The old nimbusId to be replaced\"}}},\"title\":\"Pallet AuthorMapping Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"main.sol\":\"AuthorMapping\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"main.sol\":{\"keccak256\":\"0xdea0684af597742743af5415a0cb30c3e7000c54c6a27ddc8c675a47bd1dd738\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://8a5a7949a020e796e789f0ec5e31676c0d68240c0dfa0759818e6657230f5170\",\"dweb:/ipfs/QmdM5gJo5GVdLLKXSNahW4PvFvj81bhpYzb37qRFhW2wju\"]}},\"version\":1}",
"metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nimbusId\",\"type\":\"bytes32\"}],\"name\":\"addAssociation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nimbusId\",\"type\":\"bytes32\"}],\"name\":\"clearAssociation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeKeys\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"keys\",\"type\":\"bytes\"}],\"name\":\"setKeys\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"oldNimbusId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newNimbusId\",\"type\":\"bytes32\"}],\"name\":\"updateAssociation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Moonbeam Team\",\"custom:address\":\"0x0000000000000000000000000000000000000807\",\"details\":\"The interface through which solidity contracts will interact with pallet-author.mapping\",\"kind\":\"dev\",\"methods\":{\"addAssociation(bytes32)\":{\"custom:selector\":\"ef8b6cd8\",\"details\":\"Add association\",\"params\":{\"nimbusId\":\"The nimbusId to be associated\"}},\"clearAssociation(bytes32)\":{\"custom:selector\":\"448b54d6\",\"details\":\"Clear existing association\",\"params\":{\"nimbusId\":\"The nimbusId to be cleared\"}},\"removeKeys()\":{\"custom:selector\":\"a36fee17\",\"details\":\"Remove keys\"},\"setKeys(bytes)\":{\"custom:selector\":\"f1ec919c\",\"details\":\"Set keys\",\"params\":{\"keys\":\"The new session keys\"}},\"updateAssociation(bytes32,bytes32)\":{\"custom:selector\":\"25a39da5\",\"details\":\"Update existing association\",\"params\":{\"newNimbusId\":\"The new nimbusId to be associated\",\"oldNimbusId\":\"The old nimbusId to be replaced\"}}},\"title\":\"Pallet AuthorMapping Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"main.sol\":\"AuthorMapping\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"main.sol\":{\"keccak256\":\"0x9e26bde1df7c18ce8895281dba5786f9669cc1c0e2dbb5f69aeecb2d065ab8a8\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://9fe4c69a11fa68d4fc5e2cd6b9882eb7e0c0df747e7bec20b6db906147ee6429\",\"dweb:/ipfs/QmUmmzfWkd6iYXP1P8nWL4jwaduBDWHUvj1Rhnu5pKA9pz\"]}},\"version\":1}",
"storageLayout": { "storage": [], "types": null },
"userdoc": { "kind": "user", "methods": {}, "version": 1 }
},
"sourceCode": "// SPDX-License-Identifier: GPL-3.0-only\npragma solidity >=0.8.3;\n\n/// @author The Moonbeam Team\n/// @title Pallet AuthorMapping Interface\n/// @dev The interface through which solidity contracts will interact with pallet-author.mapping\n/// @custom:address 0x0000000000000000000000000000000000000807\ninterface AuthorMapping {\n /// @dev Add association\n /// @custom:selector ef8b6cd8\n ///\n /// @param nimbusId The nimbusId to be associated\n function addAssociation(bytes32 nimbusId) external;\n\n /// @dev Update existing association\n /// @custom:selector 25a39da5\n ///\n /// @param oldNimbusId The old nimbusId to be replaced\n /// @param newNimbusId The new nimbusId to be associated\n function updateAssociation(bytes32 oldNimbusId, bytes32 newNimbusId)\n external;\n\n /// @dev Clear existing association\n /// @custom:selector 448b54d6\n ///\n /// @param nimbusId The nimbusId to be cleared\n function clearAssociation(bytes32 nimbusId) external;\n\n /// @dev Remove keys\n /// @custom:selector a36fee17\n ///\n function removeKeys() external;\n\n /// @dev Set keys\n /// @custom:selector f1ec919c\n ///\n /// @param keys The new session keys\n function setKeys(bytes memory keys) external;\n}\n"
"sourceCode": "// SPDX-License-Identifier: GPL-3.0-only\npragma solidity >=0.8.3;\n\n/// @dev The AuthorMapping contract's address.\naddress constant AUTHOR_MAPPING_ADDRESS = 0x0000000000000000000000000000000000000807;\n\n/// @dev The AuthorMapping contract's instance.\nAuthorMapping constant AUTHOR_MAPPING_CONTRACT = AuthorMapping(\n AUTHOR_MAPPING_ADDRESS\n);\n\n/// @author The Moonbeam Team\n/// @title Pallet AuthorMapping Interface\n/// @dev The interface through which solidity contracts will interact with pallet-author.mapping\n/// @custom:address 0x0000000000000000000000000000000000000807\ninterface AuthorMapping {\n /// @dev Add association\n /// @custom:selector ef8b6cd8\n ///\n /// @param nimbusId The nimbusId to be associated\n function addAssociation(bytes32 nimbusId) external;\n\n /// @dev Update existing association\n /// @custom:selector 25a39da5\n ///\n /// @param oldNimbusId The old nimbusId to be replaced\n /// @param newNimbusId The new nimbusId to be associated\n function updateAssociation(bytes32 oldNimbusId, bytes32 newNimbusId)\n external;\n\n /// @dev Clear existing association\n /// @custom:selector 448b54d6\n ///\n /// @param nimbusId The nimbusId to be cleared\n function clearAssociation(bytes32 nimbusId) external;\n\n /// @dev Remove keys\n /// @custom:selector a36fee17\n ///\n function removeKeys() external;\n\n /// @dev Set keys\n /// @custom:selector f1ec919c\n ///\n /// @param keys The new session keys\n function setKeys(bytes memory keys) external;\n}\n"
}
Loading

0 comments on commit 17048d9

Please sign in to comment.