// ---
// tags: mudra, rust
// crystal-type: source
// crystal-domain: comp
// ---
//! mudra โ cryptographic primitives: confidentiality, distribution, delay, ordering, position.
//!
//! Most of mudra is post-quantum and signature-free by design: a neuron's
//! identity is `Hemera(secret)` and authentication is a zheng proof of hash
//! preimage. Those modules (seal/stealth/veil/quorum/delay/order/place) are
//! specified in `specs/` and not yet implemented.
//!
//! **Phase 1 โ the legacy-key bridge.** To migrate an existing Cosmos-SDK
//! network (spacepussy first), we must let a holder prove control of the
//! secp256k1 key they already have and bind it to a native neuron. That is the
//! one place classical signatures are structurally required. This crate
//! currently implements that bridge:
//!
//! - [`seed`] โ BIP-39 mnemonic โ seed โ BIP-32/44 secp256k1 key (coin type 118),
//! behind the `bridge` feature (on by default)
//! - [`cosmos`] โ compressed pubkey โ `ripemd160(sha256(pk))` โ bech32 address
//! - [`claim`] โ ADR-036 sign/verify of a `legacy address โ native neuron` binding
//!
//! Verification here is native (in-process). Phase 2 re-expresses the same
//! secp256k1 + sha256 + ripemd160 verification as a nox program producing a
//! zheng proof, making the binding trustless. The Phase-1 code is the reference
//! implementation Phase 2 must match.
//!
//! **A second, permanent use of secp256k1.** [`domain`] derives a *fresh*
//! identity โ no legacy account, no BIP-32 โ for contexts where secp256k1
//! is chosen not to migrate anything, but because it's what a browser
//! already speaks natively (a wallet extension, or a few KB of JS). This
//! is not phase-1-bridge code that phase 2 retires: browsers stay
//! secp256k1-native regardless of what the rest of cyber's identity model
//! becomes.
pub use Claim;
/// The secp256k1 signing key type used across mudra. Depended on directly
/// (not through bip32's re-export) so it stays available with `bridge` off;
/// version-pinned to match bip32 0.5's own `k256` pin, so both resolve to
/// the same crate when `bridge` is on.
pub use SigningKey;
/// Errors from the legacy-key bridge.