use std::io;

use super::{alignment::Record, Header};

/// An alignment format writer.
///
/// A call to [`Self::finish`] must be made before the writer is dropped.
pub trait AlignmentWriter {
    /// Writes a SAM header.
    fn write_alignment_header(&mut self, header: &Header) -> io::Result<()>;

    /// Writes an alignment record.
    fn write_alignment_record(&mut self, header: &Header, record: &Record) -> io::Result<()>;

    /// Shuts down an alignment format writer.
    fn finish(&mut self, header: &Header) -> io::Result<()>;
}
