use crate::ConxianResult;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct MuSig2AggregatedKey {
pub aggregated_pubkey: String,
pub participant_pubkeys: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct MuSig2PartialSignature {
pub participant_pubkey: String,
pub partial_signature: String,
pub nonce: String,
}
pub trait MuSig2Orchestrator: Send + Sync {
fn aggregate_pubkeys(&self, pubkeys: &[String]) -> ConxianResult<MuSig2AggregatedKey>;
fn aggregate_signatures(
&self,
aggregated_key: &MuSig2AggregatedKey,
partial_sigs: &[MuSig2PartialSignature],
message_hash: &[u8; 32],
) -> ConxianResult<String>;
}