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

/**
 * @title IAggregator Interface
 * @notice Interface for Chainlink-compatible oracle aggregator
 * @dev Based on Chainlink AggregatorV3Interface
 */
interface IAggregator {
    /**
     * @notice Get the latest answer
     * @return answer Latest answer
     */
    function latestAnswer() external view returns (int256);

    /**
     * @notice Get the latest round data
     * @return roundId Round ID
     * @return answer Answer
     * @return startedAt Started at timestamp
     * @return updatedAt Updated at timestamp
     * @return answeredInRound Answered in round
     */
    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    /**
     * @notice Get round data for a specific round
     * @param _roundId Round ID
     * @return roundId Round ID
     * @return answer Answer
     * @return startedAt Started at timestamp
     * @return updatedAt Updated at timestamp
     * @return answeredInRound Answered in round
     */
    function getRoundData(uint80 _roundId)
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    /**
     * @notice Update the answer (for transmitters)
     * @param answer New answer value
     */
    function updateAnswer(uint256 answer) external;

    /**
     * @notice Get decimals
     * @return decimals Number of decimals
     */
    function decimals() external view returns (uint8);

    /**
     * @notice Get description
     * @return description Description
     */
    function description() external view returns (string memory);

    /**
     * @notice Get version
     * @return version Version
     */
    function version() external view returns (uint256);
}

