Initial commit
This commit is contained in:
70
contracts/interfaces/IOracleAdapter.sol
Normal file
70
contracts/interfaces/IOracleAdapter.sol
Normal file
@@ -0,0 +1,70 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.24;
|
||||
|
||||
/**
|
||||
* @title IOracleAdapter
|
||||
* @notice Interface for oracle adapter
|
||||
* @dev Standardizes pricing from multiple oracle sources
|
||||
*/
|
||||
interface IOracleAdapter {
|
||||
enum OracleSource {
|
||||
AAVE,
|
||||
CHAINLINK,
|
||||
UNISWAP_TWAP,
|
||||
FALLBACK
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice Price data structure
|
||||
* @param price Price (scaled by 1e8 for USD pairs)
|
||||
* @param source Oracle source used
|
||||
* @param timestamp Timestamp of price update
|
||||
* @param confidence Confidence score (0-1e18, where 1e18 = 100%)
|
||||
*/
|
||||
struct PriceData {
|
||||
uint256 price;
|
||||
OracleSource source;
|
||||
uint256 timestamp;
|
||||
uint256 confidence;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice Get latest price for an asset
|
||||
* @param asset Asset address
|
||||
* @return priceData Price data structure
|
||||
*/
|
||||
function getPrice(address asset) external view returns (PriceData memory priceData);
|
||||
|
||||
/**
|
||||
* @notice Get latest price with max age requirement
|
||||
* @param asset Asset address
|
||||
* @param maxAge Maximum age of price in seconds
|
||||
* @return priceData Price data structure
|
||||
*/
|
||||
function getPriceWithMaxAge(
|
||||
address asset,
|
||||
uint256 maxAge
|
||||
) external view returns (PriceData memory priceData);
|
||||
|
||||
/**
|
||||
* @notice Get aggregated price from multiple sources
|
||||
* @param asset Asset address
|
||||
* @return price Aggregated price (scaled by 1e8)
|
||||
* @return confidence Weighted confidence score
|
||||
*/
|
||||
function getAggregatedPrice(address asset) external view returns (uint256 price, uint256 confidence);
|
||||
|
||||
/**
|
||||
* @notice Convert amount from one asset to another using prices
|
||||
* @param fromAsset Source asset
|
||||
* @param fromAmount Amount in source asset
|
||||
* @param toAsset Destination asset
|
||||
* @return toAmount Amount in destination asset
|
||||
*/
|
||||
function convertAmount(
|
||||
address fromAsset,
|
||||
uint256 fromAmount,
|
||||
address toAsset
|
||||
) external view returns (uint256 toAmount);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user