use deepsize2::DeepSizeOf;
use serde::{Deserialize, Serialize};
use crate::events::{
memory::{MemoryReadRecord, MemoryWriteRecord},
MemoryLocalEvent, PageProtLocalEvent, PageProtRecord,
};
pub(crate) const STATE_SIZE: usize = 25;
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf)]
pub struct KeccakPermutePageProtRecords {
pub read_pre_state_page_prot_records: Vec<PageProtRecord>,
pub write_post_state_page_prot_records: Vec<PageProtRecord>,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf)]
pub struct KeccakPermuteEvent {
pub clk: u64,
pub pre_state: [u64; STATE_SIZE],
pub post_state: [u64; STATE_SIZE],
pub state_read_records: Vec<MemoryReadRecord>,
pub state_write_records: Vec<MemoryWriteRecord>,
pub state_addr: u64,
pub local_mem_access: Vec<MemoryLocalEvent>,
pub page_prot_records: KeccakPermutePageProtRecords,
pub local_page_prot_access: Vec<PageProtLocalEvent>,
}