aptos_sdk/transaction/mod.rs
1//! Transaction building and signing.
2//!
3//! This module provides types and utilities for constructing, signing,
4//! and submitting transactions to the Aptos blockchain.
5//!
6//! # Overview
7//!
8//! The transaction module supports several transaction types:
9//!
10//! - **Simple transactions** - Single sender, self-paid gas
11//! - **Multi-agent transactions** - Multiple signers required
12//! - **Sponsored transactions** - Fee payer pays gas on sender's behalf
13//! - **Batch transactions** - Multiple transactions submitted efficiently
14//!
15//! # Example: Simple Transaction
16//!
17//! ```rust,ignore
18//! use aptos_sdk::transaction::{TransactionBuilder, EntryFunction};
19//! use aptos_sdk::types::AccountAddress;
20//!
21//! let payload = EntryFunction::apt_transfer(recipient, 1000)?;
22//!
23//! let signed_txn = TransactionBuilder::new()
24//! .sender(sender.address())
25//! .sequence_number(0)
26//! .payload(payload.into())
27//! .chain_id(ChainId::testnet())
28//! .build_and_sign(&sender)?;
29//! ```
30//!
31//! # Example: Type-Safe Payload Building
32//!
33//! ```rust,ignore
34//! use aptos_sdk::transaction::InputEntryFunctionData;
35//!
36//! // Simple and ergonomic payload construction
37//! let payload = InputEntryFunctionData::new("0x1::aptos_account::transfer")
38//! .arg(recipient)
39//! .arg(1_000_000u64)
40//! .build()?;
41//!
42//! // With type arguments
43//! let payload = InputEntryFunctionData::new("0x1::coin::transfer")
44//! .type_arg("0x1::aptos_coin::AptosCoin")
45//! .arg(recipient)
46//! .arg(amount)
47//! .build()?;
48//! ```
49//!
50//! # Example: Sponsored Transaction
51//!
52//! ```rust,ignore
53//! use aptos_sdk::transaction::{SponsoredTransactionBuilder, EntryFunction};
54//!
55//! let payload = EntryFunction::apt_transfer(recipient, 1000)?;
56//!
57//! let signed_txn = SponsoredTransactionBuilder::new()
58//! .sender(user_account.address())
59//! .sequence_number(0)
60//! .fee_payer(sponsor_account.address())
61//! .payload(payload.into())
62//! .chain_id(ChainId::testnet())
63//! .build_and_sign(&user_account, &[], &sponsor_account)?;
64//! ```
65//!
66//! # Example: Batch Transactions
67//!
68//! ```rust,ignore
69//! use aptos_sdk::transaction::batch::TransactionBatchBuilder;
70//!
71//! let batch = TransactionBatchBuilder::new()
72//! .sender(account.address())
73//! .starting_sequence_number(seq_num)
74//! .chain_id(ChainId::testnet())
75//! .add_payload(payload1)
76//! .add_payload(payload2)
77//! .build_and_sign(&account)?;
78//!
79//! // Submit all in parallel
80//! let results = batch.submit_all(&client).await;
81//! ```
82
83pub mod authenticator;
84pub mod batch;
85pub mod builder;
86pub mod input;
87pub mod payload;
88pub mod simulation;
89pub mod sponsored;
90pub mod types;
91
92pub use authenticator::{AccountAuthenticator, Ed25519Authenticator, TransactionAuthenticator};
93pub use batch::{
94 BatchOperations, BatchSummary, BatchTransactionResult, BatchTransactionStatus,
95 SignedTransactionBatch, TransactionBatchBuilder,
96};
97pub use builder::{
98 TransactionBuilder, build_simulation_signed_fee_payer, build_simulation_signed_multi_agent,
99 sign_transaction,
100};
101pub use input::{
102 CollectionConfig, InputEntryFunctionData, InputEntryFunctionDataBuilder, IntoMoveArg, MoveI128,
103 MoveI256, MoveU256, functions, move_none, move_some, move_string, move_vec,
104 types as move_types,
105};
106pub use payload::{
107 EntryFunction, Script, ScriptArgument, TransactionExecutable, TransactionExtraConfig,
108 TransactionPayload, TransactionPayloadInner,
109};
110pub use simulation::{
111 SimulateQueryOptions, SimulatedEvent, SimulationOptions, SimulationResult, StateChange,
112 VmError, VmErrorCategory,
113};
114pub use sponsored::{PartiallySigned, Sponsor, SponsoredTransactionBuilder, sponsor_transaction};
115#[allow(deprecated)]
116// re-export retains the deprecated orderless types for source compatibility
117pub use types::{
118 FeePayerRawTransaction, MultiAgentRawTransaction, RawTransaction, RawTransactionOrderless,
119 SignedTransaction, SignedTransactionOrderless, TransactionInfo,
120};