interface ICulturalContract {
    /**
     * @dev Returns cRNA number, cRNA length and cRNA unit length.
     *
     * cRNA defines the attributes of an ERC721 token.
     * cRNA is divided into units. Every unit defines a set of attributes.
     * cRNAs can be easily manipulated using simple mathematical operations providing
     * many possibilities for remixes and mashups.
     *
     */
    function culturalRNA(uint256 tokenId)
        external
        returns (
            uint256 cRNA,
            uint256 numberLength,
            uint256 unitLength
        );

    /**
     * @dev Remixes ERC721 token based on the `input`.
     */
    function remix(uint256 tokenId, string memory input) external;

    /**
     * @dev Returns mashup result of ERC721 token from a given `mashupAddress`.
     */
    function mashup(uint256 tokenId, address payable mashupAddress)
        external
        payable
        returns (string memory);

    /**
     * @dev Returns `mashupFee` from `mashupAddress`.
     */
    function mashupFee(address mashupAddress) external returns (uint256);
}
/**
 * @dev Required interface of a CulturalContract compliant contract.
 */
function mashupFee(address mashupAddress) external returns (uint256);

/**
 * @dev Returns `mashupFee` from `mashupAddress`.
 */