use std::io;

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

/// An alignment reader.
pub trait Read<R> {
    /// Reads a SAM header.
    fn read_alignment_header(&mut self) -> io::Result<Header>;

    /// Returns an iterator over records.
    fn alignment_records<'a>(
        &'a mut self,
        header: &'a Header,
    ) -> Box<dyn Iterator<Item = io::Result<Box<dyn Record>>> + 'a>;
}
