1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
//! Data structures and logic to set up IBC client's parameters.
use crate::chain::cosmos;
use crate::config::ChainConfig;
use crate::foreign_client::CreateOptions;
/// Client parameters for the `build_create_client` operation.
///
/// The parameters are specialized for each supported chain type.
#[derive(Clone, Debug)]
pub enum ClientSettings {
Tendermint(cosmos::client::Settings),
}
impl ClientSettings {
/// Takes the settings from the user-supplied options if they have been specified,
/// falling back to defaults using the configuration of the source
/// and the destination chain.
pub fn for_create_command(
options: CreateOptions,
src_chain_config: &ChainConfig,
dst_chain_config: &ChainConfig,
) -> Self {
// Currently, only Tendermint chain pairs are supported by
// ForeignClient::build_create_client_and_send. Support for
// heterogeneous chains is left for future revisions.
ClientSettings::Tendermint(cosmos::client::Settings::for_create_command(
options,
src_chain_config,
dst_chain_config,
))
}
}