use async_trait::async_trait;

use crate::{interpret::InterpretError, inventory::Inventory};

#[async_trait]
pub trait Installable<T>: Send + Sync {
    async fn ensure_installed(
        &self,
        inventory: &Inventory,
        topology: &T,
    ) -> Result<(), InterpretError>;
}
