use alloc::collections::BTreeMap;
use crate::frost::redpallas::{
frost,
keys::{KeyPackage, PublicKeyPackage},
Ciphersuite, CryptoRng, Error, Identifier, PallasBlake2b512, RngCore,
};
pub type Delta = frost::keys::repairable::Delta<PallasBlake2b512>;
pub type Sigma = frost::keys::repairable::Sigma<PallasBlake2b512>;
pub fn repair_share_part1<C: Ciphersuite, R: RngCore + CryptoRng>(
helpers: &[Identifier],
key_package_i: &KeyPackage,
rng: &mut R,
participant: Identifier,
) -> Result<BTreeMap<Identifier, Delta>, Error> {
frost::keys::repairable::repair_share_part1(helpers, key_package_i, rng, participant)
}
pub fn repair_share_part2(deltas: &[Delta]) -> Sigma {
frost::keys::repairable::repair_share_part2::<PallasBlake2b512>(deltas)
}
pub fn repair_share_part3(
sigmas: &[Sigma],
identifier: Identifier,
public_key_package: &PublicKeyPackage,
) -> Result<KeyPackage, Error> {
frost::keys::repairable::repair_share_part3(sigmas, identifier, public_key_package)
}