use fix_identities;
use Complete;
use crate config;
use ;
use fs;
use Path;
use PathBuf;
use bail;
use FuzzySelect;
use OnceCell;
static CHOSEN_IDENTITY: = new;
/// Returns the directory in which identity information should be stored.
///
/// # Arguments
/// * `name` - The name of the identity. This is encoded on-disk as identities/`<NAME>`
/// * `should_exist` - If the path should already exist.
///
/// # Errors
/// * An identity of `name` does not exist
/// * The identity name is empty
/// Returns the public key for identity named <NAME>.
///
/// # Arguments
/// * `name` - The name of the identity. This is encoded on-disk as identities/`<NAME>`
/// Returns the secret key for identity named <NAME>.
///
/// # Arguments
/// * `name` - The name of the identity. This is encoded on-disk as identities/`<NAME>`
/// Choose an identity, either through defaults or a user prompt.
///
/// # Arguments
/// * `no_prompt` - If the user should not be prompted for input.
///
/// # Errors
/// * User input is required to continue, but `no_prompt` is set to true
pub async