29 lines
950 B
Solidity
29 lines
950 B
Solidity
// SPDX-License-Identifier: MIT
|
|
|
|
pragma solidity ^0.7.2;
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
interface IDiamondCut {
|
|
enum FacetCutAction {Add, Replace, Remove}
|
|
|
|
struct FacetCut {
|
|
address facetAddress;
|
|
FacetCutAction action;
|
|
bytes4[] functionSelectors;
|
|
}
|
|
|
|
/// @notice Add/replace/remove any number of functions and optionally execute
|
|
/// a function with delegatecall
|
|
/// @param _diamondCut Contains the facet addresses and function selectors
|
|
/// @param _init The address of the contract or facet to execute _calldata
|
|
/// @param _calldata A function call, including function selector and arguments
|
|
/// _calldata is executed with delegatecall on _init
|
|
function diamondCut(
|
|
FacetCut[] calldata _diamondCut,
|
|
address _init,
|
|
bytes calldata _calldata
|
|
) external;
|
|
|
|
event DiamondCut(FacetCut[] diamondCut, address init, bytes _calldata);
|
|
}
|