use alloy::primitives::Address;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SimulatePolicyDataRpcRequest {
pub policy_data_address: Address,
pub chain_id: u64,
pub secrets: Option<serde_json::Value>,
pub wasm_args: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SimulatePolicyDataWithClientRpcRequest {
pub policy_data_address: Address,
pub chain_id: u64,
pub policy_client: Address,
pub wasm_args: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SimulatePolicyDataRpcResponse {
pub success: bool,
pub policy_data: Option<serde_json::Value>,
pub error: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PolicyDataInputRpc {
pub policy_data_address: Address,
pub wasm_args: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SimulatePolicyRpcRequest {
pub policy_client: Address,
pub chain_id: u64,
pub policy: String,
pub intent: serde_json::Value,
pub entrypoint: Option<String>,
pub policy_data: Vec<PolicyDataInputRpc>,
pub policy_params: Option<serde_json::Value>,
pub intent_signature: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SimulatePolicyRpcResponse {
pub success: bool,
pub evaluation_result: Option<serde_json::Value>,
pub error: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error_details: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidateSecretsSchemaRpcRequest {
pub policy_data_address: Address,
pub chain_id: u64,
pub envelope: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidateSecretsSchemaRpcResponse {
pub valid: bool,
pub schema: Option<serde_json::Value>,
pub error: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetPublicKeyRpcRequest {
pub chain_id: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetPublicKeyRpcResponse {
pub public_key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}