Skip to content

Solidity API

IDiamondCut

Interface for diamond cut functionality in EIP-2535 Diamonds

Defines the structure and function for modifying a diamond's facets

FacetCutAction

Enum representing the possible actions for a facet cut

Add=0, Replace=1, Remove=2

solidity
enum FacetCutAction {
  Add,
  Replace,
  Remove
}

FacetCut

Struct representing a single facet modification

Used to specify the details of a facet to be added, replaced, or removed

solidity
struct FacetCut {
  address facetAddress;
  enum IDiamondCut.FacetCutAction action;
  bytes4[] functionSelectors;
}

diamondCut

solidity
function diamondCut(struct IDiamondCut.FacetCut[] _diamondCut, struct IPropsInitCall.InitCall[] _initCalls) external

Modifies the diamond's facets and optionally executes initialization functions

This function can add, replace, or remove any number of functions from the diamond

Parameters

NameTypeDescription
_diamondCutstruct IDiamondCut.FacetCut[]An array of FacetCut structs containing the facet modifications
_initCallsstruct IPropsInitCall.InitCall[]An array of initialization calls to be executed after the diamond cut

DiamondCut

solidity
event DiamondCut(struct IDiamondCut.FacetCut[] _diamondCut, struct IPropsInitCall.InitCall[] _initCalls)

Event emitted when a diamond cut is performed

Parameters

NameTypeDescription
_diamondCutstruct IDiamondCut.FacetCut[]The array of FacetCut structs containing the facet modifications
_initCallsstruct IPropsInitCall.InitCall[]The array of initialization calls executed after the diamond cut