use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
use crate::entities::UserApiType;
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct StickerApiType {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub pack_id: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub tags: String,
#[serde(rename = "type")]
pub type_: StickerType,
pub format_type: StickerFormatType,
#[serde(skip_serializing_if = "Option::is_none")]
pub available: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub guild_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<UserApiType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_value: Option<u32>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct StickerItemApiType {
pub id: String,
pub name: String,
pub format_type: StickerFormatType,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum StickerType {
STANDARD = 1,
GUILD = 2,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum StickerFormatType {
PNG = 1,
APNG = 2,
LOTTIE = 3,
GIF = 4,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct StickerPackApiType {
pub id: String,
pub stickers: Vec<StickerApiType>,
pub name: String,
pub sku_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub cover_sticker_id: Option<String>,
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub banner_asset_id: Option<String>,
}