use std::borrow::Borrow; #[cfg(feature = "mnemonic")] use keyfork_mnemonic_util::Wordlist; pub mod terminal; pub mod validators; pub use terminal::{Terminal, DefaultTerminal, default_terminal}; #[derive(thiserror::Error, Debug)] pub enum Error { #[error("The given handler is not a TTY")] NotATTY, #[error("Validation of the input failed after {0} retries (last error: {1})")] Validation(u8, String), #[error("IO Error: {0}")] IO(#[from] std::io::Error), } pub type Result = std::result::Result; pub enum Message { Text(String), Data(String), } pub trait PromptHandler { fn prompt_input(&mut self, prompt: &str) -> Result; fn prompt_wordlist(&mut self, prompt: &str, wordlist: &Wordlist) -> Result; #[cfg(feature = "mnemonic")] fn prompt_validated_wordlist( &mut self, prompt: &str, wordlist: &Wordlist, retries: u8, validator_fn: F, ) -> Result where F: Fn(String) -> Result, E: std::error::Error; fn prompt_passphrase(&mut self, prompt: &str) -> Result; fn prompt_validated_passphrase( &mut self, prompt: &str, retries: u8, validator_fn: F, ) -> Result where F: Fn(String) -> Result, E: std::error::Error; fn prompt_message(&mut self, prompt: impl Borrow) -> Result<()>; }