1mod build_info_abi;
2mod contract_abi;
3mod endpoint_abi;
4mod esdt_attribute_abi;
5mod event_abi;
6mod type_abi;
7mod type_abi_from;
8mod type_abi_impl_basic;
9mod type_abi_impl_codec_multi;
10mod type_abi_impl_vm_core;
11mod type_abi_universal_input;
12mod type_description;
13mod type_description_container;
14
15#[cfg(feature = "num-bigint")]
16mod type_abi_impl_big_int;
17
18pub use build_info_abi::*;
19pub use contract_abi::*;
20pub use endpoint_abi::*;
21pub use esdt_attribute_abi::EsdtAttributeAbi;
22pub use event_abi::*;
23pub use type_abi::*;
24pub use type_abi_from::*;
25pub use type_abi_universal_input::TypeAbiUniversalInput;
26pub use type_description::*;
27pub use type_description_container::*;
28
29pub type TypeName = alloc::string::String;
30
31#[derive(Clone, Default, Debug, PartialEq, Eq)]
32pub struct TypeNames {
33 pub abi: alloc::string::String,
34 pub rust: alloc::string::String,
35 pub specific: Option<alloc::string::String>,
36}
37
38impl TypeNames {
39 pub const fn new() -> Self {
40 TypeNames {
41 abi: alloc::string::String::new(),
42 rust: alloc::string::String::new(),
43 specific: None,
44 }
45 }
46
47 pub const fn from_abi(abi_name: alloc::string::String) -> Self {
48 TypeNames {
49 abi: abi_name,
50 rust: alloc::string::String::new(),
51 specific: None,
52 }
53 }
54
55 pub fn specific_or_abi(&self) -> &str {
56 self.specific.as_deref().unwrap_or(&self.abi)
57 }
58}