use auths_core::storage::keychain::KeyAlias;
use auths_verifier::core::ResourceId;
use auths_verifier::types::CanonicalDid;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug)]
pub struct DeviceExtensionConfig {
pub repo_path: PathBuf,
pub device_did: CanonicalDid,
pub expires_in: u64,
pub identity_key_alias: KeyAlias,
pub device_key_alias: Option<KeyAlias>,
}
#[derive(Debug)]
pub struct DeviceLinkConfig {
pub identity_key_alias: KeyAlias,
pub device_key_alias: Option<KeyAlias>,
pub device_did: Option<String>,
pub expires_in: Option<u64>,
pub note: Option<String>,
pub payload: Option<serde_json::Value>,
}
#[derive(Debug, Clone)]
pub struct DeviceLinkResult {
pub device_did: CanonicalDid,
pub attestation_id: ResourceId,
}
#[derive(Debug, Clone)]
pub struct DeviceExtensionResult {
pub device_did: CanonicalDid,
pub new_expires_at: chrono::DateTime<chrono::Utc>,
pub previous_expires_at: Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum DeviceReadiness {
Ok,
ExpiringSoon,
Expired,
Revoked,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeviceStatus {
pub device_did: CanonicalDid,
pub readiness: DeviceReadiness,
pub expires_at: Option<DateTime<Utc>>,
pub expires_in: Option<i64>,
pub revoked_at: Option<DateTime<Utc>>,
}