mirror of
https://github.com/Instadapp/fluid-contracts-public.git
synced 2024-07-29 21:57:37 +00:00
d7a58e88ff
ARB: deploy protocols
22 lines
906 B
Solidity
22 lines
906 B
Solidity
// SPDX-License-Identifier: BUSL-1.1
|
|
pragma solidity 0.8.21;
|
|
|
|
/// @title Oracle utils library
|
|
/// @notice implements common utility methods for Fluid Oracles
|
|
library OracleUtils {
|
|
/// @dev The scaler for max delta point math (100%)
|
|
uint256 internal constant HUNDRED_PERCENT_DELTA_SCALER = 10_000;
|
|
/// @dev output precision of rates
|
|
uint256 internal constant RATE_OUTPUT_DECIMALS = 27;
|
|
|
|
/// @dev checks if `mainSourceRate_` is within a `maxDeltaPercent_` of `checkSourceRate_`. Returns true if so.
|
|
function isRateOutsideDelta(
|
|
uint256 mainSourceRate_,
|
|
uint256 checkSourceRate_,
|
|
uint256 maxDeltaPercent_
|
|
) internal pure returns (bool) {
|
|
uint256 offset_ = (checkSourceRate_ * maxDeltaPercent_) / HUNDRED_PERCENT_DELTA_SCALER;
|
|
return (mainSourceRate_ > (checkSourceRate_ + offset_) || mainSourceRate_ < (checkSourceRate_ - offset_));
|
|
}
|
|
}
|