spark_rust/wallet/internal_handlers/implementations/
commitments.rs

1use spark_protos::spark::{GetSigningCommitmentsRequest, RequestedSigningCommitments};
2use tonic::async_trait;
3
4use crate::{
5    error::SparkSdkError, signer::traits::SparkSigner,
6    wallet::internal_handlers::traits::commitments::StatechainCommitmentsInternalHandlers,
7    SparkSdk,
8};
9
10#[async_trait]
11impl<S: SparkSigner + Send + Sync + Clone + 'static> StatechainCommitmentsInternalHandlers<S>
12    for SparkSdk<S>
13{
14    async fn get_spark_signing_commitments(
15        &self,
16        node_ids: Vec<String>,
17    ) -> Result<Vec<RequestedSigningCommitments>, SparkSdkError> {
18        let request_data = GetSigningCommitmentsRequest { node_ids };
19        let response = self
20            .config
21            .spark_config
22            .call_with_retry(
23                request_data,
24                |mut client, req| {
25                    Box::pin(async move { client.get_signing_commitments(req).await })
26                },
27                None,
28            )
29            .await?;
30
31        #[cfg(feature = "telemetry")]
32        tracing::trace!(spark_signing_commitments = ?response, "get_signing_commitments");
33
34        Ok(response.signing_commitments)
35    }
36}