miden_base_macros/
lib.rs

1use crate::script::ScriptConfig;
2
3extern crate proc_macro;
4
5mod account_component_metadata;
6mod component_macro;
7mod generate;
8mod script;
9
10#[proc_macro]
11pub fn generate(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
12    generate::expand(input)
13}
14
15#[proc_macro_attribute]
16pub fn note_script(
17    attr: proc_macro::TokenStream,
18    item: proc_macro::TokenStream,
19) -> proc_macro::TokenStream {
20    script::expand(
21        attr,
22        item,
23        ScriptConfig {
24            export_interface: "miden:base/note-script@1.0.0",
25            guest_trait_path: "self::bindings::exports::miden::base::note_script::Guest",
26        },
27    )
28}
29
30#[proc_macro_attribute]
31pub fn tx_script(
32    attr: proc_macro::TokenStream,
33    item: proc_macro::TokenStream,
34) -> proc_macro::TokenStream {
35    script::expand(
36        attr,
37        item,
38        ScriptConfig {
39            export_interface: "miden:base/transaction-script@1.0.0",
40            guest_trait_path: "self::bindings::exports::miden::base::transaction_script::Guest",
41        },
42    )
43}
44
45#[proc_macro_attribute]
46pub fn component(
47    attr: proc_macro::TokenStream,
48    item: proc_macro::TokenStream,
49) -> proc_macro::TokenStream {
50    component_macro::component(attr, item)
51}