use std::sync::Arc;
use wyrd_spec::registry::RelativeArtifactPath;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DeclarationPhase {
Preparing,
Submitting,
Uploading,
Completing,
Verifying,
CleaningUp,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum DeclarationProgressEvent {
Phase(DeclarationPhase),
ArtifactStarted {
artifact: RelativeArtifactPath,
total_bytes: Option<u64>,
},
ArtifactProgress {
artifact: RelativeArtifactPath,
uploaded_bytes: u64,
total_bytes: Option<u64>,
},
ArtifactFinished {
artifact: RelativeArtifactPath,
success: bool,
},
}
pub type DeclarationProgressSink = Arc<dyn Fn(DeclarationProgressEvent) + Send + Sync + 'static>;