use crate::{
types::{Epoch, Epocher, ViewDelta},
Block,
};
use commonware_cryptography::certificate::Provider;
use commonware_parallel::Strategy;
use commonware_runtime::buffer::paged::CacheRef;
use std::num::{NonZeroU64, NonZeroUsize};
pub struct Config<B, P, ES, T>
where
B: Block,
P: Provider<Scope = Epoch>,
ES: Epocher,
T: Strategy,
{
pub provider: P,
pub epocher: ES,
pub partition_prefix: String,
pub mailbox_size: usize,
pub view_retention_timeout: ViewDelta,
pub prunable_items_per_section: NonZeroU64,
pub page_cache: CacheRef,
pub replay_buffer: NonZeroUsize,
pub key_write_buffer: NonZeroUsize,
pub value_write_buffer: NonZeroUsize,
pub block_codec_config: B::Cfg,
pub max_repair: NonZeroUsize,
pub max_pending_acks: NonZeroUsize,
pub strategy: T,
}