Trading
- Trading Modes
- Assets & Contracts
- Trading Mechanics
- Risk Management
- Launchpad
- Trading View
MegaETH
Protocol Technical Reference
Contracts
CLOBManager.sol
CLOB Manager Contract
Types
Enums
enum FeeTiers {
ZERO,
ONE,
TWO
}
Structs
struct SettingsParams {
address owner;
uint8 maxLimitsPerTx;
uint256 minLimitOrderAmountInBase;
uint256 tickSize;
}
struct MakerCredit {
address maker;
uint256 quoteAmount;
uint256 baseAmount;
}
struct SettleParams {
address taker;
address quoteToken;
address baseToken;
Side side; // Defined in ICLOB or a common types contract
ICLOB.Settlement settlement; // Defined in ICLOB.sol
uint256 takerQuoteAmount;
uint256 takerBaseAmount;
MakerCredit[] makerCredits;
}
struct ConfigParams {
address quoteToken;
address baseToken;
uint256 quoteSize;
uint256 baseSize;
}
Reads
function approvedOperators(address account, address operator) external view returns (bool);
function beacon() external view returns (address);
function getAccountBalance(address account, address token) external view returns (uint256);
function getEventNonce() external view returns (uint256);
function getFeeRecipient() external view returns (address);
function getFeeTier(address account) external view returns (FeeTiers);
function getMakerFeeRate(FeeTiers feeTier) external view returns (uint16);
function getMarketAddress(address quoteToken, address baseToken) external view returns (address marketAddress);
function getTakerFeeRate(FeeTiers feeTier) external view returns (uint16);
function isMarket(address market) external view returns (bool);
function makerFees() external view returns (uint256); // Returns PackedFeeRates (a uint256)
function maxNumOrders() external view returns (uint256);
function owner() external view returns (address result);
function ownershipHandoverExpiresAt(address pendingOwner) external view returns (uint256 result);
function takerFees() external view returns (uint256); // Returns PackedFeeRates (a uint256)
Writes
function approveOperator(address operator) external;
function cancelOwnershipHandover() external payable;
function collectFees(address token) external returns (uint256 fee);
function completeOwnershipHandover(address pendingOwner) external payable;
function createMarket(address baseToken, address quoteToken, ICLOBManager.SettingsParams calldata settings) external returns (address marketAddress);
function creditAccount(address account, address token, uint256 amount) external;
function debitAccount(address account, address token, uint256 amount) external;
function deposit(address account, address token, uint256 amount, bool fromOperator) external;
function disapproveOperator(address operator) external;
function initialize(address _owner, address _feeRecipient) external;
function pullFromAccount(address account, address token, uint256 amount) external;
function pushToAccount(address account, address token, uint256 amount) external;
function renounceOwnership() external payable;
function requestOwnershipHandover() external payable;
function setAccountFeeTiers(address[] calldata accounts, FeeTiers[] calldata feeTiers) external;
function setFeeRecipient(address newFeeRecipient) external;
function settleIncomingOrder(SettleParams calldata params) external returns (uint256 takerFee);
function transferOwnership(address newOwner) external payable;
function withdraw(address account, address token, uint256 amount, bool toOperator) external;
Events
event AccountCredited(address indexed account, address indexed token, uint256 amount, uint256 eventNonce);
event AccountDebited(address indexed account, address indexed token, uint256 amount, uint256 eventNonce);
event AccountFeeTierUpdated(address indexed account, FeeTiers feeTier, uint256 eventNonce);
event Deposit(address indexed account, address indexed funder, address indexed token, uint256 amount, uint256 eventNonce);
event FeeCollected(address indexed token, uint256 fee, uint256 eventNonce);
event FeeRecipientSet(address indexed feeRecipient, uint256 eventNonce);
event Initialized(uint64 version);
event MarketCreated(address indexed creator, address indexed baseToken, address indexed quoteToken, address market, uint8 quoteDecimals, uint8 baseDecimals, ICLOBManager.ConfigParams config, ICLOBManager.SettingsParams settings, uint256 eventNonce);
event OperatorApproved(address indexed account, address indexed operator, uint256 eventNonce);
event OperatorDisapproved(address indexed account, address indexed operator, uint256 eventNonce);
event OwnershipHandoverCanceled(address indexed pendingOwner);
event OwnershipHandoverRequested(address indexed pendingOwner);
event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);
event Withdraw(address indexed account, address indexed recipient, address indexed token, uint256 amount, uint256 eventNonce);
Errors
error AlreadyInitialized();
error IndexOutOfBounds();
error InsufficientBalance();
error InvalidAccountOrOperator();
error InvalidBeaconAddress();
error InvalidFeeRecipient();
error InvalidInitialization();
error InvalidPair();
error InvalidSettings();
error InvalidTierLength_ReduceFeeTierEnumSize();
error InvalidTokenAddress();
error MarketAlreadyExists();
error MarketDoesNotExist();
error NewOwnerIsZeroAddress();
error NoHandoverRequest();
error NotInitializing();
error TooManyFeeTiers();
error Unauthorized();
error UnauthorizedMarket();
error UnmatchingArrayLengths();