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

contract WAGMI {

    // State Variables
    string message;
    uint256 messageCount;

    // Events
    event Web3Future(uint256 indexed messageIndex, address indexed author, string message, string future);

    // Functions
    function getMessage() public view returns(string memory) {
        return message;
    }

    function getMessageCount() public view returns(uint256) {
        return messageCount;
    }

    function setMessage(string calldata newMessage) public {
        messageCount++;
        message = newMessage;

        string memory future = 'NGMI';
        if (keccak256(abi.encodePacked(newMessage)) == keccak256(abi.encodePacked('gm'))) {
            future = 'WAGMI';
        }

        emit Web3Future(messageCount, msg.sender, newMessage, future);
    }

}