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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#[cfg(feature = "scrt")]
pub use fadroma_platform_scrt as scrt;
#[cfg(feature = "scrt")]
pub use scrt::cosmwasm_std;
#[cfg(feature = "scrt")]
pub use scrt::schemars;
#[cfg(feature = "scrt")]
pub use scrt::serde;
#[cfg(feature = "scrt")]
pub mod core;
#[cfg(feature = "derive")]
pub use fadroma_proc_derive as derive_contract;
#[cfg(feature = "composability")]
pub mod composability;
#[cfg(feature = "killswitch")]
pub mod killswitch;
#[cfg(feature = "admin")]
pub mod admin;
#[cfg(feature = "permit")]
pub mod permit;
#[cfg(feature = "vk")]
pub mod vk;
#[cfg(feature = "math")]
pub mod math;
#[cfg(feature = "snip20-client")]
pub mod snip20_client;
#[cfg(feature = "snip20-impl")]
pub mod snip20_impl;
#[cfg(feature = "storage")]
pub mod storage;
#[cfg(feature = "message")]
pub use fadroma_proc_message as proc_message;
#[cfg(feature = "response")]
pub mod response;
#[cfg(all(feature = "ensemble", not(target_arch = "wasm32")))]
pub mod ensemble;
#[cfg(feature = "reexport-secret-toolkit")]
pub use secret_toolkit;
pub mod prelude {
pub type UsuallyOk = StdResult<()>;
pub type Eventually<V> = StdResult<Option<V>>;
pub use crate::core::*;
#[cfg(feature = "scrt")]
pub use crate::scrt::{*, cosmwasm_std, cosmwasm_std::*};
#[cfg(feature = "scrt")]
pub use schemars::{self, JsonSchema};
#[cfg(feature = "math")]
pub use crate::math::*;
#[cfg(feature = "storage")]
pub use crate::storage::{
load, save, remove,
ns_load, ns_save, ns_remove
};
#[cfg(feature = "snip20-client")]
pub use crate::snip20_client::ISnip20;
#[cfg(feature = "message")]
pub use crate::proc_message::message;
#[cfg(feature = "response")]
pub use crate::response::*;
#[cfg(feature = "vk")]
pub use crate::vk::ViewingKey;
#[cfg(feature = "permit")]
pub use crate::permit::{Permit, Permission};
#[cfg(feature = "composability")]
pub use crate::composability::Composable;
}
#[cfg(feature = "scrt")]
#[macro_export] macro_rules! entrypoint {
($($fadroma:ident)::+, $($contract:ident)::+ $(,)?) => {
$($fadroma)::+::entrypoint!(
$($fadroma)::+,
$($contract)::+::init,
$($contract)::+::handle,
$($contract)::+::query,
);
};
($($fadroma:ident)::+, $($init:ident)::+, $($handle:ident)::+, $($query:ident)::+ $(,)?) => {
#[cfg(target_arch = "wasm32")]
mod wasm {
use $($fadroma)::+::{scrt::cosmwasm_std::{
do_init,
do_handle,
do_query,
ExternalStorage as EStorage,
ExternalApi as EApi,
ExternalQuerier as EQuerier,
}};
#[no_mangle] extern "C" fn init(env_ptr: u32, msg_ptr: u32) -> u32 {
do_init(&super::$($init)::+::<EStorage, EApi, EQuerier>, env_ptr, msg_ptr)
}
#[no_mangle] extern "C" fn handle(env_ptr: u32, msg_ptr: u32) -> u32 {
do_handle(&super::$($handle)::+::<EStorage, EApi, EQuerier>, env_ptr, msg_ptr)
}
#[no_mangle] extern "C" fn query(msg_ptr: u32) -> u32 {
do_query(&super::$($query)::+::<EStorage, EApi, EQuerier>, msg_ptr)
}
}
}
}