use super::InputFile;
use crate::model::{utils::IntegerOrString, MaskPosition, ReplyMarkup, StickerType};
use serde::{Deserialize, Serialize};
use telexide_proc_macros::build_struct;
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SendSticker {
pub chat_id: IntegerOrString,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_thread_id: Option<i64>,
pub sticker: InputFile,
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_notification: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub protect_content: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_to_message_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<ReplyMarkup>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetStickerSet {
pub name: String,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct UploadStickerFile {
pub user_id: i64,
pub png_sticker: InputFile,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CreateNewStickerSet {
pub user_id: i64,
pub name: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub png_sticker: Option<InputFile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tgs_sticker: Option<InputFile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webm_sticker: Option<InputFile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sticker_type: Option<StickerType>,
pub emojis: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub mask_position: Option<MaskPosition>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct AddStickerToSet {
pub user_id: i64,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub png_sticker: Option<InputFile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tgs_sticker: Option<InputFile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webm_sticker: Option<InputFile>,
pub emojis: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub mask_position: Option<MaskPosition>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetStickerPositionInSet {
pub sticker: String,
pub position: i64,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct DeleteStickerFromSet {
pub sticker: String,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetStickerSetThumb {
pub name: String,
pub user_id: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb: Option<InputFile>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetCustomEmojiStickers {
pub custom_emoji_ids: Vec<String>,
}