//! ref: composer/src/Composer/IO/IOInterface.php use indexmap::IndexMap; use shirabe_php_shim::PhpMixed; use shirabe_external_packages::psr::log::logger_interface::LoggerInterface; use crate::config::Config; pub trait IOInterface: LoggerInterface { const QUIET: i64 = 1; const NORMAL: i64 = 2; const VERBOSE: i64 = 4; const VERY_VERBOSE: i64 = 8; const DEBUG: i64 = 16; fn is_interactive(&self) -> bool; fn is_verbose(&self) -> bool; fn is_very_verbose(&self) -> bool; fn is_debug(&self) -> bool; fn is_decorated(&self) -> bool; fn write(&self, messages: PhpMixed, newline: bool, verbosity: i64); fn write_error(&self, messages: PhpMixed, newline: bool, verbosity: i64); fn write_raw(&self, messages: PhpMixed, newline: bool, verbosity: i64); fn write_error_raw(&self, messages: PhpMixed, newline: bool, verbosity: i64); fn overwrite(&self, messages: PhpMixed, newline: bool, size: Option, verbosity: i64); fn overwrite_error(&self, messages: PhpMixed, newline: bool, size: Option, verbosity: i64); fn ask(&self, question: String, default: PhpMixed) -> PhpMixed; fn ask_confirmation(&self, question: String, default: bool) -> bool; fn ask_and_validate(&self, question: String, validator: Box PhpMixed>, attempts: Option, default: PhpMixed) -> PhpMixed; fn ask_and_hide_answer(&self, question: String) -> Option; fn select(&self, question: String, choices: Vec, default: PhpMixed, attempts: PhpMixed, error_message: String, multiselect: bool) -> PhpMixed; fn get_authentications(&self) -> IndexMap>>; fn has_authentication(&self, repository_name: &str) -> bool; fn get_authentication(&self, repository_name: &str) -> IndexMap>; fn set_authentication(&self, repository_name: String, username: String, password: Option); fn load_configuration(&self, config: &Config); }