Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OrderEscrowAccounting

Git Source

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;
}