use serde::Deserialize;
use serde_repr::{Deserialize_repr, Serialize_repr};
use crate::types::{PartialChannel, PartialGuild, Snowflake, User};
#[derive(Debug, Clone, Deserialize)]
pub struct Invite {
#[serde(rename = "type", default)]
pub kind: u8,
pub code: String,
pub guild: Option<PartialGuild>,
pub channel: Option<PartialChannel>,
pub inviter: Option<User>,
pub target_type: Option<InviteTargetType>,
pub target_user: Option<User>,
pub approximate_member_count: Option<u32>,
pub approximate_presence_count: Option<u32>,
pub expires_at: Option<String>,
pub uses: Option<u32>,
pub max_uses: Option<u32>,
pub max_age: Option<u32>,
pub temporary: Option<bool>,
pub created_at: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize_repr, Serialize_repr)]
#[repr(u8)]
pub enum InviteTargetType {
Stream = 1,
EmbeddedApplication = 2,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Ban {
pub reason: Option<String>,
pub user: User,
}
#[derive(Debug, Clone, Deserialize)]
pub struct BulkBan {
pub banned_users: Vec<Snowflake>,
pub failed_users: Vec<Snowflake>,
}