use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidateRequest {
pub license_key: String,
pub machine_fingerprint: String,
pub plugin_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidateResponse {
pub valid: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub expires_at: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivateRequest {
pub license_key: String,
pub machine_fingerprint: String,
pub plugin_id: String,
pub email: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivateResponse {
pub token: String,
pub offline_token: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrialLicense {
pub expires_at: DateTime<Utc>,
pub days_remaining: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CachedLicense {
pub license_key: String,
pub machine_fingerprint: String,
pub validated_at: DateTime<Utc>,
pub expires_at: DateTime<Utc>,
pub offline_token: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CachedTrial {
pub plugin_id: String,
pub started_at: DateTime<Utc>,
pub expires_at: DateTime<Utc>,
}