kopia lustrzana https://github.com/bugout-dev/dao
35 wiersze
1.1 KiB
Solidity
35 wiersze
1.1 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.0;
|
|
|
|
// Adapted from the Diamond 3 reference implementation by Nick Mudge:
|
|
// https://github.com/mudgen/diamond-3-hardhat
|
|
|
|
interface IDiamondCut {
|
|
enum FacetCutAction {
|
|
Add,
|
|
Replace,
|
|
Remove
|
|
}
|
|
// Add=0, Replace=1, Remove=2
|
|
|
|
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);
|
|
}
|