spark_rust/wallet/internal_handlers/implementations/
commitments.rs1use spark_protos::spark::{GetSigningCommitmentsRequest, RequestedSigningCommitments};
2use tonic::async_trait;
3
4use crate::{
5 error::{network::NetworkError, SparkSdkError},
6 signer::traits::SparkSigner,
7 wallet::internal_handlers::traits::commitments::StatechainCommitmentsInternalHandlers,
8 SparkSdk,
9};
10
11#[async_trait]
12impl<S: SparkSigner + Send + Sync + Clone + 'static> StatechainCommitmentsInternalHandlers<S>
13 for SparkSdk<S>
14{
15 async fn get_spark_signing_commitments(
16 &self,
17 node_ids: Vec<String>,
18 ) -> Result<Vec<RequestedSigningCommitments>, SparkSdkError> {
19 let mut spark_client = self.config.spark_config.get_spark_connection(None).await?;
20 let mut request = tonic::Request::new(GetSigningCommitmentsRequest { node_ids });
21 self.add_authorization_header_to_request(&mut request, None);
22 let response = spark_client
23 .get_signing_commitments(request)
24 .await
25 .map_err(|status| SparkSdkError::from(NetworkError::Status(status)))?;
26 let spark_operator_commitments = response.into_inner().signing_commitments;
27
28 #[cfg(feature = "telemetry")]
29 tracing::trace!(spark_signing_commitments = ?spark_operator_commitments, "get_signing_commitments");
30
31 Ok(spark_operator_commitments)
32 }
33}