use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockData {
pub slot: u64,
pub blockhash: String,
pub parent_slot: u64,
pub parent_blockhash: String,
pub block_time: Option<i64>,
pub block_height: Option<u64>,
pub transaction_count: u64,
pub raw: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransactionData {
pub slot: u64,
pub tx_index: u32,
pub signature: String,
pub success: bool,
pub fee: u64,
pub compute_units_consumed: Option<u64>,
pub is_vote: bool,
pub pre_balances: Vec<u64>,
pub post_balances: Vec<u64>,
pub log_messages: Option<Vec<String>>,
pub block_time: Option<i64>,
pub raw: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TokenTransferData {
pub slot: u64,
pub tx_index: u32,
pub signature: String,
pub mint: String,
pub owner: String,
pub pre_amount: String,
pub post_amount: String,
pub decimals: u8,
pub block_time: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountActivityData {
pub slot: u64,
pub tx_index: u32,
pub signature: String,
pub account: String,
pub pre_balance: u64,
pub post_balance: u64,
pub balance_change: i64,
pub is_signer: bool,
pub is_fee_payer: bool,
pub block_time: Option<i64>,
}
pub struct SlotExtract {
pub block: BlockData,
pub transactions: Vec<TransactionData>,
pub token_transfers: Vec<TokenTransferData>,
pub account_activity: Vec<AccountActivityData>,
}