use serde::{Deserialize, Serialize};
use super::{
AccountLinkEvent, ActivatedEvent, BeaconEvent, BotResumedEvent, BotSuspendedEvent,
DeactivatedEvent, FollowEvent, JoinEvent, LeaveEvent, MemberJoinedEvent, MemberLeftEvent,
MembershipEvent, MessageEvent, ModuleEvent, PnpDeliveryCompletionEvent, PostbackEvent,
UnfollowEvent, UnsendEvent, VideoPlayCompleteEvent,
};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Event {
#[serde(rename = "message")]
MessageEvent(MessageEvent),
#[serde(rename = "unsend")]
UnsendEvent(UnsendEvent),
#[serde(rename = "follow")]
FollowEvent(FollowEvent),
#[serde(rename = "unfollow")]
UnfollowEvent(UnfollowEvent),
#[serde(rename = "join")]
JoinEvent(JoinEvent),
#[serde(rename = "leave")]
LeaveEvent(LeaveEvent),
#[serde(rename = "memberJoined")]
MemberJoinedEvent(MemberJoinedEvent),
#[serde(rename = "memberLeft")]
MemberLeftEvent(MemberLeftEvent),
#[serde(rename = "membership")]
MembershipEvent(MembershipEvent),
#[serde(rename = "postback")]
PostbackEvent(PostbackEvent),
#[serde(rename = "videoPlayComplete")]
VideoPlayCompleteEvent(VideoPlayCompleteEvent),
#[serde(rename = "beacon")]
BeaconEvent(BeaconEvent),
#[serde(rename = "accountLink")]
AccountLinkEvent(AccountLinkEvent),
#[serde(rename = "module")]
ModuleEvent(ModuleEvent),
#[serde(rename = "activated")]
ActivatedEvent(ActivatedEvent),
#[serde(rename = "deactivated")]
DeactivatedEvent(DeactivatedEvent),
#[serde(rename = "botSuspended")]
BotSuspendedEvent(BotSuspendedEvent),
#[serde(rename = "botResumed")]
BotResumedEvent(BotResumedEvent),
#[serde(rename = "delivery")]
PnpDeliveryCompletionEvent(PnpDeliveryCompletionEvent),
}