#![deny(missing_docs)]
#![cfg_attr(all(doc, CHANNEL_NIGHTLY), feature(doc_auto_cfg))]
pub mod signers;
mod error;
#[cfg(any(feature = "frost-ed25519"))]
pub mod frost;
#[cfg(any(feature = "ecdsa", feature = "cggmp"))]
pub mod recoverable_signature;
#[cfg(any(feature = "cggmp", feature = "frost-ed25519"))]
mod protocol;
#[cfg(any(feature = "cggmp", feature = "frost-ed25519"))]
pub use protocol::*;
pub use error::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[cfg(feature = "cggmp")]
pub mod cggmp;
pub use sha3;
#[cfg(any(feature = "ecdsa", feature = "cggmp"))]
#[doc(hidden)]
pub fn address(public_key: &[u8]) -> String {
use mpc_protocol::hex;
use sha3::{Digest, Keccak256};
let bytes = &public_key[1..];
let digest = Keccak256::digest(bytes);
let final_bytes = &digest[12..];
format!("0x{}", hex::encode(final_bytes))
}