// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.0; import "./interface/ILightClient.sol"; abstract contract Config { uint8 public constant TRANSFER_IN_CHANNEL_ID = 0x01; uint8 public constant TRANSFER_OUT_CHANNEL_ID = 0x02; uint8 public constant GOV_CHANNEL_ID = 0x03; uint8 public constant BUCKET_CHANNEL_ID = 0x04; uint8 public constant OBJECT_CHANNEL_ID = 0x05; uint8 public constant GROUP_CHANNEL_ID = 0x06; uint8 public constant PERMISSION_CHANNEL_ID = 0x07; uint8 public constant MULTI_MESSAGE_CHANNEL_ID = 0x08; uint8 public constant GNFD_EXECUTOR_CHANNEL_ID = 0x09; // contract address // will calculate their deployed addresses from deploy script address public constant PROXY_ADMIN = address(0); address public constant GOV_HUB = address(0); address public constant CROSS_CHAIN = address(0); address public constant TOKEN_HUB = address(0); address public constant LIGHT_CLIENT = address(0); address public constant RELAYER_HUB = address(0); address public constant BUCKET_HUB = address(0); address public constant OBJECT_HUB = address(0); address public constant GROUP_HUB = address(0); address public constant EMERGENCY_OPERATOR = address(0); address public constant EMERGENCY_UPGRADE_OPERATOR = address(0); address public constant PERMISSION_HUB = address(0); address public constant MULTI_MESSAGE = address(0); address public constant GNFD_EXECUTOR = address(0); // PlaceHolder reserve for future usage uint256[50] private configSlots; modifier onlyCrossChain() { require(msg.sender == CROSS_CHAIN, "only CrossChain contract"); _; } modifier onlyGov() { require(msg.sender == GOV_HUB, "only GovHub contract"); _; } modifier onlyEmergencyOperator() { require(msg.sender == EMERGENCY_OPERATOR, "only Emergency Operator"); _; } modifier onlyEmergencyUpgradeOperator() { require(msg.sender == EMERGENCY_UPGRADE_OPERATOR, "only Emergency Upgrade Operator"); _; } modifier onlyMultiMessage() { require(msg.sender == MULTI_MESSAGE, "only multiMessage"); _; } function _compareStrings(string memory a, string memory b) internal pure returns (bool) { return (keccak256(abi.encodePacked((a))) == keccak256(abi.encodePacked((b)))); } // Please note this is a weak check, don't use this when you need a strong verification. function _isContract(address account) internal view returns (bool) { return account.code.length > 0; } function versionInfo() external pure virtual returns (uint256 version, string memory name, string memory description) { return (0, "Config", ""); } }