### ----------------------------------------------------
### -- API::Discord
### -- Licenses: BSD-3-Clause
### -- Authors: Alastair 'altreus' Douglas <altreus@altre.us>, Jonathan 'jnthn' Worthington <jnthn@jnthn.net>, Kane 'kawaii' Valentine <kane@cute.im>
### -- File: lib/API/Discord/WebSocket/Messages.rakumod
### ----------------------------------------------------
class API::Discord::WebSocket::Event {
    enum OPERATION (
        <create update delete>
    );

    has OPERATION $.operation;
    has $.payload;
}

class API::Discord::WebSocket::Event::Message
is API::Discord::WebSocket::Event {}
class API::Discord::WebSocket::Event::Message::Reaction
is API::Discord::WebSocket::Event {}

class API::Discord::WebSocket::Event::Guild
is API::Discord::WebSocket::Event {}
class API::Discord::WebSocket::Event::Guild::Member
is API::Discord::WebSocket::Event {}

class API::Discord::WebSocket::Event::Channel
is API::Discord::WebSocket::Event {}

class API::Discord::WebSocket::Event::Typing
is API::Discord::WebSocket::Event {}
class API::Discord::WebSocket::Event::Presence
is API::Discord::WebSocket::Event {}

class API::Discord::WebSocket::Event::Disconnected
is API::Discord::WebSocket::Event {
    has $.session-id;
    has $.last-sequence-number;
}

class API::Discord::WebSocket::Event::Ready
is API::Discord::WebSocket::Event {}


