1extern crate proc_macro;
14
15#[allow(unused_imports)]
16use proc_macro::TokenStream;
17
18#[cfg(feature = "oracle")]
20mod oracle;
21
22#[cfg(feature = "commitment-scheme")]
24mod commit;
25
26#[cfg(feature = "state-machine")]
28mod fsm;
29
30#[cfg(feature = "circuit-breaker")]
32mod circuit_breaker;
33
34#[cfg(feature = "storage")]
36mod storage;
37
38#[cfg(feature = "commitment-scheme")]
39#[proc_macro_attribute]
40pub fn commit(attr: TokenStream, input: TokenStream) -> TokenStream {
41 commit::commit(attr, input)
42}
43
44#[cfg(feature = "commitment-scheme")]
45#[proc_macro_attribute]
46pub fn reveal(attr: TokenStream, input: TokenStream) -> TokenStream {
47 commit::reveal(attr, input)
48}
49
50#[cfg(feature = "state-machine")]
51#[proc_macro_attribute]
52pub fn state_machine(attr: TokenStream, input: TokenStream) -> TokenStream {
53 fsm::state_machine(attr, input)
54}
55
56#[cfg(feature = "state-machine")]
57#[proc_macro_derive(TransitionHandler)]
58pub fn transition_handler_derive(input: TokenStream) -> TokenStream {
59 fsm::transition_handler_derive(input)
60}
61
62#[cfg(feature = "storage")]
63#[proc_macro_attribute]
64pub fn storage(attr: TokenStream, input: TokenStream) -> TokenStream {
65 storage::storage(attr, input)
66}
67
68#[cfg(feature = "storage")]
69#[proc_macro_attribute]
70pub fn key_constraint(attr: TokenStream, input: TokenStream) -> TokenStream {
71 storage::key_constraint(attr, input)
72}
73
74#[cfg(feature = "circuit-breaker")]
75#[proc_macro_attribute]
76pub fn when_opened(attr: TokenStream, input: TokenStream) -> TokenStream {
77 circuit_breaker::when(attr, input, true)
78}
79
80#[cfg(feature = "circuit-breaker")]
81#[proc_macro_attribute]
82pub fn when_closed(attr: TokenStream, input: TokenStream) -> TokenStream {
83 circuit_breaker::when(attr, input, false)
84}
85
86#[cfg(feature = "circuit-breaker")]
87#[proc_macro_derive(CircuitBreaker)]
88pub fn circuit_breaker_derive(input: TokenStream) -> TokenStream {
89 circuit_breaker::derive(input)
90}
91
92#[cfg(feature = "oracle")]
93#[proc_macro_attribute]
94pub fn oracle_subscriber(attr: TokenStream, input: TokenStream) -> TokenStream {
95 oracle::oracle_subscriber_attribute(attr, input)
96}
97
98#[cfg(feature = "oracle")]
99#[proc_macro_attribute]
100pub fn oracle_broker(attr: TokenStream, input: TokenStream) -> TokenStream {
101 oracle::oracle_broker_attribute(attr, input)
102}