OrderOracleExecution
Inherits: OrderEscrowAccounting
Constants
vault
ICfdVault internal immutable vault;
engineLens
ICfdEngineLens internal immutable engineLens;
State Variables
pyth
IPyth public pyth;
pythFeedIds
bytes32[] public pythFeedIds;
quantities
uint256[] public quantities;
basePrices
uint256[] public basePrices;
inversions
bool[] public inversions;
orderExecutionStalenessLimit
uint256 public orderExecutionStalenessLimit = 60;
liquidationStalenessLimit
uint256 public liquidationStalenessLimit = 15;
pythMaxConfidenceRatioBps
uint256 public pythMaxConfidenceRatioBps = 10_000;
Functions
_revertZeroAddress
function _revertZeroAddress() internal pure virtual;
_revertEmptyFeeds
function _revertEmptyFeeds() internal pure virtual;
_revertLengthMismatch
function _revertLengthMismatch() internal pure virtual;
_revertInvalidBasePrice
function _revertInvalidBasePrice() internal pure virtual;
_revertInvalidWeights
function _revertInvalidWeights() internal pure virtual;
_revertMissingPythUpdateData
function _revertMissingPythUpdateData() internal pure virtual;
_revertInsufficientPythFee
function _revertInsufficientPythFee() internal pure virtual;
_revertMockModeDisabled
function _revertMockModeDisabled() internal pure virtual;
_revertOraclePriceTooStale
function _revertOraclePriceTooStale() internal pure virtual;
_revertOracleConfidenceTooWide
function _revertOracleConfidenceTooWide() internal pure virtual;
_revertOraclePublishTimeOutOfOrder
function _revertOraclePublishTimeOutOfOrder() internal pure virtual;
_revertMevOraclePriceTooStale
function _revertMevOraclePriceTooStale() internal pure virtual;
_revertOraclePriceNegative
function _revertOraclePriceNegative() internal pure virtual;
constructor
constructor(
address _engine,
address _engineLens,
address _vault,
address _pyth,
bytes32[] memory _feedIds,
uint256[] memory _quantities,
uint256[] memory _basePrices,
bool[] memory _inversions
) OrderEscrowAccounting(_engine);
_currentRouterExecutionContext
function _currentRouterExecutionContext() internal view returns (RouterExecutionContext memory context);
_prepareOrderExecutionOracle
function _prepareOrderExecutionOracle(
bytes[] calldata pythUpdateData,
uint256 mockFallbackPrice
) internal returns (OracleUpdateResult memory update, RouterExecutionContext memory executionContext);
_prepareMarkRefreshOracle
function _prepareMarkRefreshOracle(
bytes[] calldata pythUpdateData
) internal returns (OracleUpdateResult memory update);
_prepareLiquidationOracle
function _prepareLiquidationOracle(
bytes[] calldata pythUpdateData
) internal returns (OracleUpdateResult memory update);
_executionPolicyForOrder
function _executionPolicyForOrder(
bool isClose,
bool oracleFrozen,
bool isFadWindow
) internal view returns (OracleFreshnessPolicyLib.Policy memory);
_resolveOraclePrice
function _resolveOraclePrice(
bytes[] calldata pythUpdateData,
uint256 mockFallbackPrice,
uint256 maxStaleness,
uint256 maxPublishTimeDivergence
) internal returns (uint256 price, uint64 publishTime, uint256 pythFee);
_setOracleConfig
function _setOracleConfig(
address newPyth,
bytes32[] memory newFeedIds,
uint256[] memory newQuantities,
uint256[] memory newBasePrices,
bool[] memory newInversions
) internal;
_validateOracleConfig
function _validateOracleConfig(
address newPyth,
bytes32[] memory newFeedIds,
uint256[] memory newQuantities,
uint256[] memory newBasePrices,
bool[] memory newInversions
) internal pure;
_computeBasketPrice
function _computeBasketPrice(
uint256 maxStaleness,
uint256 maxPublishTimeDivergence
) internal view returns (uint256 basketPrice, uint256 minPublishTime);
_checkSlippage
function _checkSlippage(
CfdTypes.Order memory order,
uint256 executionPrice
) internal pure returns (bool);
_commitReferencePrice
function _commitReferencePrice() internal view returns (uint256 price);
_canUseCommitMarkForOpenPrefilter
function _canUseCommitMarkForOpenPrefilter() internal view returns (bool);
_isOracleFrozen
function _isOracleFrozen() internal view returns (bool);
_isCloseOnlyWindow
function _isCloseOnlyWindow() internal view returns (bool);
_invertPythPrice
function _invertPythPrice(
int64 price,
int32 expo
) internal pure returns (uint256);
_normalizePythPrice
function _normalizePythPrice(
int64 price,
int32 expo
) internal pure returns (uint256);
Structs
RouterExecutionContext
struct RouterExecutionContext {
bool oracleFrozen;
bool isFadWindow;
OracleFreshnessPolicyLib.Policy policy;
}
OracleUpdateResult
struct OracleUpdateResult {
uint256 executionPrice;
uint64 oraclePublishTime;
uint256 pythFee;
}