interface IPoolShare {
    enum ShareKind {
        Principal,
        Yield
    }

    /// @return The kind of the share.
    function kind() external view returns (ShareKind);

    /// @return The pool this share is part of.
    function pool() external view returns (ITempusPool);

    /// @dev Price per single share expressed in Backing Tokens of the underlying pool.
    ///      This is for the purpose of TempusAMM api support.
    ///      Example: exchanging Tempus Yield Share to DAI
    /// @return 1e18 decimal conversion rate per share
    function getPricePerFullShare() external returns (uint256);

    /// @return 1e18 decimal stored conversion rate per share
    function getPricePerFullShareStored() external view returns (uint256);
}
/// Interface of Tokens representing the principal or yield shares of a pool.
function getPricePerFullShare() external returns (uint256);

/// @dev Price per single share expressed in Backing Tokens of the underlying pool.
///      This is for the purpose of TempusAMM api support.
///      Example: exchanging Tempus Yield Share to DAI
/// @return 1e18 decimal conversion rate per share