use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RunContractFunctionRequest {
pub abi: serde_json::Value,
#[serde(skip_serializing_if = "Option::is_none")]
pub params: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContractFunctionResult {
#[serde(flatten)]
pub data: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Web3Version {
pub version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EndpointWeight {
pub endpoint: Option<String>,
pub path: Option<String>,
pub weight: Option<i32>,
pub rate_limit_per_minute: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EndpointWeightsResponse {
pub endpoints: Vec<EndpointWeight>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetContractEventsRequest {
pub abi: serde_json::Value,
pub topic: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContractEvent {
pub transaction_hash: Option<String>,
pub block_number: Option<String>,
pub block_timestamp: Option<String>,
pub log_index: Option<i32>,
pub data: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContractEventsResponse {
pub cursor: Option<String>,
pub page_size: Option<i32>,
pub result: Vec<ContractEvent>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContractReviewRequest {
pub contracts: Vec<ContractInput>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContractInput {
pub address: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub chain: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContractReview {
pub address: Option<String>,
pub chain: Option<String>,
pub is_verified: Option<bool>,
pub is_proxy: Option<bool>,
pub implementation_address: Option<String>,
pub name: Option<String>,
pub has_source: Option<bool>,
pub security_findings: Option<Vec<SecurityFinding>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecurityFinding {
pub finding_type: Option<String>,
pub severity: Option<String>,
pub description: Option<String>,
}