// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {IReserveSystem} from "./IReserveSystem.sol";

/// @notice Live-chain shim: corrects inverted getConversionPrice on deployed ReserveSystem.
/// @dev DODOPMMIntegration only reads getPrice / getConversionPrice from the wired address.
contract ReserveConversionPriceAdapter {
    IReserveSystem public immutable underlying;

    constructor(address underlying_) {
        require(underlying_ != address(0), "ReserveConversionPriceAdapter: zero underlying");
        underlying = IReserveSystem(underlying_);
    }

    function getConversionPrice(
        address sourceAsset,
        address targetAsset
    ) external view returns (uint256) {
        (uint256 sourcePrice,) = underlying.getPrice(sourceAsset);
        (uint256 targetPrice,) = underlying.getPrice(targetAsset);
        return (sourcePrice * 1e18) / targetPrice;
    }

    function getPrice(address asset) external view returns (uint256 price, uint256 timestamp) {
        return underlying.getPrice(asset);
    }
}
