spark_rust/wallet/internal_handlers/implementations/
commitments.rs1use 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}