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

/**
 * @title IRWAToken
 * @notice M00 GRU commodity index token (Li*) — institutional RWA index, not M1 eMoney.
 */
interface IRWAToken {
    struct Classification {
        bytes32 indexTicker;
        bytes32 assetClass;
        bytes32 assetGroup;
        bytes32 instrumentType;
        bytes32 underlyingAsset;
        bytes32 gruLayer;
    }

    function indexTicker() external view returns (string memory);
    function classification() external view returns (Classification memory);
    function indexValue() external view returns (uint256);
    function indexValueDecimals() external view returns (uint8);
    function indexUpdatedAt() external view returns (uint256);
    function methodologyDocumentHash() external view returns (bytes32);
    function isRwaIndex() external pure returns (bool);
    function isEmoney() external pure returns (bool);

    function updateIndexValue(uint256 newValue) external;

    event IndexValueUpdated(uint256 oldValue, uint256 newValue, address indexed publisher);
}
