use std::time::Duration;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub enum AuthScope {
Public,
#[default]
Complete,
}
#[derive(Copy, Clone, Debug, Default, Serialize, Deserialize)]
pub enum AuthDuration {
Short,
Medium,
#[default]
Long,
}
impl Into<Duration> for AuthDuration {
fn into(self) -> Duration {
match self {
Self::Short => Duration::from_secs(60 * 60),
Self::Medium => Duration::from_secs(24 * 60 * 60),
Self::Long => Duration::from_secs(30 * 24 * 60 * 60),
}
}
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct AuthRequest {
pub email: String,
pub password: String,
pub scope: AuthScope,
pub term: AuthDuration,
pub context: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct AuthResponse {
pub token: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct MeResponse {
pub email: String,
pub name: String,
pub plan: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct CreditsAddRequest {
pub amount: u32,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct CreditsAddResponse {
pub resulting_balance: f32,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct DeployQuery {
pub name: String,
pub address: String,
}