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
//! Re-exports data structures and implementations of all the IBC core (TAO) modules/components.
#![no_std]
#![forbid(unsafe_code)]
#![cfg_attr(not(test), deny(clippy::unwrap_used))]
#![cfg_attr(not(test), deny(clippy::disallowed_methods, clippy::disallowed_types,))]
#![deny(
    warnings,
    trivial_numeric_casts,
    unused_import_braces,
    unused_qualifications,
    rust_2018_idioms
)]

/// Re-exports IBC handler entrypoints from the `ibc-core-handler` crate for
/// added convenience.
pub mod entrypoint {
    #[doc(inline)]
    pub use ibc_core_handler::entrypoint::*;
}

/// Re-exports IBC primitive types from the `ibc-primitives` crate
pub mod primitives {
    #[doc(inline)]
    pub use ibc_primitives::*;
}

/// Re-exports ICS-02 implementation from the `ibc-core-client` crate
pub mod client {
    #[doc(inline)]
    pub use ibc_core_client::*;
}

/// Re-exports ICS-03 implementation from the `ibc-core-connection` crate
pub mod connection {
    #[doc(inline)]
    pub use ibc_core_connection::*;
}

/// Re-exports ICS-04 implementation from the `ibc-core-channel` crate
pub mod channel {
    #[doc(inline)]
    pub use ibc_core_channel::*;
}

/// Re-exports ICS-23 data structures from the `ibc-core-commitment-types` crate
pub mod commitment_types {
    #[doc(inline)]
    pub use ibc_core_commitment_types::*;
}

/// Re-exports ICS-24 implementation from the `ibc-core-host` crate
pub mod host {
    #[doc(inline)]
    pub use ibc_core_host::*;
}

/// Re-exports ICS-25 implementation from the `ibc-core-handler` crate
pub mod handler {
    #[doc(inline)]
    pub use ibc_core_handler::*;
}

/// Re-exports ICS-26 implementation from the `ibc-core-router` crate
pub mod router {
    #[doc(inline)]
    pub use ibc_core_router::*;
}

/// Re-exports convenient derive macros from `ibc-derive` crate.
pub mod derive {
    /// To specify the generic arguments for `ClientState`, use the following
    /// attributes:
    ///
    /// - `#[validation(<YourClientValidationContext>)]`
    /// - `#[execution(<YourClientExecutionContext>)]`
    ///
    /// The argument to the `validation` or `execution` attributes may contain
    /// lifetimes or generic types and even that types might be bounded by
    /// traits. For instance:
    ///
    /// - `#[validation(Context<S>)]`
    /// - `#[validation(Context<'a, S>)]`
    /// - `#[validation(Context<'a, S: Clone>)]`
    pub use ibc_derive::IbcCoreClientState as ClientState;
    /// A derive macro for implementing the
    /// [`ConsensusState`](crate::client::context::consensus_state::ConsensusState) trait for
    /// enums. Enums with variants that also implement the
    /// [`ConsensusState`](crate::client::context::consensus_state::ConsensusState) trait can
    /// leverage this macro for automatic implementation.
    pub use ibc_derive::IbcCoreConsensusState as ConsensusState;
}