use rialo_s_sdk::{hash::Hash, signature::Signature};
use serde::{Deserialize, Serialize};
use super::{
get_transaction::{Transaction, TransactionStatusMetadata},
rpc_response_context::RpcResponseContext,
};
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetBlockRequest {
pub block_height: u64,
#[serde(default)]
pub config: Option<GetBlockConfig>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetBlockConfig {
#[serde(default)]
pub transaction_details: TransactionDetails,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub enum TransactionDetails {
#[default]
Full,
Signatures,
None,
}
#[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct BlockInfo {
#[serde(serialize_with = "super::serde::serialize_hash_as_base58")]
pub blockhash: Hash,
pub block_height: u64,
pub block_time: i64,
pub transactions: Option<Vec<TransactionWithMeta>>,
pub signatures: Option<Vec<Signature>>,
}
#[derive(Debug, Serialize)]
pub struct TransactionWithMeta {
pub transaction: Transaction,
pub meta: Option<TransactionStatusMetadata>,
}
#[derive(Serialize, Debug)]
pub struct GetBlockResponse {
pub context: RpcResponseContext,
pub value: BlockInfo,
}