lit_node_core/models/
request.rs1use 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>, 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>>, 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}