diff --git a/Cargo.lock b/Cargo.lock index 68ecce33f..4d2278950 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -638,7 +638,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "cgp-async" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ "cgp-async-macro", ] @@ -646,7 +646,7 @@ dependencies = [ [[package]] name = "cgp-async-macro" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ "proc-macro2", "quote", @@ -656,7 +656,7 @@ dependencies = [ [[package]] name = "cgp-component" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ "cgp-async", "cgp-component-macro", @@ -665,9 +665,23 @@ dependencies = [ [[package]] name = "cgp-component-macro" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ + "cgp-component-macro-lib", "itertools 0.11.0", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.68", +] + +[[package]] +name = "cgp-component-macro-lib" +version = "0.1.0" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" +dependencies = [ + "itertools 0.11.0", + "prettyplease", "proc-macro2", "quote", "syn 2.0.68", @@ -676,7 +690,7 @@ dependencies = [ [[package]] name = "cgp-core" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ "cgp-async", "cgp-component", @@ -688,7 +702,7 @@ dependencies = [ [[package]] name = "cgp-error" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ "cgp-async", "cgp-component", @@ -697,7 +711,7 @@ dependencies = [ [[package]] name = "cgp-error-eyre" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ "cgp-core", "eyre", @@ -706,7 +720,7 @@ dependencies = [ [[package]] name = "cgp-inner" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ "cgp-async", "cgp-component", @@ -715,7 +729,7 @@ dependencies = [ [[package]] name = "cgp-run" version = "0.1.0" -source = "git+https://github.com/informalsystems/cgp.git?branch=main#9c323af08b5076397005fd0e8912687c71ebacd4" +source = "git+https://github.com/informalsystems/cgp.git#89293a9d63b28e0d3996b56fb8470ca0f93077b0" dependencies = [ "cgp-async", "cgp-component", @@ -1723,6 +1737,7 @@ name = "hermes-cosmos-chain-components" version = "0.1.0" dependencies = [ "bech32 0.9.1", + "cgp-component-macro", "cgp-core", "eyre", "futures", @@ -1971,6 +1986,7 @@ dependencies = [ name = "hermes-relayer-components" version = "0.1.0" dependencies = [ + "cgp-component-macro", "cgp-core", "hermes-encoding-components", "hermes-logging-components", @@ -3600,6 +3616,16 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn 2.0.68", +] + [[package]] name = "primitive-types" version = "0.12.2" diff --git a/Cargo.toml b/Cargo.toml index 0a64d557c..3d72bf7df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,6 +73,7 @@ tendermint-testgen = { version = "0.37" } basecoin = { version = "0.1.0" } cgp-core = { version = "0.1.0" } cgp-error-eyre = { version = "0.1.0" } +cgp-component-macro = { version = "0.1.0" } clap = { version = "4.5.3" } oneline-eyre = { version = "0.1.0" } prost = { version = "0.12.3" } @@ -152,15 +153,16 @@ ibc-derive = { git = "https://github.com/cosmos/ibc-rs.git", re basecoin = { git = "https://github.com/informalsystems/basecoin-rs.git", rev = "65c00d3" } tower-abci = { git = "https://github.com/informalsystems/tower-abci", rev = "37d952e" } -cgp-core = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } -cgp-component = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } -cgp-component-macro = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } -cgp-error = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } -cgp-error-eyre = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } -cgp-async = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } -cgp-async-macro = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } -cgp-run = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } -cgp-inner = { git = "https://github.com/informalsystems/cgp.git", branch = "main" } +cgp-core = { git = "https://github.com/informalsystems/cgp.git" } +cgp-component = { git = "https://github.com/informalsystems/cgp.git" } +cgp-component-macro = { git = "https://github.com/informalsystems/cgp.git" } +cgp-component-macro-lib = { git = "https://github.com/informalsystems/cgp.git" } +cgp-error = { git = "https://github.com/informalsystems/cgp.git" } +cgp-error-eyre = { git = "https://github.com/informalsystems/cgp.git" } +cgp-async = { git = "https://github.com/informalsystems/cgp.git" } +cgp-async-macro = { git = "https://github.com/informalsystems/cgp.git" } +cgp-run = { git = "https://github.com/informalsystems/cgp.git" } +cgp-inner = { git = "https://github.com/informalsystems/cgp.git" } ibc-relayer = { git = "https://github.com/informalsystems/hermes.git", rev = "ddc0dd8" } ibc-telemetry = { git = "https://github.com/informalsystems/hermes.git", rev = "ddc0dd8" } diff --git a/crates/celestia/celestia-integration-tests/src/contexts/bootstrap.rs b/crates/celestia/celestia-integration-tests/src/contexts/bootstrap.rs index a1a922dd0..ff0741af9 100644 --- a/crates/celestia/celestia-integration-tests/src/contexts/bootstrap.rs +++ b/crates/celestia/celestia-integration-tests/src/contexts/bootstrap.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use std::sync::OnceLock; use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use cgp_error_eyre::{ProvideEyreError, RaiseDebugError}; use eyre::Error; use hermes_celestia_test_components::bootstrap::components::CelestiaBootstrapComponents as BaseCelestiaBootstrapComponents; @@ -28,10 +28,7 @@ use hermes_cosmos_integration_tests::traits::bootstrap::cosmos_builder::CosmosBu use hermes_cosmos_integration_tests::traits::bootstrap::gas_denom::GasDenomGetter; use hermes_cosmos_integration_tests::traits::bootstrap::relayer_chain_config::RelayerChainConfigBuilderComponent; use hermes_cosmos_relayer::contexts::builder::CosmosBuilder; -use hermes_cosmos_test_components::bootstrap::components::cosmos_sdk_legacy::{ - CanUseLegacyCosmosSdkChainBootstrapper, IsLegacyCosmosSdkBootstrapComponent, - LegacyCosmosSdkBootstrapComponents, -}; +use hermes_cosmos_test_components::bootstrap::components::cosmos_sdk_legacy::*; use hermes_cosmos_test_components::bootstrap::traits::chain::build_chain_driver::ChainDriverBuilderComponent; use hermes_cosmos_test_components::bootstrap::traits::fields::account_prefix::AccountPrefixGetter; use hermes_cosmos_test_components::bootstrap::traits::fields::chain_command_path::ChainCommandPathGetter; @@ -68,11 +65,13 @@ impl HasComponents for CelestiaBootstrap { type Components = CelestiaBootstrapComponents; } -delegate_all!( - IsLegacyCosmosSdkBootstrapComponent, - LegacyCosmosSdkBootstrapComponents, - CelestiaBootstrapComponents, -); +with_legacy_cosmos_sdk_bootstrap_components! { + delegate_components! { + CelestiaBootstrapComponents { + @LegacyCosmosSdkBootstrapComponents: LegacyCosmosSdkBootstrapComponents, + } + } +} delegate_components! { CelestiaBootstrapComponents { diff --git a/crates/cosmos/cosmos-integration-tests/tests/celestia_integration_tests.rs b/crates/celestia/celestia-integration-tests/tests/celestia_integration_tests.rs similarity index 100% rename from crates/cosmos/cosmos-integration-tests/tests/celestia_integration_tests.rs rename to crates/celestia/celestia-integration-tests/tests/celestia_integration_tests.rs diff --git a/crates/celestia/celestia-test-components/src/bootstrap/components.rs b/crates/celestia/celestia-test-components/src/bootstrap/components.rs index f53c07081..1941bfc65 100644 --- a/crates/celestia/celestia-test-components/src/bootstrap/components.rs +++ b/crates/celestia/celestia-test-components/src/bootstrap/components.rs @@ -17,10 +17,7 @@ use crate::bootstrap::traits::init_bridge_data::BridgeDataInitializerComponent; use crate::bootstrap::traits::start_bridge::BridgeStarterComponent; use crate::bootstrap::traits::types::bridge_config::BridgeConfigTypeComponent; -pub struct CelestiaBootstrapComponents; - -delegate_components! { - #[mark_component(IsCelestiaBootstrapComponent)] +define_components! { CelestiaBootstrapComponents { BridgeDataInitializerComponent: InitCelestiaBridgeData, diff --git a/crates/cli/cli-framework/src/lib.rs b/crates/cli/cli-framework/src/lib.rs index ad4f080c4..e734e92d6 100644 --- a/crates/cli/cli-framework/src/lib.rs +++ b/crates/cli/cli-framework/src/lib.rs @@ -1,5 +1,3 @@ -#![recursion_limit = "256"] - use hermes_cosmos_relayer::types::error::Error; pub mod application; diff --git a/crates/cli/cli/bin/hermes.rs b/crates/cli/cli/bin/hermes.rs index ae6f075d0..26aa4f8a0 100644 --- a/crates/cli/cli/bin/hermes.rs +++ b/crates/cli/cli/bin/hermes.rs @@ -1,5 +1,3 @@ -#![recursion_limit = "256"] - use hermes_cli::application::HermesCli; use hermes_cli_framework::application::boot; diff --git a/crates/cosmos/cosmos-chain-components/Cargo.toml b/crates/cosmos/cosmos-chain-components/Cargo.toml index 60584d02b..70529a31a 100644 --- a/crates/cosmos/cosmos-chain-components/Cargo.toml +++ b/crates/cosmos/cosmos-chain-components/Cargo.toml @@ -14,6 +14,7 @@ description = """ [dependencies] cgp-core = { workspace = true } +cgp-component-macro = { workspace = true } hermes-runtime = { workspace = true } hermes-relayer-components = { workspace = true } hermes-relayer-components-extra = { workspace = true } diff --git a/crates/cosmos/cosmos-chain-components/src/components/client.rs b/crates/cosmos/cosmos-chain-components/src/components/client.rs index df551b792..c2a73d275 100644 --- a/crates/cosmos/cosmos-chain-components/src/components/client.rs +++ b/crates/cosmos/cosmos-chain-components/src/components/client.rs @@ -1,4 +1,4 @@ -use cgp_core::prelude::delegate_components; +use cgp_core::prelude::*; use hermes_relayer_components::chain::impls::delegate::message_builders::channel_handshake::DelegateBuildChannelHandshakeMessage; use hermes_relayer_components::chain::impls::delegate::message_builders::connection_handshake::DelegateBuildConnectionHandshakeMessage; use hermes_relayer_components::chain::impls::delegate::message_builders::create_client::DelegateBuildCreateClientMessage; @@ -176,10 +176,7 @@ use crate::impls::types::create_client_options::ProvideCosmosCreateClientSetting use crate::impls::types::payload::ProvideCosmosPayloadTypes; use crate::traits::abci_query::AbciQuerierComponent; -pub struct CosmosClientComponents; - -delegate_components! { - #[mark_component(IsCosmosClientComponents)] +define_components! { CosmosClientComponents { [ HeightTypeComponent, diff --git a/crates/cosmos/cosmos-chain-components/src/components/transaction.rs b/crates/cosmos/cosmos-chain-components/src/components/transaction.rs index 73a3b1d69..bb5fd56e3 100644 --- a/crates/cosmos/cosmos-chain-components/src/components/transaction.rs +++ b/crates/cosmos/cosmos-chain-components/src/components/transaction.rs @@ -1,27 +1,24 @@ use cgp_core::prelude::*; -use hermes_relayer_components::chain::traits::send_message::MessageSenderComponent; -use hermes_relayer_components::chain::traits::types::chain_id::ChainIdTypeComponent; -use hermes_relayer_components::chain::traits::types::event::EventTypeComponent; -use hermes_relayer_components::chain::traits::types::message::MessageTypeComponent; -use hermes_relayer_components::components::default::transaction::DefaultTxComponents; -use hermes_relayer_components::transaction::impls::poll_tx_response::PollTimeoutGetterComponent; -use hermes_relayer_components::transaction::traits::encode_tx::TxEncoderComponent; -use hermes_relayer_components::transaction::traits::estimate_tx_fee::TxFeeEstimatorComponent; -use hermes_relayer_components::transaction::traits::nonce::allocate_nonce::NonceAllocatorComponent; -use hermes_relayer_components::transaction::traits::nonce::nonce_guard::NonceGuardComponent; -use hermes_relayer_components::transaction::traits::nonce::query_nonce::NonceQuerierComponent; -use hermes_relayer_components::transaction::traits::parse_events::TxResponseAsEventsParserComponent; -use hermes_relayer_components::transaction::traits::poll_tx_response::TxResponsePollerComponent; -use hermes_relayer_components::transaction::traits::query_tx_response::TxResponseQuerierComponent; -use hermes_relayer_components::transaction::traits::send_messages_with_signer::MessagesWithSignerSenderComponent; -use hermes_relayer_components::transaction::traits::send_messages_with_signer_and_nonce::MessagesWithSignerAndNonceSenderComponent; -use hermes_relayer_components::transaction::traits::submit_tx::TxSubmitterComponent; -use hermes_relayer_components::transaction::traits::types::fee::FeeTypeComponent; -use hermes_relayer_components::transaction::traits::types::nonce::NonceTypeComponent; -use hermes_relayer_components::transaction::traits::types::signer::SignerTypeComponent; -use hermes_relayer_components::transaction::traits::types::transaction::TransactionTypeComponent; -use hermes_relayer_components::transaction::traits::types::tx_hash::TransactionHashTypeComponent; -use hermes_relayer_components::transaction::traits::types::tx_response::TxResponseTypeComponent; +pub use hermes_relayer_components::chain::traits::send_message::MessageSenderComponent; +pub use hermes_relayer_components::components::default::transaction::DefaultTxComponents; +pub use hermes_relayer_components::transaction::impls::poll_tx_response::PollTimeoutGetterComponent; +pub use hermes_relayer_components::transaction::traits::encode_tx::TxEncoderComponent; +pub use hermes_relayer_components::transaction::traits::estimate_tx_fee::TxFeeEstimatorComponent; +pub use hermes_relayer_components::transaction::traits::nonce::allocate_nonce::NonceAllocatorComponent; +pub use hermes_relayer_components::transaction::traits::nonce::nonce_guard::NonceGuardComponent; +pub use hermes_relayer_components::transaction::traits::nonce::query_nonce::NonceQuerierComponent; +pub use hermes_relayer_components::transaction::traits::parse_events::TxResponseAsEventsParserComponent; +pub use hermes_relayer_components::transaction::traits::poll_tx_response::TxResponsePollerComponent; +pub use hermes_relayer_components::transaction::traits::query_tx_response::TxResponseQuerierComponent; +pub use hermes_relayer_components::transaction::traits::send_messages_with_signer::MessagesWithSignerSenderComponent; +pub use hermes_relayer_components::transaction::traits::send_messages_with_signer_and_nonce::MessagesWithSignerAndNonceSenderComponent; +pub use hermes_relayer_components::transaction::traits::submit_tx::TxSubmitterComponent; +pub use hermes_relayer_components::transaction::traits::types::fee::FeeTypeComponent; +pub use hermes_relayer_components::transaction::traits::types::nonce::NonceTypeComponent; +pub use hermes_relayer_components::transaction::traits::types::signer::SignerTypeComponent; +pub use hermes_relayer_components::transaction::traits::types::transaction::TransactionTypeComponent; +pub use hermes_relayer_components::transaction::traits::types::tx_hash::TransactionHashTypeComponent; +pub use hermes_relayer_components::transaction::traits::types::tx_response::TxResponseTypeComponent; use crate::impls::transaction::encode_tx::EncodeCosmosTx; use crate::impls::transaction::estimate_fee::EstimateCosmosTxFee; @@ -30,19 +27,10 @@ use crate::impls::transaction::poll_timeout::DefaultPollTimeout; use crate::impls::transaction::query_nonce::QueryCosmosAccount; use crate::impls::transaction::query_tx_response::QueryCosmosTxResponse; use crate::impls::transaction::submit_tx::BroadcastCosmosTx; -use crate::impls::types::chain::ProvideCosmosChainTypes; use crate::impls::types::transaction::ProvideCosmosTransactionTypes; -pub struct CosmosTxComponents; - -delegate_components! { +define_components! { CosmosTxComponents { - [ - ChainIdTypeComponent, - MessageTypeComponent, - EventTypeComponent, - ]: - ProvideCosmosChainTypes, [ SignerTypeComponent, NonceTypeComponent, diff --git a/crates/cosmos/cosmos-chain-components/src/encoding/components.rs b/crates/cosmos/cosmos-chain-components/src/encoding/components.rs index c38ef5280..01b95d959 100644 --- a/crates/cosmos/cosmos-chain-components/src/encoding/components.rs +++ b/crates/cosmos/cosmos-chain-components/src/encoding/components.rs @@ -2,20 +2,17 @@ use cgp_core::prelude::*; use hermes_encoding_components::impls::delegate::DelegateEncoding; use hermes_encoding_components::impls::encoded::ProvideEncodedBytes; use hermes_encoding_components::impls::schema::ProvideStringSchema; -use hermes_encoding_components::traits::convert::ConverterComponent; -use hermes_encoding_components::traits::decoder::DecoderComponent; -use hermes_encoding_components::traits::encoded::EncodedTypeComponent; -use hermes_encoding_components::traits::encoder::EncoderComponent; -use hermes_encoding_components::traits::schema::{SchemaGetterComponent, SchemaTypeComponent}; +pub use hermes_encoding_components::traits::convert::ConverterComponent; +pub use hermes_encoding_components::traits::decoder::DecoderComponent; +pub use hermes_encoding_components::traits::encoded::EncodedTypeComponent; +pub use hermes_encoding_components::traits::encoder::EncoderComponent; +pub use hermes_encoding_components::traits::schema::{SchemaGetterComponent, SchemaTypeComponent}; use crate::encoding::convert::CosmosConverterComponents; use crate::encoding::encode::CosmosEncoderComponents; use crate::encoding::type_url::CosmosTypeUrlSchemas; -pub struct CosmosEncodingComponents; - -delegate_components! { - #[mark_component(IsCosmosEncodingComponent)] +define_components! { CosmosEncodingComponents { EncodedTypeComponent: ProvideEncodedBytes, diff --git a/crates/cosmos/cosmos-chain-components/src/impls/types/chain.rs b/crates/cosmos/cosmos-chain-components/src/impls/types/chain.rs index 74492794e..3a809cc6d 100644 --- a/crates/cosmos/cosmos-chain-components/src/impls/types/chain.rs +++ b/crates/cosmos/cosmos-chain-components/src/impls/types/chain.rs @@ -1,7 +1,8 @@ use alloc::sync::Arc; +use cgp_core::CanRaiseError; use core::time::Duration; -use cgp_core::{delegate_components, Async, CanRaiseError, HasErrorType}; +use cgp_core::prelude::*; use hermes_relayer_components::chain::impls::types::ack::ProvideBytesAcknowlegement; use hermes_relayer_components::chain::impls::types::commitment::ProvideBytesPacketCommitment; use hermes_relayer_components::chain::impls::types::commitment_prefix::ProvideCommitmentPrefixBytes; diff --git a/crates/cosmos/cosmos-chain-components/src/impls/types/payload.rs b/crates/cosmos/cosmos-chain-components/src/impls/types/payload.rs index a248ba8ab..5ac69f11e 100644 --- a/crates/cosmos/cosmos-chain-components/src/impls/types/payload.rs +++ b/crates/cosmos/cosmos-chain-components/src/impls/types/payload.rs @@ -1,4 +1,4 @@ -use cgp_core::{delegate_components, Async}; +use cgp_core::prelude::*; use hermes_relayer_components::chain::impls::types::payloads::channel::ProvideChannelPayloadTypes; use hermes_relayer_components::chain::impls::types::payloads::connection::ProvideConnectionPayloadTypes; use hermes_relayer_components::chain::impls::types::payloads::packet::ProvidePacketPayloadTypes; diff --git a/crates/cosmos/cosmos-chain-components/src/lib.rs b/crates/cosmos/cosmos-chain-components/src/lib.rs index 84f48a2f8..3977b868f 100644 --- a/crates/cosmos/cosmos-chain-components/src/lib.rs +++ b/crates/cosmos/cosmos-chain-components/src/lib.rs @@ -1,7 +1,6 @@ #![allow(refining_impl_trait)] #![allow(clippy::type_complexity)] #![allow(clippy::infallible_destructuring_match)] -#![recursion_limit = "256"] extern crate alloc; diff --git a/crates/cosmos/cosmos-integration-tests/src/contexts/binary_channel/setup.rs b/crates/cosmos/cosmos-integration-tests/src/contexts/binary_channel/setup.rs index ed0ded030..c7544da70 100644 --- a/crates/cosmos/cosmos-integration-tests/src/contexts/binary_channel/setup.rs +++ b/crates/cosmos/cosmos-integration-tests/src/contexts/binary_channel/setup.rs @@ -1,7 +1,7 @@ use alloc::sync::Arc; use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use hermes_cosmos_chain_components::types::channel::CosmosInitChannelOptions; use hermes_cosmos_chain_components::types::connection::CosmosInitConnectionOptions; use hermes_cosmos_relayer::contexts::birelay::CosmosBiRelay; @@ -14,9 +14,7 @@ use hermes_test_components::driver::traits::types::builder_at::ProvideBuilderTyp use hermes_test_components::driver::traits::types::chain_at::ProvideChainTypeAt; use hermes_test_components::driver::traits::types::chain_driver_at::ProvideChainDriverTypeAt; use hermes_test_components::driver::traits::types::relay_at::ProvideRelayTypeAt; -use hermes_test_components::setup::binary_channel::components::{ - BinaryChannelTestComponents, CanUseBinaryChannelTestSetup, IsBinaryChannelTestComponent, -}; +use hermes_test_components::setup::binary_channel::components::*; use hermes_test_components::setup::traits::bootstrap_at::ProvideBootstrapAt; use hermes_test_components::setup::traits::builder_at::ProvideBuilderAt; use hermes_test_components::setup::traits::create_client_options_at::ProvideCreateClientOptionsAt; @@ -55,11 +53,13 @@ impl HasComponents for CosmosBinaryChannelSetup { type Components = CosmosBinaryChannelSetupComponents; } -delegate_all!( - IsBinaryChannelTestComponent, - BinaryChannelTestComponents, - CosmosBinaryChannelSetupComponents, -); +with_binary_channel_test_components! { + delegate_components! { + CosmosBinaryChannelSetupComponents { + @BinaryChannelTestComponents: BinaryChannelTestComponents, + } + } +} delegate_components! { CosmosBinaryChannelSetupComponents { diff --git a/crates/cosmos/cosmos-integration-tests/src/contexts/bootstrap.rs b/crates/cosmos/cosmos-integration-tests/src/contexts/bootstrap.rs index 21b115c14..c133fa785 100644 --- a/crates/cosmos/cosmos-integration-tests/src/contexts/bootstrap.rs +++ b/crates/cosmos/cosmos-integration-tests/src/contexts/bootstrap.rs @@ -2,12 +2,10 @@ use alloc::sync::Arc; use std::path::PathBuf; use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use hermes_cosmos_relayer::contexts::builder::CosmosBuilder; use hermes_cosmos_relayer::types::error::{DebugError, Error, ProvideCosmosError}; -use hermes_cosmos_test_components::bootstrap::components::cosmos_sdk::{ - CanUseCosmosSdkChainBootstrapper, CosmosSdkBootstrapComponents, IsCosmosSdkBootstrapComponent, -}; +use hermes_cosmos_test_components::bootstrap::components::cosmos_sdk::*; use hermes_cosmos_test_components::bootstrap::impls::generator::wallet_config::GenerateStandardWalletConfig; use hermes_cosmos_test_components::bootstrap::traits::chain::build_chain_driver::ChainDriverBuilderComponent; use hermes_cosmos_test_components::bootstrap::traits::fields::account_prefix::AccountPrefixGetter; @@ -64,11 +62,13 @@ impl HasComponents for CosmosBootstrap { type Components = CosmosBootstrapComponents; } -delegate_all!( - IsCosmosSdkBootstrapComponent, - CosmosSdkBootstrapComponents, - CosmosBootstrapComponents, -); +with_cosmos_sdk_bootstrap_components! { + delegate_components! { + CosmosBootstrapComponents { + @CosmosSdkBootstrapComponents: CosmosSdkBootstrapComponents, + } + } +} delegate_components! { CosmosBootstrapComponents { diff --git a/crates/cosmos/cosmos-integration-tests/src/contexts/bootstrap_legacy.rs b/crates/cosmos/cosmos-integration-tests/src/contexts/bootstrap_legacy.rs index a5e8b9e01..a2b8e0fbe 100644 --- a/crates/cosmos/cosmos-integration-tests/src/contexts/bootstrap_legacy.rs +++ b/crates/cosmos/cosmos-integration-tests/src/contexts/bootstrap_legacy.rs @@ -2,13 +2,10 @@ use alloc::sync::Arc; use std::path::PathBuf; use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use hermes_cosmos_relayer::contexts::builder::CosmosBuilder; use hermes_cosmos_relayer::types::error::{DebugError, Error, ProvideCosmosError}; -use hermes_cosmos_test_components::bootstrap::components::cosmos_sdk_legacy::{ - CanUseLegacyCosmosSdkChainBootstrapper, IsLegacyCosmosSdkBootstrapComponent, - LegacyCosmosSdkBootstrapComponents, -}; +use hermes_cosmos_test_components::bootstrap::components::cosmos_sdk_legacy::*; use hermes_cosmos_test_components::bootstrap::impls::generator::wallet_config::GenerateStandardWalletConfig; use hermes_cosmos_test_components::bootstrap::traits::chain::build_chain_driver::ChainDriverBuilderComponent; use hermes_cosmos_test_components::bootstrap::traits::fields::account_prefix::AccountPrefixGetter; @@ -66,11 +63,13 @@ impl HasComponents for LegacyCosmosBootstrap { type Components = LegacyCosmosBootstrapComponents; } -delegate_all!( - IsLegacyCosmosSdkBootstrapComponent, - LegacyCosmosSdkBootstrapComponents, - LegacyCosmosBootstrapComponents, -); +with_legacy_cosmos_sdk_bootstrap_components! { + delegate_components! { + LegacyCosmosBootstrapComponents { + @LegacyCosmosSdkBootstrapComponents: LegacyCosmosSdkBootstrapComponents, + } + } +} delegate_components! { LegacyCosmosBootstrapComponents { diff --git a/crates/cosmos/cosmos-integration-tests/src/lib.rs b/crates/cosmos/cosmos-integration-tests/src/lib.rs index 8899ea8c0..493bbc13d 100644 --- a/crates/cosmos/cosmos-integration-tests/src/lib.rs +++ b/crates/cosmos/cosmos-integration-tests/src/lib.rs @@ -1,5 +1,4 @@ #![allow(clippy::type_complexity)] -#![recursion_limit = "256"] extern crate alloc; diff --git a/crates/cosmos/cosmos-integration-tests/tests/bootstrap.rs b/crates/cosmos/cosmos-integration-tests/tests/bootstrap.rs index 6ac9bc0f1..462e84e9b 100644 --- a/crates/cosmos/cosmos-integration-tests/tests/bootstrap.rs +++ b/crates/cosmos/cosmos-integration-tests/tests/bootstrap.rs @@ -1,5 +1,3 @@ -#![recursion_limit = "256"] - use std::sync::Arc; use hermes_cosmos_integration_tests::contexts::bootstrap::CosmosBootstrap; diff --git a/crates/cosmos/cosmos-integration-tests/tests/bootstrap_legacy.rs b/crates/cosmos/cosmos-integration-tests/tests/bootstrap_legacy.rs index a1ca67d4c..a0a42a649 100644 --- a/crates/cosmos/cosmos-integration-tests/tests/bootstrap_legacy.rs +++ b/crates/cosmos/cosmos-integration-tests/tests/bootstrap_legacy.rs @@ -1,5 +1,3 @@ -#![recursion_limit = "256"] - use std::sync::Arc; use hermes_cosmos_integration_tests::contexts::bootstrap_legacy::LegacyCosmosBootstrap; diff --git a/crates/cosmos/cosmos-relayer/src/chain/components.rs b/crates/cosmos/cosmos-relayer/src/chain/components.rs index 341d82d5c..30f0be2fc 100644 --- a/crates/cosmos/cosmos-relayer/src/chain/components.rs +++ b/crates/cosmos/cosmos-relayer/src/chain/components.rs @@ -4,11 +4,12 @@ use futures::lock::Mutex; use hermes_cosmos_chain_components::components::client::CosmosClientComponents; use hermes_cosmos_chain_components::components::cosmos_to_cosmos::CosmosToCosmosComponents; use hermes_cosmos_chain_components::components::delegate::DelegateCosmosChainComponents; -use hermes_cosmos_chain_components::components::transaction::CosmosTxComponents; +use hermes_cosmos_chain_components::components::transaction::*; use hermes_cosmos_chain_components::traits::abci_query::AbciQuerierComponent; use hermes_cosmos_chain_components::traits::gas_config::GasConfigGetter; use hermes_cosmos_chain_components::traits::tx_extension_options::TxExtensionOptionsGetter; use hermes_cosmos_chain_components::types::nonce_guard::NonceGuard; +use hermes_cosmos_chain_components::with_cosmos_tx_components; use hermes_cosmos_test_components::chain::components::CosmmosChainTestComponents; use hermes_encoding_components::traits::has_encoding::{ DefaultEncodingGetterComponent, EncodingGetterComponent, EncodingTypeComponent, @@ -83,7 +84,6 @@ use hermes_relayer_components::chain::traits::queries::send_packets::{ use hermes_relayer_components::chain::traits::queries::unreceived_acks_sequences::UnreceivedAcksSequencesQuerierComponent; use hermes_relayer_components::chain::traits::queries::unreceived_packet_sequences::UnreceivedPacketSequencesQuerierComponent; use hermes_relayer_components::chain::traits::queries::write_ack::WriteAckQuerierComponent; -use hermes_relayer_components::chain::traits::send_message::MessageSenderComponent; use hermes_relayer_components::chain::traits::types::block::{ BlockHashComponent, BlockTypeComponent, }; @@ -145,27 +145,9 @@ use hermes_relayer_components::chain::traits::types::status::ChainStatusTypeComp use hermes_relayer_components::chain::traits::types::timestamp::TimestampTypeComponent; use hermes_relayer_components::chain::traits::types::update_client::UpdateClientPayloadTypeComponent; use hermes_relayer_components::error::traits::retry::RetryableErrorComponent; -use hermes_relayer_components::transaction::impls::poll_tx_response::PollTimeoutGetterComponent; use hermes_relayer_components::transaction::traits::default_signer::DefaultSignerGetter; -use hermes_relayer_components::transaction::traits::encode_tx::TxEncoderComponent; -use hermes_relayer_components::transaction::traits::estimate_tx_fee::TxFeeEstimatorComponent; -use hermes_relayer_components::transaction::traits::nonce::allocate_nonce::NonceAllocatorComponent; -use hermes_relayer_components::transaction::traits::nonce::nonce_guard::NonceGuardComponent; use hermes_relayer_components::transaction::traits::nonce::nonce_mutex::ProvideMutexForNonceAllocation; -use hermes_relayer_components::transaction::traits::nonce::query_nonce::NonceQuerierComponent; -use hermes_relayer_components::transaction::traits::parse_events::TxResponseAsEventsParserComponent; -use hermes_relayer_components::transaction::traits::poll_tx_response::TxResponsePollerComponent; -use hermes_relayer_components::transaction::traits::query_tx_response::TxResponseQuerierComponent; -use hermes_relayer_components::transaction::traits::send_messages_with_signer::MessagesWithSignerSenderComponent; -use hermes_relayer_components::transaction::traits::send_messages_with_signer_and_nonce::MessagesWithSignerAndNonceSenderComponent; use hermes_relayer_components::transaction::traits::simulation_fee::FeeForSimulationGetter; -use hermes_relayer_components::transaction::traits::submit_tx::TxSubmitterComponent; -use hermes_relayer_components::transaction::traits::types::fee::FeeTypeComponent; -use hermes_relayer_components::transaction::traits::types::nonce::NonceTypeComponent; -use hermes_relayer_components::transaction::traits::types::signer::SignerTypeComponent; -use hermes_relayer_components::transaction::traits::types::transaction::TransactionTypeComponent; -use hermes_relayer_components::transaction::traits::types::tx_hash::TransactionHashTypeComponent; -use hermes_relayer_components::transaction::traits::types::tx_response::TxResponseTypeComponent; use hermes_relayer_components_extra::components::extra::chain::ExtraChainComponents; use hermes_runtime::impls::types::runtime::ProvideHermesRuntime; use hermes_runtime::types::runtime::HermesRuntime; @@ -382,6 +364,14 @@ delegate_components! { } } +with_cosmos_tx_components! { + delegate_components! { + CosmosChainComponents { + @CosmosTxComponents : CosmosTxComponents, + } + } +} + delegate_components! { CosmosChainComponents { [ @@ -389,28 +379,6 @@ delegate_components! { ConsensusStateQuerierComponent, ]: ExtraChainComponents, - [ - SignerTypeComponent, - NonceTypeComponent, - NonceGuardComponent, - TransactionTypeComponent, - TransactionHashTypeComponent, - FeeTypeComponent, - TxResponseTypeComponent, - MessageSenderComponent, - MessagesWithSignerSenderComponent, - MessagesWithSignerAndNonceSenderComponent, - NonceAllocatorComponent, - TxResponsePollerComponent, - PollTimeoutGetterComponent, - TxResponseAsEventsParserComponent, - TxResponseQuerierComponent, - TxEncoderComponent, - TxFeeEstimatorComponent, - TxSubmitterComponent, - NonceQuerierComponent, - ]: - CosmosTxComponents, [ WalletTypeComponent, WalletSignerComponent, diff --git a/crates/cosmos/cosmos-relayer/src/contexts/encoding.rs b/crates/cosmos/cosmos-relayer/src/contexts/encoding.rs index 3fb7bed08..558b71747 100644 --- a/crates/cosmos/cosmos-relayer/src/contexts/encoding.rs +++ b/crates/cosmos/cosmos-relayer/src/contexts/encoding.rs @@ -1,8 +1,6 @@ use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; -use hermes_cosmos_chain_components::encoding::components::{ - CosmosEncodingComponents as BaseCosmosEncodingComponents, IsCosmosEncodingComponent, -}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; +use hermes_cosmos_chain_components::encoding::components::*; use hermes_cosmos_chain_components::types::tendermint::TendermintConsensusState; use hermes_encoding_components::impls::default_encoding::GetDefaultEncoding; use hermes_encoding_components::traits::convert::CanConvertBothWays; @@ -20,20 +18,22 @@ use crate::impls::error::HandleCosmosError; pub struct CosmosEncoding; -pub struct CosmosEncodingComponents; +pub struct CosmosEncodingComponents2; impl HasComponents for CosmosEncoding { - type Components = CosmosEncodingComponents; + type Components = CosmosEncodingComponents2; } -delegate_all!( - IsCosmosEncodingComponent, - BaseCosmosEncodingComponents, - CosmosEncodingComponents, -); +with_cosmos_encoding_components! { + delegate_components! { + CosmosEncodingComponents2 { + @CosmosEncodingComponents: CosmosEncodingComponents, + } + } +} delegate_components! { - CosmosEncodingComponents { + CosmosEncodingComponents2 { [ ErrorTypeComponent, ErrorRaiserComponent, diff --git a/crates/cosmos/cosmos-relayer/src/contexts/relay.rs b/crates/cosmos/cosmos-relayer/src/contexts/relay.rs index d432e2ec2..9b7c54cc2 100644 --- a/crates/cosmos/cosmos-relayer/src/contexts/relay.rs +++ b/crates/cosmos/cosmos-relayer/src/contexts/relay.rs @@ -2,7 +2,7 @@ use alloc::collections::BTreeSet; use alloc::sync::Arc; use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use futures::lock::Mutex; use hermes_logging_components::traits::has_logger::{ GlobalLoggerGetterComponent, LoggerGetterComponent, LoggerTypeComponent, @@ -20,9 +20,7 @@ use hermes_relayer_components::relay::traits::packet_lock::PacketLockComponent; use hermes_relayer_components::relay::traits::target::{DestinationTarget, SourceTarget}; use hermes_relayer_components_extra::batch::traits::channel::MessageBatchSenderGetter; use hermes_relayer_components_extra::components::extra::closures::relay::auto_relayer::CanUseExtraAutoRelayer; -use hermes_relayer_components_extra::components::extra::relay::{ - ExtraRelayComponents, IsExtraRelayComponent, -}; +use hermes_relayer_components_extra::components::extra::relay::*; use hermes_runtime::impls::types::runtime::ProvideHermesRuntime; use hermes_runtime::types::runtime::HermesRuntime; use hermes_runtime_components::traits::runtime::{RuntimeGetter, RuntimeTypeComponent}; @@ -101,11 +99,13 @@ delegate_components! { } } -delegate_all!( - IsExtraRelayComponent, - ExtraRelayComponents, - CosmosRelayComponents, -); +with_extra_relay_components! { + delegate_components! { + CosmosRelayComponents { + @ExtraRelayComponents: ExtraRelayComponents, + } + } +} impl HasComponents for CosmosRelay { type Components = CosmosRelayComponents; diff --git a/crates/cosmos/cosmos-relayer/src/impls/birelay/components.rs b/crates/cosmos/cosmos-relayer/src/impls/birelay/components.rs index 4be00897b..8602b1283 100644 --- a/crates/cosmos/cosmos-relayer/src/impls/birelay/components.rs +++ b/crates/cosmos/cosmos-relayer/src/impls/birelay/components.rs @@ -1,8 +1,6 @@ use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; -use hermes_relayer_components::components::default::birelay::{ - DefaultBiRelayComponents, IsDefaultBiRelayComponent, -}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; +use hermes_relayer_components::components::default::birelay::*; use hermes_runtime::impls::types::runtime::ProvideHermesRuntime; use hermes_runtime_components::traits::runtime::RuntimeTypeComponent; @@ -15,11 +13,13 @@ impl HasComponents for CosmosBiRelay { type Components = CosmosBiRelayComponents; } -delegate_all!( - IsDefaultBiRelayComponent, - DefaultBiRelayComponents, - CosmosBiRelayComponents, -); +with_default_bi_relay_components! { + delegate_components! { + CosmosBiRelayComponents { + @DefaultBiRelayComponents: DefaultBiRelayComponents, + } + } +} delegate_components! { CosmosBiRelayComponents { diff --git a/crates/cosmos/cosmos-relayer/src/impls/build/components.rs b/crates/cosmos/cosmos-relayer/src/impls/build/components.rs index 648a93373..9ed92b816 100644 --- a/crates/cosmos/cosmos-relayer/src/impls/build/components.rs +++ b/crates/cosmos/cosmos-relayer/src/impls/build/components.rs @@ -1,8 +1,6 @@ use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; -use hermes_relayer_components_extra::components::extra::build::{ - CanUseExtraBuildComponents, ExtraBuildComponents, IsExtraBuildComponent, -}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; +use hermes_relayer_components_extra::components::extra::build::*; use hermes_runtime::impls::types::runtime::ProvideHermesRuntime; use hermes_runtime_components::traits::runtime::RuntimeTypeComponent; @@ -21,11 +19,13 @@ impl HasComponents for CosmosBuildComponents { type Components = CosmosBaseBuildComponents; } -delegate_all!( - IsExtraBuildComponent, - ExtraBuildComponents, - CosmosBuildComponents, -); +with_extra_build_components! { + delegate_components! { + CosmosBuildComponents { + @ExtraBuildComponents: ExtraBuildComponents + } + } +} impl CanUseExtraBuildComponents for CosmosBuilder {} diff --git a/crates/cosmos/cosmos-test-components/src/bootstrap/components/cosmos_sdk.rs b/crates/cosmos/cosmos-test-components/src/bootstrap/components/cosmos_sdk.rs index d8a215ec3..a3363d5ab 100644 --- a/crates/cosmos/cosmos-test-components/src/bootstrap/components/cosmos_sdk.rs +++ b/crates/cosmos/cosmos-test-components/src/bootstrap/components/cosmos_sdk.rs @@ -13,7 +13,7 @@ use hermes_runtime_components::traits::os::exec_command::CanExecCommand; use hermes_runtime_components::traits::os::reserve_port::CanReserveTcpPort; use hermes_runtime_components::traits::random::CanGenerateRandom; use hermes_runtime_components::traits::runtime::HasRuntime; -use hermes_test_components::bootstrap::traits::chain::{ +pub use hermes_test_components::bootstrap::traits::chain::{ CanBootstrapChain, ChainBootstrapperComponent, }; use hermes_test_components::chain::traits::chain_id::CanBuildChainIdFromString; @@ -43,34 +43,34 @@ use crate::bootstrap::impls::types::chain_node_config::ProvideCosmosChainNodeCon use crate::bootstrap::impls::types::genesis_config::ProvideCosmosGenesisConfigType; use crate::bootstrap::impls::types::wallet_config::ProvideCosmosWalletConfigType; use crate::bootstrap::traits::chain::build_chain_driver::ChainDriverBuilder; -use crate::bootstrap::traits::chain::start_chain::ChainFullNodeStarterComponent; +pub use crate::bootstrap::traits::chain::start_chain::ChainFullNodeStarterComponent; use crate::bootstrap::traits::fields::chain_command_path::ChainCommandPathGetter; use crate::bootstrap::traits::fields::chain_store_dir::ChainStoreDirGetter; -use crate::bootstrap::traits::fields::denom::{ +pub use crate::bootstrap::traits::fields::denom::{ DenomForStaking, DenomForTransfer, DenomPrefixGetter, GenesisDenomGetterComponent, }; -use crate::bootstrap::traits::fields::hd_path::WalletHdPathComponent; +pub use crate::bootstrap::traits::fields::hd_path::WalletHdPathComponent; use crate::bootstrap::traits::fields::random_id::RandomIdFlagGetter; -use crate::bootstrap::traits::generator::generate_chain_id::ChainIdGeneratorComponent; +pub use crate::bootstrap::traits::generator::generate_chain_id::ChainIdGeneratorComponent; use crate::bootstrap::traits::generator::generate_wallet_config::WalletConfigGenerator; -use crate::bootstrap::traits::genesis::add_genesis_account::GenesisAccountAdderComponent; -use crate::bootstrap::traits::genesis::add_genesis_validator::GenesisValidatorAdderComponent; -use crate::bootstrap::traits::genesis::add_genesis_wallet::GenesisWalletAdderComponent; -use crate::bootstrap::traits::genesis::collect_gentxs::GenesisTransactionsCollectorComponent; -use crate::bootstrap::traits::initializers::init_chain_config::ChainNodeConfigInitializerComponent; -use crate::bootstrap::traits::initializers::init_chain_data::ChainDataInitializerComponent; -use crate::bootstrap::traits::initializers::init_chain_home_dir::ChainHomeDirInitializerComponent; -use crate::bootstrap::traits::initializers::init_genesis_config::ChainGenesisConfigInitializerComponent; -use crate::bootstrap::traits::initializers::init_wallet::WalletInitializerComponent; +pub use crate::bootstrap::traits::genesis::add_genesis_account::GenesisAccountAdderComponent; +pub use crate::bootstrap::traits::genesis::add_genesis_validator::GenesisValidatorAdderComponent; +pub use crate::bootstrap::traits::genesis::add_genesis_wallet::GenesisWalletAdderComponent; +pub use crate::bootstrap::traits::genesis::collect_gentxs::GenesisTransactionsCollectorComponent; +pub use crate::bootstrap::traits::initializers::init_chain_config::ChainNodeConfigInitializerComponent; +pub use crate::bootstrap::traits::initializers::init_chain_data::ChainDataInitializerComponent; +pub use crate::bootstrap::traits::initializers::init_chain_home_dir::ChainHomeDirInitializerComponent; +pub use crate::bootstrap::traits::initializers::init_genesis_config::ChainGenesisConfigInitializerComponent; +pub use crate::bootstrap::traits::initializers::init_wallet::WalletInitializerComponent; use crate::bootstrap::traits::modifiers::modify_comet_config::CometConfigModifier; use crate::bootstrap::traits::modifiers::modify_genesis_config::CosmosGenesisConfigModifier; -use crate::bootstrap::traits::types::chain_node_config::{ +pub use crate::bootstrap::traits::types::chain_node_config::{ ChainNodeConfigTypeComponent, ProvideChainNodeConfigType, }; -use crate::bootstrap::traits::types::genesis_config::{ +pub use crate::bootstrap::traits::types::genesis_config::{ ChainGenesisConfigTypeComponent, ProvideChainGenesisConfigType, }; -use crate::bootstrap::traits::types::wallet_config::{ +pub use crate::bootstrap::traits::types::wallet_config::{ ProvideWalletConfigType, WalletConfigFieldsComponent, WalletConfigFieldsGetter, WalletConfigTypeComponent, }; @@ -78,12 +78,8 @@ use crate::bootstrap::types::chain_node_config::CosmosChainNodeConfig; use crate::bootstrap::types::genesis_config::CosmosGenesisConfig; use crate::chain::types::wallet::CosmosTestWallet; -pub struct CosmosSdkBootstrapComponents; - // Components that will be swapped in `LegacyCosmosSdkBootstrapComponents` -delegate_components! { - #[mark_component(IsCosmosSdkBootstrapComponent)] - #[mark_delegate(DelegatesToCosmosSdkBootstrapComponents)] +define_components! { CosmosSdkBootstrapComponents { GenesisAccountAdderComponent: AddCosmosGenesisAccount, GenesisValidatorAdderComponent: AddCosmosGenesisValidator, diff --git a/crates/cosmos/cosmos-test-components/src/bootstrap/components/cosmos_sdk_legacy.rs b/crates/cosmos/cosmos-test-components/src/bootstrap/components/cosmos_sdk_legacy.rs index 1562a4769..3a53dc605 100644 --- a/crates/cosmos/cosmos-test-components/src/bootstrap/components/cosmos_sdk_legacy.rs +++ b/crates/cosmos/cosmos-test-components/src/bootstrap/components/cosmos_sdk_legacy.rs @@ -13,7 +13,7 @@ use hermes_runtime_components::traits::os::exec_command::CanExecCommand; use hermes_runtime_components::traits::os::reserve_port::CanReserveTcpPort; use hermes_runtime_components::traits::random::CanGenerateRandom; use hermes_runtime_components::traits::runtime::HasRuntime; -use hermes_test_components::bootstrap::traits::chain::{ +pub use hermes_test_components::bootstrap::traits::chain::{ CanBootstrapChain, ChainBootstrapperComponent, }; use hermes_test_components::chain::traits::chain_id::CanBuildChainIdFromString; @@ -33,34 +33,34 @@ use crate::bootstrap::impls::initializers::init_wallet::{ GetStdOutOrElseStdErr, InitCosmosTestWallet, }; use crate::bootstrap::traits::chain::build_chain_driver::ChainDriverBuilder; -use crate::bootstrap::traits::chain::start_chain::ChainFullNodeStarterComponent; +pub use crate::bootstrap::traits::chain::start_chain::ChainFullNodeStarterComponent; use crate::bootstrap::traits::fields::chain_command_path::ChainCommandPathGetter; use crate::bootstrap::traits::fields::chain_store_dir::ChainStoreDirGetter; -use crate::bootstrap::traits::fields::denom::{ +pub use crate::bootstrap::traits::fields::denom::{ DenomForStaking, DenomForTransfer, DenomPrefixGetter, GenesisDenomGetterComponent, }; -use crate::bootstrap::traits::fields::hd_path::WalletHdPathComponent; +pub use crate::bootstrap::traits::fields::hd_path::WalletHdPathComponent; use crate::bootstrap::traits::fields::random_id::RandomIdFlagGetter; -use crate::bootstrap::traits::generator::generate_chain_id::ChainIdGeneratorComponent; -use crate::bootstrap::traits::generator::generate_wallet_config::WalletConfigGenerator; -use crate::bootstrap::traits::genesis::add_genesis_account::GenesisAccountAdderComponent; -use crate::bootstrap::traits::genesis::add_genesis_validator::GenesisValidatorAdderComponent; -use crate::bootstrap::traits::genesis::add_genesis_wallet::GenesisWalletAdderComponent; -use crate::bootstrap::traits::genesis::collect_gentxs::GenesisTransactionsCollectorComponent; -use crate::bootstrap::traits::initializers::init_chain_config::ChainNodeConfigInitializerComponent; -use crate::bootstrap::traits::initializers::init_chain_data::ChainDataInitializerComponent; -use crate::bootstrap::traits::initializers::init_chain_home_dir::ChainHomeDirInitializerComponent; -use crate::bootstrap::traits::initializers::init_genesis_config::ChainGenesisConfigInitializerComponent; -use crate::bootstrap::traits::initializers::init_wallet::WalletInitializerComponent; +pub use crate::bootstrap::traits::generator::generate_chain_id::ChainIdGeneratorComponent; +pub use crate::bootstrap::traits::generator::generate_wallet_config::WalletConfigGenerator; +pub use crate::bootstrap::traits::genesis::add_genesis_account::GenesisAccountAdderComponent; +pub use crate::bootstrap::traits::genesis::add_genesis_validator::GenesisValidatorAdderComponent; +pub use crate::bootstrap::traits::genesis::add_genesis_wallet::GenesisWalletAdderComponent; +pub use crate::bootstrap::traits::genesis::collect_gentxs::GenesisTransactionsCollectorComponent; +pub use crate::bootstrap::traits::initializers::init_chain_config::ChainNodeConfigInitializerComponent; +pub use crate::bootstrap::traits::initializers::init_chain_data::ChainDataInitializerComponent; +pub use crate::bootstrap::traits::initializers::init_chain_home_dir::ChainHomeDirInitializerComponent; +pub use crate::bootstrap::traits::initializers::init_genesis_config::ChainGenesisConfigInitializerComponent; +pub use crate::bootstrap::traits::initializers::init_wallet::WalletInitializerComponent; use crate::bootstrap::traits::modifiers::modify_comet_config::CometConfigModifier; use crate::bootstrap::traits::modifiers::modify_genesis_config::CosmosGenesisConfigModifier; -use crate::bootstrap::traits::types::chain_node_config::{ +pub use crate::bootstrap::traits::types::chain_node_config::{ ChainNodeConfigTypeComponent, ProvideChainNodeConfigType, }; -use crate::bootstrap::traits::types::genesis_config::{ +pub use crate::bootstrap::traits::types::genesis_config::{ ChainGenesisConfigTypeComponent, ProvideChainGenesisConfigType, }; -use crate::bootstrap::traits::types::wallet_config::{ +pub use crate::bootstrap::traits::types::wallet_config::{ ProvideWalletConfigType, WalletConfigFieldsComponent, WalletConfigFieldsGetter, WalletConfigTypeComponent, }; @@ -68,11 +68,7 @@ use crate::bootstrap::types::chain_node_config::CosmosChainNodeConfig; use crate::bootstrap::types::genesis_config::CosmosGenesisConfig; use crate::chain::types::wallet::CosmosTestWallet; -pub struct LegacyCosmosSdkBootstrapComponents; - -delegate_components! { - #[mark_component(IsLegacyCosmosSdkBootstrapComponent)] - #[mark_delegate(DelegatesToLegacyToCosmosSdkBootstrapComponents)] +define_components! { LegacyCosmosSdkBootstrapComponents { GenesisAccountAdderComponent: LegacyAddCosmosGenesisAccount, GenesisValidatorAdderComponent: LegacyAddCosmosGenesisValidator, @@ -115,7 +111,7 @@ where + CanRaiseError + CanRaiseError + CanRaiseError, - Components: DelegatesToLegacyToCosmosSdkBootstrapComponents + Components: DelegatesToLegacyCosmosSdkBootstrapComponents + ProvideChainType + ProvideChainDriverType + ProvideChainGenesisConfigType diff --git a/crates/cosmos/cosmos-wasm-relayer/src/context/cosmos_bootstrap.rs b/crates/cosmos/cosmos-wasm-relayer/src/context/cosmos_bootstrap.rs index 0c80b39cd..012ff70e1 100644 --- a/crates/cosmos/cosmos-wasm-relayer/src/context/cosmos_bootstrap.rs +++ b/crates/cosmos/cosmos-wasm-relayer/src/context/cosmos_bootstrap.rs @@ -2,7 +2,7 @@ use alloc::sync::Arc; use std::path::PathBuf; use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use hermes_cosmos_integration_tests::impls::bootstrap::build_cosmos_chain::BuildCosmosChainWithNodeConfig; use hermes_cosmos_integration_tests::impls::bootstrap::build_cosmos_chain_driver::BuildCosmosChainDriver; use hermes_cosmos_integration_tests::impls::bootstrap::relayer_chain_config::BuildRelayerChainConfig; @@ -14,9 +14,7 @@ use hermes_cosmos_integration_tests::traits::bootstrap::gas_denom::GasDenomGette use hermes_cosmos_integration_tests::traits::bootstrap::relayer_chain_config::RelayerChainConfigBuilderComponent; use hermes_cosmos_relayer::contexts::builder::CosmosBuilder; use hermes_cosmos_relayer::types::error::{DebugError, ProvideCosmosError}; -use hermes_cosmos_test_components::bootstrap::components::cosmos_sdk::{ - CanUseCosmosSdkChainBootstrapper, CosmosSdkBootstrapComponents, IsCosmosSdkBootstrapComponent, -}; +use hermes_cosmos_test_components::bootstrap::components::cosmos_sdk::*; use hermes_cosmos_test_components::bootstrap::impls::generator::wallet_config::GenerateStandardWalletConfig; use hermes_cosmos_test_components::bootstrap::impls::modifiers::no_modify_comet_config::NoModifyCometConfig; use hermes_cosmos_test_components::bootstrap::impls::modifiers::no_modify_genesis_config::NoModifyGenesisConfig; @@ -66,11 +64,13 @@ impl HasComponents for CosmosWithWasmClientBootstrap { type Components = CosmosWithWasmClientBootstrapComponents; } -delegate_all!( - IsCosmosSdkBootstrapComponent, - CosmosSdkBootstrapComponents, - CosmosWithWasmClientBootstrapComponents, -); +with_cosmos_sdk_bootstrap_components! { + delegate_components! { + CosmosWithWasmClientBootstrapComponents { + @CosmosSdkBootstrapComponents: CosmosSdkBootstrapComponents, + } + } +} delegate_components! { CosmosWithWasmClientBootstrapComponents { diff --git a/crates/cosmos/cosmos-wasm-relayer/src/context/cosmos_to_wasm_cosmos_relay.rs b/crates/cosmos/cosmos-wasm-relayer/src/context/cosmos_to_wasm_cosmos_relay.rs index 2bb45cadf..d8527a0ca 100644 --- a/crates/cosmos/cosmos-wasm-relayer/src/context/cosmos_to_wasm_cosmos_relay.rs +++ b/crates/cosmos/cosmos-wasm-relayer/src/context/cosmos_to_wasm_cosmos_relay.rs @@ -2,7 +2,7 @@ use std::collections::BTreeSet; use std::sync::Arc; use cgp_core::prelude::*; -use cgp_core::{delegate_all, CanRun, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{CanRun, ErrorRaiserComponent, ErrorTypeComponent}; use futures::lock::Mutex; use hermes_cosmos_relayer::contexts::chain::CosmosChain; use hermes_cosmos_relayer::contexts::logger::{CosmosLogger, ProvideCosmosLogger}; @@ -14,9 +14,7 @@ use hermes_logging_components::traits::has_logger::{ use hermes_logging_components::traits::logger::CanLog; use hermes_relayer_components::chain::traits::types::channel::HasInitChannelOptionsType; use hermes_relayer_components::chain::traits::types::connection::HasInitConnectionOptionsType; -use hermes_relayer_components::components::default::relay::{ - DefaultRelayComponents, IsDefaultRelayComponent, -}; +use hermes_relayer_components::components::default::relay::*; use hermes_relayer_components::error::impls::retry::ReturnMaxRetry; use hermes_relayer_components::error::traits::retry::{ MaxErrorRetryGetterComponent, RetryableErrorComponent, @@ -31,6 +29,7 @@ use hermes_relayer_components::relay::traits::chains::ProvideRelayChains; use hermes_relayer_components::relay::traits::packet_filter::PacketFilter; use hermes_relayer_components::relay::traits::packet_lock::PacketLockComponent; use hermes_relayer_components::relay::traits::packet_relayer::CanRelayPacket; +use hermes_relayer_components::with_default_relay_components; use hermes_runtime::impls::types::runtime::ProvideHermesRuntime; use hermes_runtime::types::runtime::HermesRuntime; use hermes_runtime_components::traits::runtime::{RuntimeGetter, RuntimeTypeComponent}; @@ -97,11 +96,13 @@ delegate_components! { } } -delegate_all!( - IsDefaultRelayComponent, - DefaultRelayComponents, - CosmosToWasmCosmosRelayComponents, -); +with_default_relay_components! { + delegate_components! { + CosmosToWasmCosmosRelayComponents { + @DefaultRelayComponents : DefaultRelayComponents, + } + } +} impl HasComponents for CosmosToWasmCosmosRelay { type Components = CosmosToWasmCosmosRelayComponents; diff --git a/crates/cosmos/cosmos-wasm-relayer/src/context/encoding.rs b/crates/cosmos/cosmos-wasm-relayer/src/context/encoding.rs index 498bf584a..0622afd56 100644 --- a/crates/cosmos/cosmos-wasm-relayer/src/context/encoding.rs +++ b/crates/cosmos/cosmos-wasm-relayer/src/context/encoding.rs @@ -1,5 +1,5 @@ use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use hermes_cosmos_chain_components::types::tendermint::TendermintConsensusState; use hermes_cosmos_relayer::impls::error::HandleCosmosError; use hermes_encoding_components::impls::default_encoding::GetDefaultEncoding; @@ -16,27 +16,27 @@ use hermes_wasm_client_components::types::consensus_state::WasmConsensusState; use ibc_relayer_types::clients::ics07_tendermint::client_state::ClientState as TendermintClientState; use prost_types::Any; -use crate::encoding::components::{ - IsWasmCosmosEncodingComponent, WasmCosmosEncodingComponents as BaseWasmCosmosEncodingComponents, -}; +use crate::encoding::components::*; use crate::types::client_state::WrappedTendermintClientState; pub struct WasmCosmosEncoding; -pub struct WasmCosmosEncodingComponents; +pub struct WasmCosmosEncodingComponents2; impl HasComponents for WasmCosmosEncoding { - type Components = WasmCosmosEncodingComponents; + type Components = WasmCosmosEncodingComponents2; } -delegate_all!( - IsWasmCosmosEncodingComponent, - BaseWasmCosmosEncodingComponents, - WasmCosmosEncodingComponents, -); +with_wasm_cosmos_encoding_components! { + delegate_components! { + WasmCosmosEncodingComponents2 { + @WasmCosmosEncodingComponents: WasmCosmosEncodingComponents, + } + } +} delegate_components! { - WasmCosmosEncodingComponents { + WasmCosmosEncodingComponents2 { [ ErrorTypeComponent, ErrorRaiserComponent, diff --git a/crates/cosmos/cosmos-wasm-relayer/src/context/wasm_cosmos_relay.rs b/crates/cosmos/cosmos-wasm-relayer/src/context/wasm_cosmos_relay.rs index 6e5611f92..5ccc8f978 100644 --- a/crates/cosmos/cosmos-wasm-relayer/src/context/wasm_cosmos_relay.rs +++ b/crates/cosmos/cosmos-wasm-relayer/src/context/wasm_cosmos_relay.rs @@ -2,7 +2,7 @@ use std::collections::BTreeSet; use std::sync::Arc; use cgp_core::prelude::*; -use cgp_core::{delegate_all, CanRun, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{CanRun, ErrorRaiserComponent, ErrorTypeComponent}; use futures::lock::Mutex; use hermes_cosmos_relayer::contexts::logger::{CosmosLogger, ProvideCosmosLogger}; use hermes_cosmos_relayer::impls::error::HandleCosmosError; @@ -13,9 +13,7 @@ use hermes_logging_components::traits::has_logger::{ use hermes_logging_components::traits::logger::CanLog; use hermes_relayer_components::chain::traits::types::channel::HasInitChannelOptionsType; use hermes_relayer_components::chain::traits::types::connection::HasInitConnectionOptionsType; -use hermes_relayer_components::components::default::relay::{ - DefaultRelayComponents, IsDefaultRelayComponent, -}; +use hermes_relayer_components::components::default::relay::*; use hermes_relayer_components::error::impls::retry::ReturnMaxRetry; use hermes_relayer_components::error::traits::retry::{ MaxErrorRetryGetterComponent, RetryableErrorComponent, @@ -30,6 +28,7 @@ use hermes_relayer_components::relay::traits::chains::ProvideRelayChains; use hermes_relayer_components::relay::traits::packet_filter::PacketFilter; use hermes_relayer_components::relay::traits::packet_lock::PacketLockComponent; use hermes_relayer_components::relay::traits::packet_relayer::CanRelayPacket; +use hermes_relayer_components::with_default_relay_components; use hermes_runtime::impls::types::runtime::ProvideHermesRuntime; use hermes_runtime::types::runtime::HermesRuntime; use hermes_runtime_components::traits::runtime::{RuntimeGetter, RuntimeTypeComponent}; @@ -96,11 +95,13 @@ delegate_components! { } } -delegate_all!( - IsDefaultRelayComponent, - DefaultRelayComponents, - WasmCosmosRelayComponents, -); +with_default_relay_components! { + delegate_components! { + WasmCosmosRelayComponents { + @DefaultRelayComponents : DefaultRelayComponents, + } + } +} impl HasComponents for WasmCosmosRelay { type Components = WasmCosmosRelayComponents; diff --git a/crates/cosmos/cosmos-wasm-relayer/src/encoding/components.rs b/crates/cosmos/cosmos-wasm-relayer/src/encoding/components.rs index 38c5dd182..8dab0619f 100644 --- a/crates/cosmos/cosmos-wasm-relayer/src/encoding/components.rs +++ b/crates/cosmos/cosmos-wasm-relayer/src/encoding/components.rs @@ -2,20 +2,17 @@ use cgp_core::prelude::*; use hermes_encoding_components::impls::delegate::DelegateEncoding; use hermes_encoding_components::impls::encoded::ProvideEncodedBytes; use hermes_encoding_components::impls::schema::ProvideStringSchema; -use hermes_encoding_components::traits::convert::ConverterComponent; -use hermes_encoding_components::traits::decoder::DecoderComponent; -use hermes_encoding_components::traits::encoded::EncodedTypeComponent; -use hermes_encoding_components::traits::encoder::EncoderComponent; -use hermes_encoding_components::traits::schema::{SchemaGetterComponent, SchemaTypeComponent}; +pub use hermes_encoding_components::traits::convert::ConverterComponent; +pub use hermes_encoding_components::traits::decoder::DecoderComponent; +pub use hermes_encoding_components::traits::encoded::EncodedTypeComponent; +pub use hermes_encoding_components::traits::encoder::EncoderComponent; +pub use hermes_encoding_components::traits::schema::{SchemaGetterComponent, SchemaTypeComponent}; use crate::encoding::convert::WasmCosmosConverterComponents; use crate::encoding::encode::WasmCosmosEncoderComponents; use crate::encoding::type_url::WasmCosmosTypeUrlSchemas; -pub struct WasmCosmosEncodingComponents; - -delegate_components! { - #[mark_component(IsWasmCosmosEncodingComponent)] +define_components! { WasmCosmosEncodingComponents { EncodedTypeComponent: ProvideEncodedBytes, diff --git a/crates/cosmos/cosmos-wasm-relayer/src/lib.rs b/crates/cosmos/cosmos-wasm-relayer/src/lib.rs index 1e10c3fe1..9cece84da 100644 --- a/crates/cosmos/cosmos-wasm-relayer/src/lib.rs +++ b/crates/cosmos/cosmos-wasm-relayer/src/lib.rs @@ -1,5 +1,5 @@ -#![recursion_limit = "256"] #![allow(clippy::type_complexity)] +#![allow(macro_expanded_macro_exports_accessed_by_absolute_paths)] extern crate alloc; diff --git a/crates/cosmos/cosmos-wasm-relayer/tests/both_wasm_cosmos.rs b/crates/cosmos/cosmos-wasm-relayer/tests/both_wasm_cosmos.rs index 28fdb9ea2..07d42fcec 100644 --- a/crates/cosmos/cosmos-wasm-relayer/tests/both_wasm_cosmos.rs +++ b/crates/cosmos/cosmos-wasm-relayer/tests/both_wasm_cosmos.rs @@ -1,5 +1,3 @@ -#![recursion_limit = "256"] - use core::time::Duration; use std::env::var; use std::path::PathBuf; diff --git a/crates/cosmos/cosmos-wasm-relayer/tests/cosmos_to_wasm_cosmos.rs b/crates/cosmos/cosmos-wasm-relayer/tests/cosmos_to_wasm_cosmos.rs index b795fa562..fb5ba2266 100644 --- a/crates/cosmos/cosmos-wasm-relayer/tests/cosmos_to_wasm_cosmos.rs +++ b/crates/cosmos/cosmos-wasm-relayer/tests/cosmos_to_wasm_cosmos.rs @@ -1,5 +1,3 @@ -#![recursion_limit = "256"] - use core::time::Duration; use std::env::var; use std::path::PathBuf; diff --git a/crates/mock/mock-cosmos-relayer/src/components/relay.rs b/crates/mock/mock-cosmos-relayer/src/components/relay.rs index 43a805435..55007e14f 100644 --- a/crates/mock/mock-cosmos-relayer/src/components/relay.rs +++ b/crates/mock/mock-cosmos-relayer/src/components/relay.rs @@ -1,23 +1,24 @@ -use cgp_core::{delegate_all, delegate_components, DelegateComponent}; +use cgp_core::prelude::*; use hermes_logging_components::contexts::no_logger::ProvideNoLogger; use hermes_logging_components::traits::has_logger::{ GlobalLoggerGetterComponent, LoggerGetterComponent, LoggerTypeComponent, }; -use hermes_relayer_components::components::default::relay::{ - DefaultRelayComponents, IsDefaultRelayComponent, -}; +use hermes_relayer_components::components::default::relay::*; use hermes_relayer_components::relay::impls::packet_filters::allow_all::AllowAll; use hermes_relayer_components::relay::traits::packet_filter::PacketFilterComponent; +use hermes_relayer_components::with_default_relay_components; use hermes_runtime::impls::types::runtime::ProvideHermesRuntime; use hermes_runtime_components::traits::runtime::RuntimeTypeComponent; pub struct MockCosmosRelayComponents; -delegate_all!( - IsDefaultRelayComponent, - DefaultRelayComponents, - MockCosmosRelayComponents, -); +with_default_relay_components! { + delegate_components! { + MockCosmosRelayComponents { + @DefaultRelayComponents : DefaultRelayComponents, + } + } +} delegate_components! { MockCosmosRelayComponents { diff --git a/crates/mock/mock-relayer/src/relayer_mock/components/chain.rs b/crates/mock/mock-relayer/src/relayer_mock/components/chain.rs index bf0c38b28..b42a4b582 100644 --- a/crates/mock/mock-relayer/src/relayer_mock/components/chain.rs +++ b/crates/mock/mock-relayer/src/relayer_mock/components/chain.rs @@ -1,4 +1,4 @@ -use cgp_core::delegate_components; +use cgp_core::prelude::*; use hermes_logging_components::contexts::no_logger::ProvideNoLogger; use hermes_logging_components::traits::has_logger::{ GlobalLoggerGetterComponent, LoggerGetterComponent, LoggerTypeComponent, diff --git a/crates/relayer/relayer-components-extra/src/components/extra/build.rs b/crates/relayer/relayer-components-extra/src/components/extra/build.rs index 582159180..3ba05792a 100644 --- a/crates/relayer/relayer-components-extra/src/components/extra/build.rs +++ b/crates/relayer/relayer-components-extra/src/components/extra/build.rs @@ -1,18 +1,16 @@ -use core::marker::PhantomData; - use cgp_core::prelude::*; use hermes_relayer_components::birelay::traits::two_way::HasTwoWayRelay; use hermes_relayer_components::build::traits::birelay::HasBiRelayType; use hermes_relayer_components::build::traits::cache::{HasChainCache, HasRelayCache}; -use hermes_relayer_components::build::traits::components::birelay_builder::{ +pub use hermes_relayer_components::build::traits::components::birelay_builder::{ BiRelayBuilderComponent, CanBuildBiRelay, }; use hermes_relayer_components::build::traits::components::birelay_from_relay_builder::BiRelayFromRelayBuilder; -use hermes_relayer_components::build::traits::components::chain_builder::{ +pub use hermes_relayer_components::build::traits::components::chain_builder::{ ChainBuilder, ChainBuilderComponent, }; -use hermes_relayer_components::build::traits::components::relay_builder::RelayBuilderComponent; -use hermes_relayer_components::build::traits::components::relay_from_chains_builder::RelayFromChainsBuilderComponent; +pub use hermes_relayer_components::build::traits::components::relay_builder::RelayBuilderComponent; +pub use hermes_relayer_components::build::traits::components::relay_from_chains_builder::RelayFromChainsBuilderComponent; use hermes_relayer_components::build::traits::target::chain::{ChainATarget, ChainBTarget}; use hermes_relayer_components::build::traits::target::relay::{RelayAToBTarget, RelayBToATarget}; use hermes_relayer_components::build::types::aliases::{ChainA, ChainB}; @@ -30,12 +28,8 @@ use crate::build::traits::cache::HasBatchSenderCache; use crate::build::traits::components::relay_with_batch_builder::RelayWithBatchBuilder; use crate::components::extra::closures::batch::UseBatchMessageWorkerSpawner; -pub struct ExtraBuildComponents(pub PhantomData); - -delegate_components! { - #[mark_component(IsExtraBuildComponent)] - #[mark_delegate(DelegatesToExtraBuildComponents)] - ExtraBuildComponents { +define_components! { + ExtraBuildComponents { RelayFromChainsBuilderComponent: BuildRelayWithBatchWorker, [ ChainBuilderComponent, diff --git a/crates/relayer/relayer-components-extra/src/components/extra/chain.rs b/crates/relayer/relayer-components-extra/src/components/extra/chain.rs index 401e19d0e..6f55ff521 100644 --- a/crates/relayer/relayer-components-extra/src/components/extra/chain.rs +++ b/crates/relayer/relayer-components-extra/src/components/extra/chain.rs @@ -1,5 +1,3 @@ -use core::marker::PhantomData; - use cgp_core::prelude::*; use hermes_relayer_components::chain::traits::queries::chain_status::ChainStatusQuerierComponent; use hermes_relayer_components::chain::traits::queries::consensus_state::ConsensusStateQuerierComponent; @@ -7,12 +5,8 @@ use hermes_relayer_components::chain::traits::queries::consensus_state::Consensu use crate::telemetry::components::consensus_state::ConsensusStateTelemetryQuerier; use crate::telemetry::components::status::ChainStatusTelemetryQuerier; -pub struct ExtraChainComponents(pub PhantomData); - -delegate_components! { - #[mark_component(IsExtraChainComponent)] - #[mark_delegate(DelegatesToExtraChainComponents)] - ExtraChainComponents { +define_components! { + ExtraChainComponents { ChainStatusQuerierComponent: ChainStatusTelemetryQuerier, ConsensusStateQuerierComponent: diff --git a/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/channel_handshake.rs b/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/channel_handshake.rs index 8c9ed6221..459497ba1 100644 --- a/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/channel_handshake.rs +++ b/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/channel_handshake.rs @@ -1,4 +1,4 @@ -use cgp_core::HasComponents; +use cgp_core::{Async, HasComponents}; use hermes_relayer_components::chain::traits::message_builders::channel_handshake::{ CanBuildChannelOpenTryMessage, ChannelOpenTryMessageBuilder, }; @@ -58,5 +58,6 @@ where + ChannelOpenTryPayloadBuilder + ChannelOpenTryMessageBuilder, Chain::Height: Clone, + BaseComponents: Async, { } diff --git a/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/event_relayer.rs b/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/event_relayer.rs index 998464f9a..635d66c2b 100644 --- a/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/event_relayer.rs +++ b/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/event_relayer.rs @@ -1,4 +1,4 @@ -use cgp_core::{HasComponents, HasErrorType}; +use cgp_core::{Async, HasComponents, HasErrorType}; use hermes_relayer_components::chain::traits::packet::from_write_ack::{ CanBuildPacketFromWriteAck, PacketFromWriteAckBuilder, }; @@ -38,5 +38,6 @@ where + DelegatesToExtraChainComponents + CounterpartyChainIdQuerier + PacketFromWriteAckBuilder, + BaseComponents: Async, { } diff --git a/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/message_sender.rs b/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/message_sender.rs index 5e1b1aa80..3d74f643e 100644 --- a/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/message_sender.rs +++ b/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/message_sender.rs @@ -1,4 +1,4 @@ -use cgp_core::HasComponents; +use cgp_core::{Async, HasComponents}; use hermes_relayer_components::chain::traits::message_builders::update_client::{ CanBuildUpdateClientMessage, UpdateClientMessageBuilder, }; @@ -85,5 +85,6 @@ where + ConsensusStateHeightQuerier + UpdateClientPayloadBuilder + UpdateClientMessageBuilder, + BaseComponents: Async, { } diff --git a/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/packet_relayer.rs b/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/packet_relayer.rs index eaec23490..a9b1a64eb 100644 --- a/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/packet_relayer.rs +++ b/crates/relayer/relayer-components-extra/src/components/extra/closures/chain/packet_relayer.rs @@ -1,4 +1,4 @@ -use cgp_core::HasComponents; +use cgp_core::{Async, HasComponents}; use hermes_relayer_components::chain::traits::message_builders::ack_packet::{ AckPacketMessageBuilder, CanBuildAckPacketMessage, }; @@ -84,5 +84,6 @@ where + AckPacketMessageBuilder + TimeoutUnorderedPacketPayloadBuilder + TimeoutUnorderedPacketMessageBuilder, + BaseComponents: Async, { } diff --git a/crates/relayer/relayer-components-extra/src/components/extra/relay.rs b/crates/relayer/relayer-components-extra/src/components/extra/relay.rs index 83bf8d7f3..75e99cd59 100644 --- a/crates/relayer/relayer-components-extra/src/components/extra/relay.rs +++ b/crates/relayer/relayer-components-extra/src/components/extra/relay.rs @@ -1,5 +1,5 @@ use cgp_core::prelude::*; -use cgp_core::RunnerComponent; +pub use cgp_core::RunnerComponent; use hermes_relayer_components::components::default::relay::DefaultRelayComponents; use hermes_relayer_components::relay::impls::message_senders::chain_sender::SendIbcMessagesToChain; use hermes_relayer_components::relay::impls::message_senders::update_client::SendIbcMessagesWithUpdateClient; @@ -7,38 +7,34 @@ use hermes_relayer_components::relay::impls::packet_relayers::general::filter_re use hermes_relayer_components::relay::impls::packet_relayers::general::full_relay::FullCycleRelayer; use hermes_relayer_components::relay::impls::packet_relayers::general::lock::LockPacketRelayer; use hermes_relayer_components::relay::impls::packet_relayers::general::log::LoggerRelayer; -use hermes_relayer_components::relay::traits::auto_relayer::AutoRelayerComponent; -use hermes_relayer_components::relay::traits::channel::open_ack::ChannelOpenAckRelayerComponent; -use hermes_relayer_components::relay::traits::channel::open_confirm::ChannelOpenConfirmRelayerComponent; -use hermes_relayer_components::relay::traits::channel::open_handshake::ChannelOpenHandshakeRelayerComponent; -use hermes_relayer_components::relay::traits::channel::open_init::ChannelInitializerComponent; -use hermes_relayer_components::relay::traits::channel::open_try::ChannelOpenTryRelayerComponent; -use hermes_relayer_components::relay::traits::client_creator::ClientCreatorComponent; -use hermes_relayer_components::relay::traits::connection::open_ack::ConnectionOpenAckRelayerComponent; -use hermes_relayer_components::relay::traits::connection::open_confirm::ConnectionOpenConfirmRelayerComponent; -use hermes_relayer_components::relay::traits::connection::open_handshake::ConnectionOpenHandshakeRelayerComponent; -use hermes_relayer_components::relay::traits::connection::open_init::ConnectionInitializerComponent; -use hermes_relayer_components::relay::traits::connection::open_try::ConnectionOpenTryRelayerComponent; -use hermes_relayer_components::relay::traits::event_relayer::EventRelayerComponent; -use hermes_relayer_components::relay::traits::ibc_message_sender::{ +pub use hermes_relayer_components::relay::traits::auto_relayer::AutoRelayerComponent; +pub use hermes_relayer_components::relay::traits::channel::open_ack::ChannelOpenAckRelayerComponent; +pub use hermes_relayer_components::relay::traits::channel::open_confirm::ChannelOpenConfirmRelayerComponent; +pub use hermes_relayer_components::relay::traits::channel::open_handshake::ChannelOpenHandshakeRelayerComponent; +pub use hermes_relayer_components::relay::traits::channel::open_init::ChannelInitializerComponent; +pub use hermes_relayer_components::relay::traits::channel::open_try::ChannelOpenTryRelayerComponent; +pub use hermes_relayer_components::relay::traits::client_creator::ClientCreatorComponent; +pub use hermes_relayer_components::relay::traits::connection::open_ack::ConnectionOpenAckRelayerComponent; +pub use hermes_relayer_components::relay::traits::connection::open_confirm::ConnectionOpenConfirmRelayerComponent; +pub use hermes_relayer_components::relay::traits::connection::open_handshake::ConnectionOpenHandshakeRelayerComponent; +pub use hermes_relayer_components::relay::traits::connection::open_init::ConnectionInitializerComponent; +pub use hermes_relayer_components::relay::traits::connection::open_try::ConnectionOpenTryRelayerComponent; +pub use hermes_relayer_components::relay::traits::event_relayer::EventRelayerComponent; +pub use hermes_relayer_components::relay::traits::ibc_message_sender::{ IbcMessageSenderComponent, MainSink, }; -use hermes_relayer_components::relay::traits::packet_clearer::PacketClearerComponent; -use hermes_relayer_components::relay::traits::packet_relayer::PacketRelayerComponent; -use hermes_relayer_components::relay::traits::packet_relayers::ack_packet::AckPacketRelayerComponent; -use hermes_relayer_components::relay::traits::packet_relayers::receive_packet::ReceivePacketRelayerComponnent; -use hermes_relayer_components::relay::traits::packet_relayers::timeout_unordered_packet::TimeoutUnorderedPacketRelayerComponent; -use hermes_relayer_components::relay::traits::update_client_message_builder::TargetUpdateClientMessageBuilderComponent; +pub use hermes_relayer_components::relay::traits::packet_clearer::PacketClearerComponent; +pub use hermes_relayer_components::relay::traits::packet_relayer::PacketRelayerComponent; +pub use hermes_relayer_components::relay::traits::packet_relayers::ack_packet::AckPacketRelayerComponent; +pub use hermes_relayer_components::relay::traits::packet_relayers::receive_packet::ReceivePacketRelayerComponnent; +pub use hermes_relayer_components::relay::traits::packet_relayers::timeout_unordered_packet::TimeoutUnorderedPacketRelayerComponent; +pub use hermes_relayer_components::relay::traits::update_client_message_builder::TargetUpdateClientMessageBuilderComponent; use crate::batch::components::message_sender::SendMessagesToBatchWorker; -use crate::batch::types::sink::BatchWorkerSink; +pub use crate::batch::types::sink::BatchWorkerSink; use crate::relay::components::packet_relayers::retry::RetryRelayer; -pub struct ExtraRelayComponents; - -delegate_components! { - #[mark_component(IsExtraRelayComponent)] - #[mark_delegate(DelegatesToExtraRelayComponents)] +define_components! { ExtraRelayComponents { IbcMessageSenderComponent: SendMessagesToBatchWorker, IbcMessageSenderComponent: diff --git a/crates/relayer/relayer-components/Cargo.toml b/crates/relayer/relayer-components/Cargo.toml index 49b901b0e..8403ca52f 100644 --- a/crates/relayer/relayer-components/Cargo.toml +++ b/crates/relayer/relayer-components/Cargo.toml @@ -14,6 +14,7 @@ description = """ [dependencies] cgp-core = { workspace = true } +cgp-component-macro = { workspace = true } hermes-runtime-components = { workspace = true } hermes-logging-components = { workspace = true } hermes-encoding-components = { workspace = true } \ No newline at end of file diff --git a/crates/relayer/relayer-components/src/components/default/birelay.rs b/crates/relayer/relayer-components/src/components/default/birelay.rs index 658de3785..b57fb80db 100644 --- a/crates/relayer/relayer-components/src/components/default/birelay.rs +++ b/crates/relayer/relayer-components/src/components/default/birelay.rs @@ -1,13 +1,9 @@ use cgp_core::prelude::*; -use cgp_core::RunnerComponent; +pub use cgp_core::RunnerComponent; use crate::relay::impls::auto_relayers::both_ways::RelayBothWays; -pub struct DefaultBiRelayComponents; - -delegate_components! { - #[mark_component(IsDefaultBiRelayComponent)] - #[mark_delegate(DelegatesToDefaultBiRelayComponents)] +define_components! { DefaultBiRelayComponents { RunnerComponent: RelayBothWays, } diff --git a/crates/relayer/relayer-components/src/components/default/build.rs b/crates/relayer/relayer-components/src/components/default/build.rs index b53f46342..87c5b52b5 100644 --- a/crates/relayer/relayer-components/src/components/default/build.rs +++ b/crates/relayer/relayer-components/src/components/default/build.rs @@ -1,5 +1,3 @@ -use core::marker::PhantomData; - use cgp_core::prelude::*; use crate::birelay::traits::two_way::{HasTwoChainTypes, HasTwoWayRelay}; @@ -20,12 +18,8 @@ use crate::build::types::aliases::{ChainA, ChainB}; use crate::chain::traits::types::ibc::HasIbcChainTypes; use crate::relay::traits::chains::HasRelayChains; -pub struct DefaultBuildComponents(pub PhantomData); - -delegate_components! { - #[mark_component(IsDefaultBuildComponent)] - #[mark_delegate(DelegatesToDefaultBuildComponents)] - DefaultBuildComponents { +define_components! { + DefaultBuildComponents { ChainBuilderComponent: BuildChainWithCache, RelayBuilderComponent: BuildRelayWithCache, BiRelayBuilderComponent: BuildBiRelayFromRelays, diff --git a/crates/relayer/relayer-components/src/components/default/relay.rs b/crates/relayer/relayer-components/src/components/default/relay.rs index 60536c872..e737e4f6f 100644 --- a/crates/relayer/relayer-components/src/components/default/relay.rs +++ b/crates/relayer/relayer-components/src/components/default/relay.rs @@ -1,5 +1,5 @@ use cgp_core::prelude::*; -use cgp_core::RunnerComponent; +pub use cgp_core::RunnerComponent; use crate::relay::impls::auto_relayers::both_targets::RelayBothTargets; use crate::relay::impls::auto_relayers::event::RelayEvents; @@ -29,32 +29,28 @@ use crate::relay::impls::packet_relayers::timeout_unordered::timeout_unordered_p use crate::relay::impls::update_client::build::BuildUpdateClientMessages; use crate::relay::impls::update_client::skip::SkipUpdateClient; use crate::relay::impls::update_client::wait::WaitUpdateClient; -use crate::relay::traits::auto_relayer::AutoRelayerComponent; -use crate::relay::traits::channel::open_ack::ChannelOpenAckRelayerComponent; -use crate::relay::traits::channel::open_confirm::ChannelOpenConfirmRelayerComponent; -use crate::relay::traits::channel::open_handshake::ChannelOpenHandshakeRelayerComponent; -use crate::relay::traits::channel::open_init::ChannelInitializerComponent; -use crate::relay::traits::channel::open_try::ChannelOpenTryRelayerComponent; -use crate::relay::traits::client_creator::ClientCreatorComponent; -use crate::relay::traits::connection::open_ack::ConnectionOpenAckRelayerComponent; -use crate::relay::traits::connection::open_confirm::ConnectionOpenConfirmRelayerComponent; -use crate::relay::traits::connection::open_handshake::ConnectionOpenHandshakeRelayerComponent; -use crate::relay::traits::connection::open_init::ConnectionInitializerComponent; -use crate::relay::traits::connection::open_try::ConnectionOpenTryRelayerComponent; -use crate::relay::traits::event_relayer::EventRelayerComponent; -use crate::relay::traits::ibc_message_sender::{IbcMessageSenderComponent, MainSink}; -use crate::relay::traits::packet_clearer::PacketClearerComponent; -use crate::relay::traits::packet_relayer::PacketRelayerComponent; -use crate::relay::traits::packet_relayers::ack_packet::AckPacketRelayerComponent; -use crate::relay::traits::packet_relayers::receive_packet::ReceivePacketRelayerComponnent; -use crate::relay::traits::packet_relayers::timeout_unordered_packet::TimeoutUnorderedPacketRelayerComponent; -use crate::relay::traits::update_client_message_builder::TargetUpdateClientMessageBuilderComponent; +pub use crate::relay::traits::auto_relayer::AutoRelayerComponent; +pub use crate::relay::traits::channel::open_ack::ChannelOpenAckRelayerComponent; +pub use crate::relay::traits::channel::open_confirm::ChannelOpenConfirmRelayerComponent; +pub use crate::relay::traits::channel::open_handshake::ChannelOpenHandshakeRelayerComponent; +pub use crate::relay::traits::channel::open_init::ChannelInitializerComponent; +pub use crate::relay::traits::channel::open_try::ChannelOpenTryRelayerComponent; +pub use crate::relay::traits::client_creator::ClientCreatorComponent; +pub use crate::relay::traits::connection::open_ack::ConnectionOpenAckRelayerComponent; +pub use crate::relay::traits::connection::open_confirm::ConnectionOpenConfirmRelayerComponent; +pub use crate::relay::traits::connection::open_handshake::ConnectionOpenHandshakeRelayerComponent; +pub use crate::relay::traits::connection::open_init::ConnectionInitializerComponent; +pub use crate::relay::traits::connection::open_try::ConnectionOpenTryRelayerComponent; +pub use crate::relay::traits::event_relayer::EventRelayerComponent; +pub use crate::relay::traits::ibc_message_sender::{IbcMessageSenderComponent, MainSink}; +pub use crate::relay::traits::packet_clearer::PacketClearerComponent; +pub use crate::relay::traits::packet_relayer::PacketRelayerComponent; +pub use crate::relay::traits::packet_relayers::ack_packet::AckPacketRelayerComponent; +pub use crate::relay::traits::packet_relayers::receive_packet::ReceivePacketRelayerComponnent; +pub use crate::relay::traits::packet_relayers::timeout_unordered_packet::TimeoutUnorderedPacketRelayerComponent; +pub use crate::relay::traits::update_client_message_builder::TargetUpdateClientMessageBuilderComponent; -pub struct DefaultRelayComponents; - -delegate_components! { - #[mark_component(IsDefaultRelayComponent)] - #[mark_delegate(DelegatesToDefaultRelayComponents)] +define_components! { DefaultRelayComponents { IbcMessageSenderComponent: SendIbcMessagesWithUpdateClient, TargetUpdateClientMessageBuilderComponent: SkipUpdateClient>, diff --git a/crates/relayer/relayer-components/src/components/default/transaction.rs b/crates/relayer/relayer-components/src/components/default/transaction.rs index c0edef999..92615c32d 100644 --- a/crates/relayer/relayer-components/src/components/default/transaction.rs +++ b/crates/relayer/relayer-components/src/components/default/transaction.rs @@ -46,11 +46,7 @@ use crate::transaction::traits::types::transaction::HasTransactionType; use crate::transaction::traits::types::tx_hash::HasTransactionHashType; use crate::transaction::traits::types::tx_response::HasTxResponseType; -pub struct DefaultTxComponents; - -delegate_components! { - #[mark_component(IsDefaultTxComponents)] - #[mark_delegate(DelegatesToDefaultTxComponents)] +define_components! { DefaultTxComponents { MessageSenderComponent: SendMessagesWithDefaultSigner, MessagesWithSignerSenderComponent: AllocateNonceAndSendMessages, diff --git a/crates/runtime/runtime/src/impls/runtime/components.rs b/crates/runtime/runtime/src/impls/runtime/components.rs index 058ec75d4..c9facec12 100644 --- a/crates/runtime/runtime/src/impls/runtime/components.rs +++ b/crates/runtime/runtime/src/impls/runtime/components.rs @@ -1,8 +1,6 @@ -use cgp_core::delegate_all; use cgp_core::prelude::*; -use hermes_tokio_runtime_components::components::parallel::{ - IsTokioParallelRuntimeComponent, TokioParallelRuntimeComponents, -}; +use hermes_tokio_runtime_components::components::parallel::*; +use hermes_tokio_runtime_components::with_tokio_parallel_runtime_components; use crate::types::runtime::HermesRuntime; @@ -12,8 +10,10 @@ impl HasComponents for HermesRuntime { type Components = HermesRuntimeComponents; } -delegate_all!( - IsTokioParallelRuntimeComponent, - TokioParallelRuntimeComponents, - HermesRuntimeComponents, -); +with_tokio_parallel_runtime_components! { + delegate_components! { + HermesRuntimeComponents { + @TokioParallelRuntimeComponents: TokioParallelRuntimeComponents, + } + } +} diff --git a/crates/runtime/tokio-runtime-components/src/components/concurrent.rs b/crates/runtime/tokio-runtime-components/src/components/concurrent.rs index 77d6d1bc8..6436f2cd2 100644 --- a/crates/runtime/tokio-runtime-components/src/components/concurrent.rs +++ b/crates/runtime/tokio-runtime-components/src/components/concurrent.rs @@ -30,11 +30,7 @@ use hermes_runtime_components::traits::time::TimeComponent; use crate::components::parallel::TokioParallelRuntimeComponents; -pub struct TokioConcurrentRuntimeComponents; - -delegate_components! { - #[mark_component(IsTokioConcurrentRuntimeComponent)] - #[mark_delegate(DelegatesToTokioConcurrentRuntimeComponents)] +define_components! { TokioConcurrentRuntimeComponents { ConcurrentTaskRunnerComponent: RunConcurrentTasks, [ diff --git a/crates/runtime/tokio-runtime-components/src/components/parallel.rs b/crates/runtime/tokio-runtime-components/src/components/parallel.rs index 85935816b..37d86fadc 100644 --- a/crates/runtime/tokio-runtime-components/src/components/parallel.rs +++ b/crates/runtime/tokio-runtime-components/src/components/parallel.rs @@ -6,33 +6,33 @@ use hermes_async_runtime_components::stream::impls::boxed::ProvideBoxedStreamTyp use hermes_async_runtime_components::stream::impls::map::BoxedStreamMapper; use hermes_async_runtime_components::subscription::impls::subscription::ProvideBoxedSubscription; use hermes_runtime_components::impls::os::exec_command::ExecCommandWithNoEnv; -use hermes_runtime_components::traits::channel::{ +pub use hermes_runtime_components::traits::channel::{ ChannelCreatorComponent, ChannelTypeComponent, ChannelUserComponent, ReceiverStreamerComponent, SenderClonerComponent, }; -use hermes_runtime_components::traits::channel_once::{ +pub use hermes_runtime_components::traits::channel_once::{ ChannelOnceCreatorComponent, ChannelOnceTypeComponent, ChannelOnceUserComponent, }; -use hermes_runtime_components::traits::fs::copy_file::FileCopierComponent; -use hermes_runtime_components::traits::fs::create_dir::DirCreatorComponent; -use hermes_runtime_components::traits::fs::file_path::FilePathTypeComponent; -use hermes_runtime_components::traits::fs::read_file::FileAsStringReaderComponent; -use hermes_runtime_components::traits::fs::write_file::StringToFileWriterComponent; -use hermes_runtime_components::traits::mutex::MutexComponent; -use hermes_runtime_components::traits::os::child_process::{ +pub use hermes_runtime_components::traits::fs::copy_file::FileCopierComponent; +pub use hermes_runtime_components::traits::fs::create_dir::DirCreatorComponent; +pub use hermes_runtime_components::traits::fs::file_path::FilePathTypeComponent; +pub use hermes_runtime_components::traits::fs::read_file::FileAsStringReaderComponent; +pub use hermes_runtime_components::traits::fs::write_file::StringToFileWriterComponent; +pub use hermes_runtime_components::traits::mutex::MutexComponent; +pub use hermes_runtime_components::traits::os::child_process::{ ChildProcessStarterComponent, ChildProcessTypeComponent, }; -use hermes_runtime_components::traits::os::exec_command::{ +pub use hermes_runtime_components::traits::os::exec_command::{ CommandExecutorComponent, CommandWithEnvsExecutorComponent, }; -use hermes_runtime_components::traits::os::reserve_port::TcpPortReserverComponent; -use hermes_runtime_components::traits::random::RandomGeneratorComponent; -use hermes_runtime_components::traits::sleep::SleeperComponent; -use hermes_runtime_components::traits::spawn::TaskSpawnerComponent; -use hermes_runtime_components::traits::stream::{StreamMapperComponent, StreamTypeComponent}; -use hermes_runtime_components::traits::subscription::SubscriptionComponent; -use hermes_runtime_components::traits::task::ConcurrentTaskRunnerComponent; -use hermes_runtime_components::traits::time::TimeComponent; +pub use hermes_runtime_components::traits::os::reserve_port::TcpPortReserverComponent; +pub use hermes_runtime_components::traits::random::RandomGeneratorComponent; +pub use hermes_runtime_components::traits::sleep::SleeperComponent; +pub use hermes_runtime_components::traits::spawn::TaskSpawnerComponent; +pub use hermes_runtime_components::traits::stream::{StreamMapperComponent, StreamTypeComponent}; +pub use hermes_runtime_components::traits::subscription::SubscriptionComponent; +pub use hermes_runtime_components::traits::task::ConcurrentTaskRunnerComponent; +pub use hermes_runtime_components::traits::time::TimeComponent; use crate::impls::fs::copy_file::TokioCopyFile; use crate::impls::fs::create_dir::TokioCreateDir; @@ -48,11 +48,7 @@ use crate::impls::sleep::TokioSleep; use crate::impls::spawn::TokioSpawnTask; use crate::impls::time::ProvideStdTime; -pub struct TokioParallelRuntimeComponents; - -delegate_components! { - #[mark_component(IsTokioParallelRuntimeComponent)] - #[mark_delegate(DelegatesToTokioParallelRuntimeComponents)] +define_components! { TokioParallelRuntimeComponents { SleeperComponent: TokioSleep, TimeComponent: ProvideStdTime, diff --git a/crates/solomachine/solomachine-relayer/src/context/encoding.rs b/crates/solomachine/solomachine-relayer/src/context/encoding.rs index 7aabff76c..b07effd97 100644 --- a/crates/solomachine/solomachine-relayer/src/context/encoding.rs +++ b/crates/solomachine/solomachine-relayer/src/context/encoding.rs @@ -1,33 +1,32 @@ use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use cgp_error_eyre::{ProvideEyreError, RaiseDebugError}; use hermes_encoding_components::traits::convert::CanConvertBothWays; use hermes_encoding_components::traits::encode_and_decode::CanEncodeAndDecode; use hermes_protobuf_encoding_components::types::{Any, Protobuf}; -use crate::encoding::components::{ - IsSolomachineEncodingComponent, - SolomachineEncodingComponents as BaseSolomachineEncodingComponents, -}; +use crate::encoding::components::*; use crate::types::client_state::SolomachineClientState; use crate::types::consensus_state::SolomachineConsensusState; pub struct SolomachineEncoding; -pub struct SolomachineEncodingComponents; +pub struct SolomachineEncodingComponents2; impl HasComponents for SolomachineEncoding { - type Components = SolomachineEncodingComponents; + type Components = SolomachineEncodingComponents2; } -delegate_all!( - IsSolomachineEncodingComponent, - BaseSolomachineEncodingComponents, - SolomachineEncodingComponents, -); +with_solomachine_encoding_components! { + delegate_components! { + SolomachineEncodingComponents2 { + @SolomachineEncodingComponents: SolomachineEncodingComponents, + } + } +} delegate_components! { - SolomachineEncodingComponents { + SolomachineEncodingComponents2 { ErrorTypeComponent: ProvideEyreError, ErrorRaiserComponent: RaiseDebugError, } diff --git a/crates/solomachine/solomachine-relayer/src/encoding/components.rs b/crates/solomachine/solomachine-relayer/src/encoding/components.rs index ab1ef9566..b75f5df35 100644 --- a/crates/solomachine/solomachine-relayer/src/encoding/components.rs +++ b/crates/solomachine/solomachine-relayer/src/encoding/components.rs @@ -2,20 +2,17 @@ use cgp_core::prelude::*; use hermes_encoding_components::impls::delegate::DelegateEncoding; use hermes_encoding_components::impls::encoded::ProvideEncodedBytes; use hermes_encoding_components::impls::schema::ProvideStringSchema; -use hermes_encoding_components::traits::convert::ConverterComponent; -use hermes_encoding_components::traits::decoder::DecoderComponent; -use hermes_encoding_components::traits::encoded::EncodedTypeComponent; -use hermes_encoding_components::traits::encoder::EncoderComponent; -use hermes_encoding_components::traits::schema::{SchemaGetterComponent, SchemaTypeComponent}; +pub use hermes_encoding_components::traits::convert::ConverterComponent; +pub use hermes_encoding_components::traits::decoder::DecoderComponent; +pub use hermes_encoding_components::traits::encoded::EncodedTypeComponent; +pub use hermes_encoding_components::traits::encoder::EncoderComponent; +pub use hermes_encoding_components::traits::schema::{SchemaGetterComponent, SchemaTypeComponent}; use crate::encoding::convert::SolomachineConverterComponents; use crate::encoding::encoder::SolomachineEncoderComponents; use crate::encoding::type_url::SolomachineTypeUrlSchemas; -pub struct SolomachineEncodingComponents; - -delegate_components! { - #[mark_component(IsSolomachineEncodingComponent)] +define_components! { SolomachineEncodingComponents { EncodedTypeComponent: ProvideEncodedBytes, diff --git a/crates/solomachine/solomachine-relayer/src/impls/relay/component.rs b/crates/solomachine/solomachine-relayer/src/impls/relay/component.rs index e547f23e8..a8e3c671d 100644 --- a/crates/solomachine/solomachine-relayer/src/impls/relay/component.rs +++ b/crates/solomachine/solomachine-relayer/src/impls/relay/component.rs @@ -1,9 +1,8 @@ use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use hermes_cosmos_relayer::types::error::{DebugError, ProvideCosmosError}; -use hermes_relayer_components::components::default::relay::{ - DefaultRelayComponents, IsDefaultRelayComponent, -}; +use hermes_relayer_components::components::default::relay::*; +use hermes_relayer_components::with_default_relay_components; use hermes_runtime::impls::types::runtime::ProvideHermesRuntime; use hermes_runtime_components::traits::runtime::RuntimeTypeComponent; @@ -11,11 +10,13 @@ use crate::context::relay::SolomachineRelay; pub struct SolomachineRelayComponents; -delegate_all!( - IsDefaultRelayComponent, - DefaultRelayComponents, - SolomachineRelayComponents, -); +with_default_relay_components! { + delegate_components! { + SolomachineRelayComponents { + @DefaultRelayComponents : DefaultRelayComponents, + } + } +} impl HasComponents for SolomachineRelay where diff --git a/crates/solomachine/solomachine-relayer/src/lib.rs b/crates/solomachine/solomachine-relayer/src/lib.rs index 52d695acf..ab07c059c 100644 --- a/crates/solomachine/solomachine-relayer/src/lib.rs +++ b/crates/solomachine/solomachine-relayer/src/lib.rs @@ -1,5 +1,6 @@ #![allow(clippy::let_and_return)] #![allow(clippy::needless_lifetimes)] +#![allow(macro_expanded_macro_exports_accessed_by_absolute_paths)] extern crate alloc; diff --git a/crates/test/test-components/src/setup/binary_channel/components.rs b/crates/test/test-components/src/setup/binary_channel/components.rs index f95a9899f..487c38843 100644 --- a/crates/test/test-components/src/setup/binary_channel/components.rs +++ b/crates/test/test-components/src/setup/binary_channel/components.rs @@ -32,29 +32,25 @@ use crate::setup::impls::clients::SetupClientsWithRelay; use crate::setup::impls::connection::SetupConnectionHandshake; use crate::setup::impls::relay::SetupRelayWithBuilder; use crate::setup::impls::run_test::BuildDriverAndRunTest; -use crate::setup::traits::birelay::BiRelaySetupComponent; +pub use crate::setup::traits::birelay::BiRelaySetupComponent; use crate::setup::traits::bootstrap_at::ProvideBootstrapAt; use crate::setup::traits::builder_at::ProvideBuilderAt; -use crate::setup::traits::chain::ChainSetupComponent; -use crate::setup::traits::channel::ChannelSetupComponent; -use crate::setup::traits::clients::ClientSetupComponent; -use crate::setup::traits::connection::ConnectionSetupComponent; +pub use crate::setup::traits::chain::ChainSetupComponent; +pub use crate::setup::traits::channel::ChannelSetupComponent; +pub use crate::setup::traits::clients::ClientSetupComponent; +pub use crate::setup::traits::connection::ConnectionSetupComponent; use crate::setup::traits::create_client_options_at::ProvideCreateClientOptionsAt; -use crate::setup::traits::driver::{ +pub use crate::setup::traits::driver::{ CanBuildTestDriver, DriverBuilderComponent, ProvideTestDriverType, }; use crate::setup::traits::drivers::binary_channel::BinaryChannelDriverBuilder; use crate::setup::traits::init_channel_options_at::ProvideInitChannelOptionsAt; use crate::setup::traits::init_connection_options_at::ProvideInitConnectionOptionsAt; use crate::setup::traits::port_id_at::ProvidePortIdAt; -use crate::setup::traits::relay::RelaySetupComponent; -use crate::setup::traits::run_test::TestRunnerComponent; +pub use crate::setup::traits::relay::RelaySetupComponent; +pub use crate::setup::traits::run_test::TestRunnerComponent; -pub struct BinaryChannelTestComponents; - -delegate_components! { - #[mark_component(IsBinaryChannelTestComponent)] - #[mark_delegate(DelegatesToBinaryChannelTestComponents)] +define_components! { BinaryChannelTestComponents { DriverBuilderComponent: SetupBinaryChannelDriver, TestRunnerComponent: BuildDriverAndRunTest, diff --git a/crates/wasm/wasm-client-components/src/contexts/wasm_counterparty.rs b/crates/wasm/wasm-client-components/src/contexts/wasm_counterparty.rs index 2eba54899..a7943bf82 100644 --- a/crates/wasm/wasm-client-components/src/contexts/wasm_counterparty.rs +++ b/crates/wasm/wasm-client-components/src/contexts/wasm_counterparty.rs @@ -1,5 +1,5 @@ use cgp_core::prelude::*; -use cgp_core::{delegate_all, ErrorRaiserComponent, ErrorTypeComponent}; +use cgp_core::{ErrorRaiserComponent, ErrorTypeComponent}; use cgp_error_eyre::{ProvideEyreError, RaiseDebugError}; use hermes_cosmos_chain_components::components::delegate::DelegateCosmosChainComponents; use hermes_cosmos_chain_components::impls::types::chain::ProvideCosmosChainTypes; @@ -20,7 +20,7 @@ use hermes_relayer_components::chain::traits::types::packet::IbcPacketTypesProvi use hermes_relayer_components::chain::traits::types::status::ChainStatusTypeComponent; use hermes_relayer_components::chain::traits::types::timestamp::TimestampTypeComponent; -use crate::impls::encoding::components::{IsWasmEncodingComponent, WasmEncodingComponents}; +use crate::impls::encoding::components::*; use crate::impls::types::client_state::ProvideWasmClientState; use crate::types::client_state::{ProtoWasmClientState, WasmClientState}; @@ -82,11 +82,13 @@ impl HasComponents for WasmClientEncoding { type Components = WasmClientEncodingComponents; } -delegate_all!( - IsWasmEncodingComponent, - WasmEncodingComponents, - WasmClientEncodingComponents, -); +with_wasm_encoding_components! { + delegate_components! { + WasmClientEncodingComponents { + @WasmEncodingComponents: WasmEncodingComponents, + } + } +} delegate_components! { WasmClientEncodingComponents { diff --git a/crates/wasm/wasm-client-components/src/impls/encoding/components.rs b/crates/wasm/wasm-client-components/src/impls/encoding/components.rs index 1e6c5829f..9318dcc7a 100644 --- a/crates/wasm/wasm-client-components/src/impls/encoding/components.rs +++ b/crates/wasm/wasm-client-components/src/impls/encoding/components.rs @@ -2,20 +2,17 @@ use cgp_core::prelude::*; use hermes_encoding_components::impls::delegate::DelegateEncoding; use hermes_encoding_components::impls::encoded::ProvideEncodedBytes; use hermes_encoding_components::impls::schema::ProvideStringSchema; -use hermes_encoding_components::traits::convert::ConverterComponent; -use hermes_encoding_components::traits::decoder::DecoderComponent; -use hermes_encoding_components::traits::encoded::EncodedTypeComponent; -use hermes_encoding_components::traits::encoder::EncoderComponent; -use hermes_encoding_components::traits::schema::{SchemaGetterComponent, SchemaTypeComponent}; +pub use hermes_encoding_components::traits::convert::ConverterComponent; +pub use hermes_encoding_components::traits::decoder::DecoderComponent; +pub use hermes_encoding_components::traits::encoded::EncodedTypeComponent; +pub use hermes_encoding_components::traits::encoder::EncoderComponent; +pub use hermes_encoding_components::traits::schema::{SchemaGetterComponent, SchemaTypeComponent}; use crate::impls::encoding::convert::WasmConverterComponents; use crate::impls::encoding::encoder::WasmEncoderComponents; use crate::impls::encoding::type_url::WasmTypeUrlSchemas; -pub struct WasmEncodingComponents; - -delegate_components! { - #[mark_component(IsWasmEncodingComponent)] +define_components! { WasmEncodingComponents { EncodedTypeComponent: ProvideEncodedBytes, diff --git a/crates/wasm/wasm-client-components/src/lib.rs b/crates/wasm/wasm-client-components/src/lib.rs index 691c2d9b5..b4bf0218a 100644 --- a/crates/wasm/wasm-client-components/src/lib.rs +++ b/crates/wasm/wasm-client-components/src/lib.rs @@ -1,3 +1,5 @@ +#![allow(macro_expanded_macro_exports_accessed_by_absolute_paths)] + pub mod contexts; pub mod impls; pub mod types; diff --git a/tools/integration-test/src/lib.rs b/tools/integration-test/src/lib.rs index 9d1d5ae10..1a1c6f690 100644 --- a/tools/integration-test/src/lib.rs +++ b/tools/integration-test/src/lib.rs @@ -1,5 +1,5 @@ #![recursion_limit = "256"] +#![allow(clippy::too_many_arguments)] -#[allow(clippy::too_many_arguments)] #[cfg(test)] pub mod tests;