lit_node_core/models/
request.rs

1use super::default_epoch;
2use crate::{
3    AccessControlConditionItem, AuthMethod, AuthSigItem, CurveType, EVMContractConditionItem,
4    Invocation, NodeSet, SigningScheme, SolRpcConditionItem, UnifiedAccessControlConditionItem,
5};
6use ethers::types::U256;
7use serde::{Deserialize, Serialize};
8use serde_json::Value;
9
10#[derive(Clone, Debug, Default, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub struct JsonSDKHandshakeRequest {
13    pub client_public_key: String,
14    pub challenge: Option<String>,
15}
16
17#[derive(Clone, Debug, Serialize, Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct EncryptionSignRequest {
20    pub access_control_conditions: Option<Vec<AccessControlConditionItem>>,
21    pub evm_contract_conditions: Option<Vec<EVMContractConditionItem>>,
22    pub sol_rpc_conditions: Option<Vec<SolRpcConditionItem>>,
23    pub unified_access_control_conditions: Option<Vec<UnifiedAccessControlConditionItem>>,
24    pub chain: Option<String>,
25    pub data_to_encrypt_hash: String,
26    pub auth_sig: AuthSigItem,
27    #[serde(default = "default_epoch")]
28    pub epoch: u64,
29}
30
31#[derive(Clone, Debug, Default, Serialize, Deserialize)]
32#[serde(rename_all = "camelCase")]
33pub struct JsonSignSessionKeyRequestV2 {
34    pub session_key: String,
35    pub auth_methods: Vec<AuthMethod>,
36    pub pkp_public_key: Option<String>,
37    pub auth_sig: Option<AuthSigItem>, // For backwards compatibility
38    pub siwe_message: String,
39    pub curve_type: CurveType,
40    pub code: Option<String>,
41    pub lit_action_ipfs_id: Option<String>,
42    pub js_params: Option<Value>,
43    #[serde(default = "default_epoch")]
44    pub epoch: u64,
45    pub node_set: Vec<NodeSet>,
46    pub max_price: U256,
47}
48
49#[derive(Clone, Debug, Default, Serialize, Deserialize)]
50#[serde(rename_all = "camelCase")]
51pub struct JsonPKPSigningRequest {
52    pub to_sign: Vec<u8>,
53    pub pubkey: String,
54    pub auth_sig: AuthSigItem,
55    pub auth_methods: Option<Vec<AuthMethod>>, // For backwards compatibility
56    pub signing_scheme: SigningScheme,
57    #[serde(default = "default_epoch")]
58    pub epoch: u64,
59    pub node_set: Vec<NodeSet>,
60}
61
62#[derive(Clone, Default, Serialize, Deserialize)]
63#[serde(rename_all = "camelCase")]
64pub struct JsonExecutionRequest {
65    pub code: Option<String>,
66    pub ipfs_id: Option<String>,
67    pub auth_sig: AuthSigItem,
68    pub js_params: Option<Value>,
69    pub auth_methods: Option<Vec<AuthMethod>>,
70    #[serde(default = "default_epoch")]
71    pub epoch: u64,
72    pub node_set: Vec<NodeSet>,
73    #[serde(default)]
74    pub invocation: Invocation,
75}
76
77impl JsonExecutionRequest {
78    pub fn is_async(&self) -> bool {
79        self.invocation == Invocation::Async
80    }
81}
82
83impl std::fmt::Debug for JsonExecutionRequest {
84    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
85        const MAX_CODE_LEN: usize = 500;
86
87        let truncated_code = self.code.as_ref().map(|code| {
88            if code.len() > MAX_CODE_LEN {
89                format!(
90                    "{}... (truncated, {} bytes total)",
91                    &code[..MAX_CODE_LEN],
92                    code.len()
93                )
94            } else {
95                code.to_string()
96            }
97        });
98
99        f.debug_struct("JsonExecutionRequest")
100            .field("code", &truncated_code)
101            .field("ipfs_id", &self.ipfs_id)
102            .field("auth_sig", &self.auth_sig)
103            .field("js_params", &self.js_params)
104            .field("auth_methods", &self.auth_methods)
105            .field("epoch", &self.epoch)
106            .field("node_set", &self.node_set)
107            .field("invocation", &self.invocation)
108            .finish()
109    }
110}
111
112#[derive(Debug, Serialize, Deserialize, Clone)]
113#[serde(rename_all = "camelCase")]
114pub struct JsonPKPClaimKeyRequest {
115    pub auth_method: AuthMethod,
116    pub credential_public_key: Option<String>,
117}