use std::time::Instant;
use crate::webvh::WebvhServerRecord;
use super::diagnostics::{DiagCheck, DiagStatus, Protocol};
use super::intent::VtaReply;
use super::resolve::ResolvedVta;
#[allow(clippy::large_enum_variant)]
#[derive(Debug)]
pub enum VtaEvent {
CheckStart(DiagCheck),
CheckDone(DiagCheck, DiagStatus),
Resolved(ResolvedVta),
AttemptCompleted {
protocol: Protocol,
outcome: AttemptResultKind,
},
PreflightDone {
rest_url: Option<String>,
mediator_did: String,
servers: Vec<WebvhServerRecord>,
},
Connected {
protocol: Protocol,
rest_url: Option<String>,
mediator_did: Option<String>,
reply: VtaReply,
},
Failed(String),
}
#[derive(Clone, Debug)]
pub enum AttemptResultKind {
Connected,
PreAuthFailure(String),
PostAuthFailure(String),
}
#[derive(Clone, Debug)]
pub struct AttemptResult {
pub outcome: AttemptResultKind,
pub at: Instant,
}
#[derive(Clone, Debug, Default)]
pub struct AttemptLog {
pub didcomm: Option<AttemptResult>,
pub rest: Option<AttemptResult>,
}
#[allow(clippy::large_enum_variant, dead_code)] #[derive(Debug)]
pub(crate) enum AttemptOutcome {
Connected(VtaReply),
PreflightOk {
rest_url: Option<String>,
mediator_did: String,
servers: Vec<WebvhServerRecord>,
},
PreAuthFailure(String),
PostAuthFailure(String),
}