use borsh::{BorshDeserialize, BorshSerialize};
use solana_program::pubkey::Pubkey;
use crate::compressed_account::OutputCompressedAccountWithPackedContext;
#[derive(Debug, Clone, BorshDeserialize, BorshSerialize, Default, PartialEq)]
pub struct MerkleTreeSequenceNumber {
pub pubkey: Pubkey,
pub seq: u64,
}
#[derive(Debug, Clone, BorshDeserialize, BorshSerialize, Default, PartialEq)]
pub struct PublicTransactionEvent {
pub input_compressed_account_hashes: Vec<[u8; 32]>,
pub output_compressed_account_hashes: Vec<[u8; 32]>,
pub output_compressed_accounts: Vec<OutputCompressedAccountWithPackedContext>,
pub output_leaf_indices: Vec<u32>,
pub sequence_numbers: Vec<MerkleTreeSequenceNumber>,
pub relay_fee: Option<u64>,
pub is_compress: bool,
pub compress_or_decompress_lamports: Option<u64>,
pub pubkey_array: Vec<Pubkey>,
pub message: Option<Vec<u8>>,
}