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

ICfdEngine 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

marginHeadOrderId

mapping(bytes32 => uint64) public marginHeadOrderId

marginTailOrderId

mapping(bytes32 => uint64) public marginTailOrderId

claimableUsdc

mapping(address => uint256) public claimableUsdc

Functions

constructor

constructor(
    address _engine
) ;

getAccountEscrow

function getAccountEscrow(
    bytes32 accountId
) public view override returns (IOrderRouterAccounting.AccountEscrowView memory escrow);

getAccountOrderSummary

function getAccountOrderSummary(
    bytes32 accountId
) public view returns (IOrderRouterAccounting.AccountOrderSummary memory summary);

_summarizePendingOrders

function _summarizePendingOrders(
    bytes32 accountId
)
    internal
    view
    returns (
        uint256 pendingOrderCount,
        uint256 executionBountyUsdc,
        uint256 pendingCloseSize_,
        bool hasTerminalCloseQueued
    );

getMarginReservationIds

function getMarginReservationIds(
    bytes32 accountId
) public view override returns (uint64[] memory orderIds);

_reserveExecutionBounty

function _reserveExecutionBounty(
    bytes32 accountId,
    uint64 orderId,
    uint256 executionBountyUsdc,
    bool isClose
) internal;

_reserveCommittedMargin

function _reserveCommittedMargin(
    bytes32 accountId,
    uint64 orderId,
    bool isClose,
    uint256 marginDelta
) internal;

_consumeOrderEscrow

function _consumeOrderEscrow(
    uint64 orderId,
    bool success,
    uint8 failedPolicy
) internal returns (uint256 executionBountyUsdc);

_collectExecutionBounty

function _collectExecutionBounty(
    uint64 orderId
) internal returns (uint256 executionBountyUsdc);

_refundExecutionBounty

function _refundExecutionBounty(
    uint64 orderId
) internal;

_tryTransferUsdc

function _tryTransferUsdc(
    address to,
    uint256 amount
) internal returns (bool success);

_releaseCommittedMargin

function _releaseCommittedMargin(
    uint64 orderId
) internal;

_linkMarginOrder

function _linkMarginOrder(
    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);

_pendingHeadOrderId

function _pendingHeadOrderId(
    bytes32 accountId
) internal view virtual returns (uint64);

_reserveCloseExecutionBounty

function _reserveCloseExecutionBounty(
    bytes32 accountId,
    uint256 executionBountyUsdc
) internal virtual;

_revertInsufficientFreeEquity

function _revertInsufficientFreeEquity() internal pure virtual;

_revertMarginOrderLinkCorrupted

function _revertMarginOrderLinkCorrupted() internal pure virtual;

Structs

OrderRecord

struct OrderRecord {
    CfdTypes.Order core;
    IOrderRouterAccounting.OrderStatus status;
    uint256 executionBountyUsdc;
    uint64 retryAfterTimestamp;
    uint64 nextPendingOrderId;
    uint64 prevPendingOrderId;
    uint64 nextGlobalOrderId;
    uint64 prevGlobalOrderId;
    uint64 nextMarginOrderId;
    uint64 prevMarginOrderId;
    bool inMarginQueue;
}