OrderEscrowAccounting
Inherits: IOrderRouterAccounting
Constants
engine
ICfdEngineCore public immutable engine;
clearinghouse
IMarginClearinghouse internal immutable clearinghouse;
USDC
IERC20 internal immutable USDC;
State Variables
orderRecords
mapping(uint64 => OrderRecord) internal orderRecords;
pendingOrderCounts
mapping(bytes32 => uint256) public pendingOrderCounts;
pendingCloseSize
mapping(bytes32 => uint256) public pendingCloseSize;
accountHeadOrderId
mapping(bytes32 => uint64) public accountHeadOrderId;
accountTailOrderId
mapping(bytes32 => uint64) internal accountTailOrderId;
marginHeadOrderId
mapping(bytes32 => uint64) public marginHeadOrderId;
marginTailOrderId
mapping(bytes32 => uint64) public marginTailOrderId;
Functions
constructor
constructor(
address _engine
);
getAccountEscrow
function getAccountEscrow(
bytes32 accountId
) public view override returns (IOrderRouterAccounting.AccountEscrowView memory escrow);
_summarizePendingOrders
function _summarizePendingOrders(
bytes32 accountId
)
internal
view
returns (
uint256 pendingOrderCount,
uint256 executionBountyUsdc,
uint256 pendingCloseSize_,
bool hasTerminalCloseQueued
);
_nextCommitId
function _nextCommitId() internal view virtual returns (uint64);
getMarginReservationIds
function getMarginReservationIds(
bytes32 accountId
) public view override returns (uint64[] memory orderIds);
_reserveExecutionBounty
function _reserveExecutionBounty(
bytes32 accountId,
uint64 orderId,
uint256 sizeDelta,
uint256 executionBountyUsdc,
bool isClose
) internal;
_reserveCommittedMargin
function _reserveCommittedMargin(
bytes32 accountId,
uint64 orderId,
bool isClose,
uint256 marginDelta
) internal;
_consumeOrderEscrow
function _consumeOrderEscrow(
uint64 orderId,
bool success,
uint256 executionPrice,
uint64 oraclePublishTime
) internal returns (uint256 executionBountyUsdc);
_collectExecutionBounty
function _collectExecutionBounty(
uint64 orderId,
uint256 executionPrice,
uint64 oraclePublishTime
) internal returns (uint256 executionBountyUsdc);
_releaseCommittedMargin
function _releaseCommittedMargin(
uint64 orderId
) internal;
_linkMarginOrder
function _linkMarginOrder(
bytes32 accountId,
uint64 orderId
) internal;
_linkAccountOrder
function _linkAccountOrder(
bytes32 accountId,
uint64 orderId
) internal;
_unlinkAccountOrder
function _unlinkAccountOrder(
bytes32 accountId,
uint64 orderId
) internal;
_unlinkMarginOrder
function _unlinkMarginOrder(
bytes32 accountId,
uint64 orderId
) internal;
_pruneMarginQueue
function _pruneMarginQueue(
bytes32 accountId
) internal;
_orderRecord
function _orderRecord(
uint64 orderId
) internal view virtual returns (OrderRecord storage record);
_reserveCloseExecutionBounty
function _reserveCloseExecutionBounty(
bytes32 accountId,
uint256 sizeDelta,
uint256 executionBountyUsdc
) internal virtual;
_revertInsufficientFreeEquity
function _revertInsufficientFreeEquity() internal pure virtual;
_revertMarginOrderLinkCorrupted
function _revertMarginOrderLinkCorrupted() internal pure virtual;
_revertPendingOrderLinkCorrupted
function _revertPendingOrderLinkCorrupted() internal pure virtual;
Structs
OrderRecord
struct OrderRecord {
CfdTypes.Order core;
IOrderRouterAccounting.OrderStatus status;
uint256 executionBountyUsdc;
uint64 nextGlobalOrderId;
uint64 prevGlobalOrderId;
uint64 nextAccountOrderId;
uint64 prevAccountOrderId;
uint64 nextMarginOrderId;
uint64 prevMarginOrderId;
bool inAccountQueue;
bool inMarginQueue;
}