use serde::{Deserialize, Serialize};
use crate::types::{BroadcasterId, UserId};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Subscription {
pub broadcaster_id: BroadcasterId,
pub broadcaster_login: String,
pub broadcaster_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub gifter_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub gifter_login: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub gifter_name: Option<String>,
pub is_gift: bool,
pub tier: Tier,
#[serde(skip_serializing_if = "Option::is_none")]
pub plan_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<UserId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_login: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Tier {
#[serde(rename(deserialize = "1000"))]
Tier1,
#[serde(rename(deserialize = "2000"))]
Tier2,
#[serde(rename(deserialize = "3000"))]
Tier3,
}