pub trait RestorableItem {
// Required methods
fn account(&self) -> String;
fn issuer(&self) -> String;
fn secret(&self) -> String;
fn period(&self) -> Option<u32>;
fn method(&self) -> Method;
fn algorithm(&self) -> Algorithm;
fn digits(&self) -> Option<u32>;
fn counter(&self) -> Option<u32>;
// Provided method
fn restore(&self, provider: &ProvidersModel) -> Result<()> { ... }
}