use std::borrow::Cow;
use crate::{
chemistry::{MolecularFormula, SatelliteLabel},
quantities::Multi,
sequence::SequencePosition,
};
pub trait IsAminoAcid {
fn name(&self) -> Cow<'_, str>;
fn three_letter_code(&self) -> Option<Cow<'_, str>>;
#[doc(alias = "code")]
fn one_letter_code(&self) -> Option<char>;
fn pro_forma_definition(&self) -> Cow<'_, str>;
fn side_chain(
&self,
sequence_index: SequencePosition,
peptidoform_index: usize,
peptidoform_ion_index: usize,
) -> Cow<'_, Multi<MolecularFormula>>;
fn satellite_ion_fragments(
&self,
sequence_index: SequencePosition,
peptidoform_index: usize,
peptidoform_ion_index: usize,
) -> Option<Cow<'_, [(SatelliteLabel, MolecularFormula)]>>;
}