use crate::models::payloads::{APIEntitlement, APISKU, APISubscription};
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTGetAPIEntitlementsQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sku_ids: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub before: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub after: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub guild_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclude_ended: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclude_deleted: Option<bool>,
}
pub type RESTGetAPIEntitlementsResult = Vec<APIEntitlement>;
pub type RESTGetAPIEntitlementResult = APIEntitlement;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPostAPIEntitlementJSONBody {
pub sku_id: String,
pub owner_id: String,
pub owner_type: EntitlementOwnerType,
}
#[deprecated(note = "Use RESTPostAPIEntitlementJSONBody instead")]
pub type RESTPostAPIEntitlementBody = RESTPostAPIEntitlementJSONBody;
pub type RESTPostAPIEntitlementResult = Value;
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[repr(u8)]
pub enum EntitlementOwnerType {
Guild = 1,
User = 2,
}
pub type RESTDeleteAPIEntitlementResult = ();
pub type RESTGetAPISKUsResult = Vec<APISKU>;
pub type RESTPostAPIEntitlementConsumeResult = ();
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTGetAPISKUSubscriptionsQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub before: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub after: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
}
pub type RESTGetAPISKUSubscriptionsResult = Vec<APISubscription>;
pub type RESTGetAPISKUSubscriptionResult = APISubscription;