use serde::{Deserialize, Serialize};
use crate::models::audio_message::AudioMessage;
use crate::models::coupon_message::CouponMessage;
use crate::models::flex_message::FlexMessage;
use crate::models::image_message::ImageMessage;
use crate::models::imagemap_message::ImagemapMessage;
use crate::models::location_message::LocationMessage;
use crate::models::sticker_message::StickerMessage;
use crate::models::template_message::TemplateMessage;
use crate::models::text_message::TextMessage;
use crate::models::video_message::VideoMessage;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Message {
#[serde(rename = "text")]
Text(TextMessage),
#[serde(rename = "sticker")]
Sticker(StickerMessage),
#[serde(rename = "image")]
Image(ImageMessage),
#[serde(rename = "video")]
Video(VideoMessage),
#[serde(rename = "audio")]
Audio(AudioMessage),
#[serde(rename = "location")]
Location(LocationMessage),
#[serde(rename = "imagemap")]
Imagemap(ImagemapMessage),
#[serde(rename = "template")]
Template(TemplateMessage),
#[serde(rename = "flex")]
Flex(FlexMessage),
#[serde(rename = "coupon")]
Coupon(CouponMessage),
}