iota_single_node_benchmark/
tx_generator.rs

1// Copyright (c) Mysten Labs, Inc.
2// Modifications Copyright (c) 2024 IOTA Stiftung
3// SPDX-License-Identifier: Apache-2.0
4
5use iota_types::transaction::Transaction;
6pub use move_tx_generator::MoveTxGenerator;
7pub use package_publish_tx_generator::PackagePublishTxGenerator;
8pub use root_object_create_tx_generator::RootObjectCreateTxGenerator;
9pub use shared_object_create_tx_generator::SharedObjectCreateTxGenerator;
10
11use crate::mock_account::Account;
12
13mod move_tx_generator;
14mod package_publish_tx_generator;
15mod root_object_create_tx_generator;
16mod shared_object_create_tx_generator;
17
18pub(crate) trait TxGenerator: Send + Sync {
19    /// Given an account that contains a sender address, a keypair for that
20    /// address, and a list of gas objects owned by this address, generate a
21    /// single transaction.
22    fn generate_tx(&self, account: Account) -> Transaction;
23
24    fn name(&self) -> &'static str;
25}