//! ref: composer/src/Composer/Downloader/DownloaderInterface.php
use crate::package::PackageInterface;
use shirabe_php_shim::PhpMixed;
#[async_trait::async_trait(?Send)]
pub trait DownloaderInterface: std::fmt::Debug {
fn get_installation_source(&self) -> String;
async fn download(
&self,
package: &dyn PackageInterface,
path: &str,
prev_package: Option<&dyn PackageInterface>,
output: bool,
) -> anyhow::Result