lit_sdk/
pkp_sign.rs

1use crate::common::{EncryptedMulticastRequest, EndpointRequest, Response, UrlPrefix};
2use crate::{SdkError, SdkResult};
3use lit_node_core::{
4    request::JsonPKPSigningRequest,
5    response::{GenericResponse, JsonPKPSigningResponse},
6};
7use std::{collections::HashMap, marker::PhantomData};
8use uuid::Uuid;
9
10/// The response type for pkp signing calls
11pub type PKPSigningResponse = Response<GenericResponse<JsonPKPSigningResponse>>;
12
13/// The pkp signing request struct
14pub type PKPSigningRequest = EncryptedMulticastRequest<
15    PKPSigningRequestBuilder,
16    JsonPKPSigningRequest,
17    GenericResponse<JsonPKPSigningResponse>,
18>;
19
20encrypted_multicast_builder!(
21    PKPSigningRequestBuilder,
22    JsonPKPSigningRequest,
23    GenericResponse<JsonPKPSigningResponse>,
24    "/web/pkp/sign/v2"
25);
26
27impl PKPSigningRequestBuilder {
28    /// Check that the inner request fields are set
29    fn request_checks(&self) -> SdkResult<()> {
30        let Some(node_set) = &self.node_set else {
31            return Ok(());
32        };
33        for (i, endpoint) in node_set.iter().enumerate() {
34            if endpoint.body.pubkey.is_empty() {
35                return Err(SdkError::Build(format!(
36                    "No pubkey is specified at '{}'",
37                    i + 1
38                )));
39            }
40        }
41        Ok(())
42    }
43}