2022-06-22 14:18:37 +08:00
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
Copyright 2021 DODO ZOO.
|
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
pragma solidity 0.6.9;
|
|
|
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
|
|
|
|
|
|
import {IOracle} from "../../intf/IOracle.sol";
|
|
|
|
|
|
|
|
|
|
interface IWooracle {
|
|
|
|
|
function timestamp() external view returns (uint256);
|
|
|
|
|
function isFeasible(address base) external view returns (bool);
|
|
|
|
|
function getPrice(address base) external view returns (uint256);
|
|
|
|
|
function price(address base) external view returns (uint256 priceNow, bool feasible);
|
|
|
|
|
}
|
|
|
|
|
|
2022-06-24 21:41:59 +08:00
|
|
|
contract WooOracleAdapter is IOracle {
|
2022-06-29 10:30:11 +08:00
|
|
|
IWooracle public oracle;
|
2022-06-22 14:18:37 +08:00
|
|
|
|
|
|
|
|
constructor(address oracleAddress) public {
|
|
|
|
|
oracle = IWooracle(oracleAddress);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getPrice(address base) external override view returns (uint256 latestPrice,bool isValid,bool isStale,uint256 timestamp) {
|
|
|
|
|
latestPrice = oracle.getPrice(base);
|
|
|
|
|
isValid = oracle.isFeasible(base);
|
|
|
|
|
isStale = !isValid;
|
|
|
|
|
timestamp = oracle.timestamp();
|
|
|
|
|
return (latestPrice, isValid, isStale, timestamp);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function prices(address base) external override view returns (uint256) {
|
2022-06-24 21:41:59 +08:00
|
|
|
require(oracle.isFeasible(base), "ORACLE NOT FEASIBLE");
|
2022-06-22 14:18:37 +08:00
|
|
|
return oracle.getPrice(base);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isFeasible(address base) external override view returns (bool) {
|
|
|
|
|
return oracle.isFeasible(base);
|
|
|
|
|
}
|
|
|
|
|
}
|