1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//! Code generation for Move modules.
//!
//! This module provides utilities to generate type-safe Rust code from Move module ABIs.
//!
//! # Overview
//!
//! The code generator can create:
//! - Entry function wrappers with typed arguments
//! - View function wrappers with typed returns
//! - Struct definitions matching Move structs
//! - Event types for parsing on-chain events
//!
//! # Runtime Code Generation
//!
//! ```rust,ignore
//! use aptos_sdk::codegen::{ModuleGenerator, GeneratorConfig};
//! use aptos_sdk::api::response::MoveModuleABI;
//!
//! // Load ABI from file or API
//! let abi_json = std::fs::read_to_string("my_module_abi.json")?;
//! let abi: MoveModuleABI = serde_json::from_str(&abi_json)?;
//!
//! // Generate code
//! let generator = ModuleGenerator::new(&abi, GeneratorConfig::default());
//! let code = generator.generate()?;
//!
//! // Write to file
//! std::fs::write("src/generated/my_module.rs", code)?;
//! ```
//!
//! # Build-Time Code Generation
//!
//! For compile-time code generation, use the `build_helper` module in your `build.rs`:
//!
//! ```rust,ignore
//! // build.rs
//! use aptos_sdk::codegen::build_helper;
//!
//! fn main() {
//! // Generate from local ABI files
//! build_helper::generate_from_abi(
//! "abi/my_module.json",
//! "src/generated/",
//! ).expect("code generation failed");
//!
//! // Or generate from a directory of ABIs
//! build_helper::generate_from_directory(
//! "abi/",
//! "src/generated/",
//! ).expect("code generation failed");
//!
//! println!("cargo:rerun-if-changed=abi/");
//! }
//! ```
//!
//! # With Move Source (Better Parameter Names)
//!
//! ```rust,ignore
//! use aptos_sdk::codegen::{ModuleGenerator, GeneratorConfig, MoveSourceParser};
//!
//! // Load ABI
//! let abi: MoveModuleABI = serde_json::from_str(&abi_json)?;
//!
//! // Parse Move source for parameter names and docs
//! let move_source = std::fs::read_to_string("sources/my_module.move")?;
//! let source_info = MoveSourceParser::parse(&move_source);
//!
//! // Generate with enriched information
//! let generator = ModuleGenerator::new(&abi, GeneratorConfig::default())
//! .with_source_info(source_info);
//! let code = generator.generate()?;
//! ```
//!
//! # CLI Usage
//!
//! ```bash
//! # Generate from a local ABI file
//! aptos-codegen --input my_module_abi.json --output src/generated/
//!
//! # Generate from on-chain module with Move source
//! aptos-codegen --module 0x1::coin --network testnet --source coin.move --output src/
//!
//! # Generate from a directory of ABIs
//! aptos-codegen --input-dir abi/ --output src/generated/
//! ```
pub use ;
pub use ;
pub use ;