pub mod genesis;
pub mod hooks;
pub mod query;
#[cfg(test)]
mod tests;
use sov_modules_api::Error;
use sov_modules_macros::ModuleInfo;
use sov_state::{StateValue, WorkingSet};
pub struct SequencerConfig<C: sov_modules_api::Context> {
pub seq_rollup_address: C::Address,
pub seq_da_address: Vec<u8>,
pub coins_to_lock: sov_bank::Coins<C>,
}
#[derive(ModuleInfo)]
pub struct Sequencer<C: sov_modules_api::Context> {
#[address]
pub(crate) address: C::Address,
#[module]
pub(crate) bank: sov_bank::Bank<C>,
#[state]
pub(crate) seq_rollup_address: StateValue<C::Address>,
#[state]
pub(crate) seq_da_address: StateValue<Vec<u8>>,
#[state]
pub(crate) coins_to_lock: StateValue<sov_bank::Coins<C>>,
}
impl<C: sov_modules_api::Context> sov_modules_api::Module for Sequencer<C> {
type Context = C;
type Config = SequencerConfig<C>;
fn genesis(
&self,
config: &Self::Config,
working_set: &mut WorkingSet<C::Storage>,
) -> Result<(), Error> {
Ok(self.init_module(config, working_set)?)
}
}