use crate::impls::inner_types::*;
use crate::*;

/// A trait that defines the BLS schemes that support multi-signatures
pub trait BlsMultiKey: BlsSignatureCore {
    /// Merges multiple public keys into one
    fn from_public_keys<I: Iterator<Item = Self::PublicKey>>(keys: I) -> Self::PublicKey {
        let mut g = Self::PublicKey::identity();
        for key in keys {
            g += key;
        }
        g
    }
}
