use std::{path::PathBuf, sync::mpsc::Receiver};
use crate::{SkywayError, chunks::ElementChunk, elements::Metadata};
#[cfg(feature = "json")]
mod json;
#[cfg(feature = "json")]
pub use json::JsonWriter;
#[cfg(feature = "o5m")]
mod o5m;
#[cfg(feature = "o5m")]
pub use o5m::O5mWriter;
#[cfg(feature = "opl")]
mod opl;
#[cfg(feature = "opl")]
pub use opl::OplWriter;
#[cfg(feature = "xml")]
mod xml;
#[cfg(feature = "xml")]
pub use xml::XmlWriter;
pub trait Writer {
fn write(
&self,
element_receiver: Receiver<ElementChunk>,
metadata_receiver: Receiver<Metadata>,
dest: Option<PathBuf>,
) -> Result<(), SkywayError>;
}