pub mod builtin;
use crate::debugger::CreateTransparentBreakpointRequest;
use crate::debugger::Debugger;
use crate::ui::generic::print::ExternalPrinter;
use crate::ui::tui::Msg;
use crate::ui::tui::app::port::UserEvent;
use crate::ui::tui::config::KeyMap;
use std::sync::Arc;
use tuirealm::Component;
pub trait ConsolePlugin {
fn print(&self, printer: &ExternalPrinter, subcommand: Option<&str>);
fn help(&self) -> &str;
}
pub trait TuiPlugin: Send + Sync {
fn make_tui_component(
self: Arc<Self>,
keymap: &'static KeyMap,
) -> Box<dyn Component<Msg, UserEvent>>;
}
pub trait Oracle: ConsolePlugin + TuiPlugin {
fn name(&self) -> &'static str;
fn ready_for_install(&self, dbg: &Debugger) -> bool;
fn spy_points(self: Arc<Self>) -> Vec<CreateTransparentBreakpointRequest>;
}