Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions contracts/viewer/ProtocolViewer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ pragma experimental "ABIEncoderV2";

import { ERC20Viewer } from "./lib/ERC20Viewer.sol";
import { ManagerViewer } from "./lib/ManagerViewer.sol";
import { OracleViewer } from "./lib/OracleViewer.sol";
import { RebalancingSetTokenViewer } from "./lib/RebalancingSetTokenViewer.sol";
import { TradingPoolViewer } from "./lib/TradingPoolViewer.sol";
import { CTokenViewer } from "./lib/CTokenViewer.sol";
Expand All @@ -35,8 +36,8 @@ import { CTokenViewer } from "./lib/CTokenViewer.sol";
/* solium-disable-next-line no-empty-blocks */
contract ProtocolViewer is
ERC20Viewer,
RebalancingSetTokenViewer,
TradingPoolViewer,
CTokenViewer,
ManagerViewer
ManagerViewer,
OracleViewer
{}
55 changes: 55 additions & 0 deletions contracts/viewer/lib/OracleViewer.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
Copyright 2020 Set Labs Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

pragma solidity 0.5.7;
pragma experimental "ABIEncoderV2";

import { IOracle } from "set-protocol-oracles/contracts/meta-oracles/interfaces/IOracle.sol";


/**
* @title OracleViewer
* @author Set Protocol
*
* Contract for fetching oracle state
*/
contract OracleViewer {
/*
* Fetches RebalancingSetToken liquidator for an array of RebalancingSetToken instances
*
* @param _rebalancingSetTokens[] RebalancingSetToken contract instances
* @return address[] Current liquidator being used by RebalancingSetToken
*/
function batchFetchOraclePrices(
IOracle[] calldata _oracles
)
external
returns (uint256[] memory)
{
// Cache length of addresses to fetch states for
uint256 _addressesCount = _oracles.length;

// Instantiate output array in memory
uint256[] memory prices = new uint256[](_addressesCount);

// Cycles through contract addresses array and fetches the current price of each oracle
for (uint256 i = 0; i < _addressesCount; i++) {
prices[i] = _oracles[i].read();
}

return prices;
}
}
Loading