use {
crate::{
compression::{compress_best},
},
transaction_status::{
EncodedTransactionWithStatusMeta,
EncodedConfirmedBlock,
VersionedConfirmedBlock,
UiConfirmedBlock,
ConfirmedBlock,
UiTransactionEncoding,
BlockEncodingOptions,
TransactionDetails,
EncodedConfirmedTransactionWithStatusMeta,
TransactionWithStatusMeta
},
log::{debug, info},
};
pub mod compression;
pub mod convert;
pub mod extract_memos;
pub mod hash;
pub mod option_serializer;
pub mod parse_accounts;
pub mod parse_instruction;
pub mod parse_token;
pub mod sanitize;
pub mod transaction_status;
pub async fn encode_block<T>(
data: T,
) -> Result<Vec<u8>, Box<dyn std::error::Error>>
where
T: prost::Message,
{
let mut buf = Vec::with_capacity(data.encoded_len());
data.encode(&mut buf).unwrap();
let data = compress_best(&buf)?;
Ok(data)
}
pub fn convert_block(
encoded_block: EncodedConfirmedBlock,
encoding: UiTransactionEncoding,
options: BlockEncodingOptions,
) -> Result<VersionedConfirmedBlock, Box<dyn std::error::Error>> {
let ui_block: UiConfirmedBlock = encoded_block.into();
let confirmed_block = ConfirmedBlock::decode_with_options(ui_block, encoding, options)?;
let versioned_block = VersionedConfirmedBlock::try_from(confirmed_block)?;
Ok(versioned_block)
}
pub async fn encode_transaction<T>(
data: T,
) -> Result<Vec<u8>, Box<dyn std::error::Error>>
where
T: prost::Message,
{
let mut buf = Vec::with_capacity(data.encoded_len());
data.encode(&mut buf).unwrap();
let data = compress_best(&buf)?;
Ok(data)
}
pub fn convert_transaction(
encoded_tx: EncodedTransactionWithStatusMeta,
encoding: UiTransactionEncoding,
) -> Result<TransactionWithStatusMeta, Box<dyn std::error::Error>> {
let confirmed_tx = TransactionWithStatusMeta::decode(encoded_tx, encoding)?;
Ok(confirmed_tx)
}