sui_adapter_latest/static_programmable_transactions/typing/
mod.rs1use crate::{
5 execution_mode::ExecutionMode,
6 static_programmable_transactions::{
7 env,
8 loading::ast as L,
9 metering::{self, translation_meter::TranslationMeter},
10 },
11};
12pub mod ast;
13pub mod invariant_checks;
14pub mod translate;
15pub mod verify;
16
17pub fn translate_and_verify<Mode: ExecutionMode>(
18 meter: &mut TranslationMeter<'_, '_>,
19 env: &env::Env<Mode>,
20 lt: L::Transaction,
21) -> Result<ast::Transaction, Mode::Error> {
22 let mut ast = translate::transaction::<Mode>(env, lt)?;
23 metering::typing::meter::<Mode::Error>(meter, &ast)?;
24 verify::transaction::<Mode>(env, &mut ast)?;
25 invariant_checks::transaction::<Mode>(env, &ast)?;
26 Ok(ast)
27}