sui_adapter_latest/static_programmable_transactions/typing/
mod.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use 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}