use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
pub struct BillingInfo {
pub credits: u64,
pub total_credits_left: u64,
pub monthly_usage: u64,
pub monthly_limit: u64,
pub is_active: bool,
pub plan: Plan,
pub models: Vec<Model>,
pub period: String,
pub renews_on: Option<String>,
#[serde(default)]
pub remaster_model_types: Vec<RemasterModelInfo>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Plan {
pub name: String,
pub plan_key: String,
#[serde(default)]
pub usage_plan_features: Vec<Feature>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Feature {
pub name: String,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Model {
pub name: String,
pub external_key: String,
pub can_use: bool,
pub is_default_model: bool,
pub description: String,
#[serde(default)]
pub max_lengths: MaxLengths,
}
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct MaxLengths {
#[serde(default)]
pub title: u32,
#[serde(default)]
pub prompt: u32,
#[serde(default)]
pub tags: u32,
#[serde(default)]
pub negative_tags: u32,
#[serde(default)]
pub gpt_description_prompt: u32,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct RemasterModelInfo {
pub name: String,
pub external_key: String,
pub is_default_model: bool,
#[serde(default)]
pub can_use: bool,
}