use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Transaction {
pub hash: Option<String>,
pub nonce: Option<String>,
pub transaction_index: Option<String>,
pub from_address: Option<String>,
pub to_address: Option<String>,
pub value: Option<String>,
pub gas: Option<String>,
pub gas_price: Option<String>,
pub input: Option<String>,
pub receipt_cumulative_gas_used: Option<String>,
pub receipt_gas_used: Option<String>,
pub receipt_contract_address: Option<String>,
pub receipt_root: Option<String>,
pub receipt_status: Option<String>,
pub block_timestamp: Option<String>,
pub block_number: Option<String>,
pub block_hash: Option<String>,
pub logs: Option<Vec<TransactionLog>>,
pub decoded_call: Option<DecodedCall>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransactionLog {
pub log_index: Option<String>,
pub transaction_hash: Option<String>,
pub transaction_index: Option<String>,
pub address: Option<String>,
pub data: Option<String>,
pub topic0: Option<String>,
pub topic1: Option<String>,
pub topic2: Option<String>,
pub topic3: Option<String>,
pub block_timestamp: Option<String>,
pub block_number: Option<String>,
pub block_hash: Option<String>,
pub decoded_event: Option<DecodedEvent>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DecodedCall {
pub signature: Option<String>,
pub label: Option<String>,
#[serde(rename = "type")]
pub call_type: Option<String>,
pub params: Option<Vec<DecodedParam>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DecodedEvent {
pub signature: Option<String>,
pub label: Option<String>,
#[serde(rename = "type")]
pub event_type: Option<String>,
pub params: Option<Vec<DecodedParam>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DecodedParam {
pub name: Option<String>,
pub value: Option<serde_json::Value>,
#[serde(rename = "type")]
pub param_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VerboseTransaction {
pub hash: Option<String>,
pub nonce: Option<String>,
pub transaction_index: Option<String>,
pub from_address: Option<String>,
pub to_address: Option<String>,
pub value: Option<String>,
pub gas: Option<String>,
pub gas_price: Option<String>,
pub input: Option<String>,
pub receipt_status: Option<String>,
pub block_timestamp: Option<String>,
pub block_number: Option<String>,
pub block_hash: Option<String>,
pub logs: Option<Vec<TransactionLog>>,
pub decoded_call: Option<DecodedCall>,
pub internal_transactions: Option<Vec<InternalTransaction>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InternalTransaction {
pub transaction_hash: Option<String>,
pub block_number: Option<String>,
pub block_hash: Option<String>,
#[serde(rename = "type")]
pub tx_type: Option<String>,
pub from: Option<String>,
pub to: Option<String>,
pub value: Option<String>,
pub gas: Option<String>,
pub gas_used: Option<String>,
pub input: Option<String>,
pub output: Option<String>,
}