[
  "function facets() pure returns (tuple(address facetAddress, bytes4[] functionSelectors)[])",
  "function facetFunctionSelectors(address facet) pure returns (bytes4[] functionSelectors)",
  "function facetAddresses() pure returns (address[] addresses)",
  "function facetAddress(bytes4 functionSelector) pure returns (address)",
  "function emitDiamondCutEvent() returns (bool)",
  "error ImplementationIsSterile(address implementation)",
  "error NoChange()",
  "error NotAContract(address contr)",
  "error NotNominated(address addr)",
  "error Unauthorized(address addr)",
  "error UpgradeSimulationFailed()",
  "error ZeroAddress()",
  "event OwnerChanged(address oldOwner, address newOwner)",
  "event OwnerNominated(address newOwner)",
  "event Upgraded(address indexed self, address implementation)",
  "function acceptOwnership()",
  "function getImplementation() view returns (address)",
  "function nominateNewOwner(address newNominatedOwner)",
  "function nominatedOwner() view returns (address)",
  "function owner() view returns (address)",
  "function renounceNomination()",
  "function simulateUpgradeTo(address newImplementation)",
  "function upgradeTo(address newImplementation)",
  "error MismatchAssociatedSystemKind(bytes32 expected, bytes32 actual)",
  "error MissingAssociatedSystem(bytes32 id)",
  "event AssociatedSystemSet(bytes32 indexed kind, bytes32 indexed id, address proxy, address impl)",
  "function getAssociatedSystem(bytes32 id) view returns (address addr, bytes32 kind)",
  "function initOrUpgradeNft(bytes32 id, string name, string symbol, string uri, address impl)",
  "function initOrUpgradeToken(bytes32 id, string name, string symbol, uint8 decimals, address impl)",
  "function registerUnmanagedSystem(bytes32 id, address endpoint)",
  "error AlreadyInitialized()",
  "error InsufficientAllowance(uint256 required, uint256 existing)",
  "error InsufficientBalance(uint256 required, uint256 existing)",
  "error InvalidParameter(string parameter, string reason)",
  "event Approval(address indexed owner, address indexed spender, uint256 amount)",
  "event Transfer(address indexed from, address indexed to, uint256 amount)",
  "function allowance(address owner, address spender) view returns (uint256)",
  "function approve(address spender, uint256 amount) returns (bool)",
  "function balanceOf(address owner) view returns (uint256)",
  "function burn(uint256 amount)",
  "function burn(address target, uint256 amount)",
  "function burnWithAllowance(address from, address spender, uint256 amount)",
  "function decimals() view returns (uint8)",
  "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)",
  "function increaseAllowance(address spender, uint256 addedValue) returns (bool)",
  "function initialize(string tokenName, string tokenSymbol, uint8 tokenDecimals)",
  "function isInitialized() view returns (bool)",
  "function mint(address target, uint256 amount)",
  "function name() view returns (string)",
  "function setAllowance(address from, address spender, uint256 amount)",
  "function symbol() view returns (string)",
  "function totalSupply() view returns (uint256)",
  "function transfer(address to, uint256 amount) returns (bool)",
  "function transferFrom(address from, address to, uint256 amount) returns (bool)"
]