use super::processor::ProcessingStatus;
use super::{ProcessOptions, VideoMetadata, VideoOutput};
use crate::Result;
use std::path::Path;
#[async_trait::async_trait]
pub trait VideoProcessor {
async fn extract_metadata(&self, input: &Path) -> Result<VideoMetadata>;
async fn process_video(&self, input: &Path, options: ProcessOptions) -> Result<VideoOutput>;
async fn get_status(&self, job_id: &str) -> Result<ProcessingStatus>;
async fn cancel_job(&self, job_id: &str) -> Result<bool>;
}