use async_trait::async_trait;
use unm_types::{Context, RetrievedSongInfo, SerializedIdentifier, Song, SongSearchInformation};
#[async_trait]
pub trait Engine {
async fn search<'a>(
&self,
info: &'a Song,
ctx: &'a Context,
) -> anyhow::Result<Option<SongSearchInformation>>;
async fn retrieve<'a>(
&self,
identifier: &'a SerializedIdentifier,
ctx: &'a Context,
) -> anyhow::Result<RetrievedSongInfo>;
}