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};
12use sui_types::error::ExecutionError;
13
14pub mod ast;
15pub mod invariant_checks;
16pub mod translate;
17pub mod verify;
18
19pub fn translate_and_verify<Mode: ExecutionMode>(
20 meter: &mut TranslationMeter<'_, '_>,
21 env: &env::Env,
22 lt: L::Transaction,
23) -> Result<ast::Transaction, ExecutionError> {
24 let mut ast = translate::transaction::<Mode>(env, lt)?;
25 metering::typing::meter(meter, &ast)?;
26 verify::transaction::<Mode>(env, &mut ast)?;
27 invariant_checks::transaction::<Mode>(env, &ast)?;
28 Ok(ast)
29}