40 lines
1.1 KiB
Solidity
40 lines
1.1 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
|
|
pragma solidity 0.6.12;
|
|
|
|
import "torn-token/contracts/ENS.sol";
|
|
|
|
interface OneSplit {
|
|
function getExpectedReturn(
|
|
address fromToken,
|
|
address destToken,
|
|
uint256 amount,
|
|
uint256 parts,
|
|
uint256 flags // See contants in IOneSplit.sol
|
|
) external view returns (uint256 returnAmount, uint256[] memory distribution);
|
|
}
|
|
|
|
contract PriceAggregator is EnsResolve {
|
|
bytes32 nameHash = 0xabbae16ab822a7a0970b116c997c681cea9944854b55e1c441a9a788a2c6fc20; // 1split.eth - https://etherscan.io/enslookup?q=1split.eth
|
|
|
|
function getPricesInETH(address[] memory fromTokens, uint256[] memory oneUnitAmounts)
|
|
public
|
|
view
|
|
returns (uint256[] memory prices)
|
|
{
|
|
OneSplit split = OneSplit(resolve(nameHash));
|
|
|
|
prices = new uint256[](fromTokens.length);
|
|
for (uint256 i = 0; i < fromTokens.length; i++) {
|
|
(uint256 price, ) = split.getExpectedReturn(
|
|
fromTokens[i],
|
|
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE,
|
|
oneUnitAmounts[i],
|
|
1,
|
|
0
|
|
);
|
|
prices[i] = price;
|
|
}
|
|
}
|
|
}
|