spark_rust/wallet/internal_handlers/implementations/
commitments.rs

1use 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}