diff --git a/cmd/soroban-cli/src/commands/config/locator.rs b/cmd/soroban-cli/src/commands/config/locator.rs index 33d0e3d47..f40652024 100644 --- a/cmd/soroban-cli/src/commands/config/locator.rs +++ b/cmd/soroban-cli/src/commands/config/locator.rs @@ -9,7 +9,7 @@ use std::{ path::{Path, PathBuf}, str::FromStr, }; -use stellar_strkey::DecodeError; +use stellar_strkey::{Contract, DecodeError}; use crate::{utils::find_config_dir, Pwd}; @@ -319,13 +319,15 @@ impl Args { &self, alias_or_contract_id: &str, network_passphrase: &str, - ) -> Result<[u8; 32], Error> { + ) -> Result { let contract_id = self .get_contract_id(alias_or_contract_id, network_passphrase)? .unwrap_or_else(|| alias_or_contract_id.to_string()); - soroban_spec_tools::utils::contract_id_from_str(&contract_id) - .map_err(|e| Error::CannotParseContractId(contract_id.clone(), e)) + Ok(Contract( + soroban_spec_tools::utils::contract_id_from_str(&contract_id) + .map_err(|e| Error::CannotParseContractId(contract_id.clone(), e))?, + )) } } diff --git a/cmd/soroban-cli/src/commands/contract/bindings/typescript.rs b/cmd/soroban-cli/src/commands/contract/bindings/typescript.rs index 635446b85..f761fff85 100644 --- a/cmd/soroban-cli/src/commands/contract/bindings/typescript.rs +++ b/cmd/soroban-cli/src/commands/contract/bindings/typescript.rs @@ -96,7 +96,8 @@ impl NetworkRunnable for Cmd { let contract_id = self .locator - .resolve_contract_id(&self.contract_id, &network.network_passphrase)?; + .resolve_contract_id(&self.contract_id, &network.network_passphrase)? + .0; get_remote_contract_spec( &contract_id, diff --git a/cmd/soroban-cli/src/commands/contract/fetch.rs b/cmd/soroban-cli/src/commands/contract/fetch.rs index c2eb5d7f6..42f474558 100644 --- a/cmd/soroban-cli/src/commands/contract/fetch.rs +++ b/cmd/soroban-cli/src/commands/contract/fetch.rs @@ -127,7 +127,8 @@ impl Cmd { let network = self.network()?; Ok(self .locator - .resolve_contract_id(&self.contract_id, &network.network_passphrase)?) + .resolve_contract_id(&self.contract_id, &network.network_passphrase)? + .0) } } diff --git a/cmd/soroban-cli/src/commands/contract/invoke.rs b/cmd/soroban-cli/src/commands/contract/invoke.rs index e1ee84386..c14c5706d 100644 --- a/cmd/soroban-cli/src/commands/contract/invoke.rs +++ b/cmd/soroban-cli/src/commands/contract/invoke.rs @@ -326,7 +326,8 @@ impl NetworkRunnable for Cmd { let contract_id = self .config .locator - .resolve_contract_id(&self.contract_id, &network.network_passphrase)?; + .resolve_contract_id(&self.contract_id, &network.network_passphrase)? + .0; let spec_entries = self.spec_entries()?; if let Some(spec_entries) = &spec_entries { // For testing wasm arg parsing diff --git a/cmd/soroban-cli/src/commands/events.rs b/cmd/soroban-cli/src/commands/events.rs index 23cd07e9d..a16be5734 100644 --- a/cmd/soroban-cli/src/commands/events.rs +++ b/cmd/soroban-cli/src/commands/events.rs @@ -7,7 +7,7 @@ use super::{ config::{self, locator}, global, network, NetworkRunnable, }; -use crate::{rpc, utils}; +use crate::rpc; #[derive(Parser, Debug, Clone)] #[group(skip)] @@ -159,14 +159,6 @@ impl Cmd { } } - // Validate contract_ids - for id in &mut self.contract_ids { - utils::contract_id_from_str(id).map_err(|e| Error::InvalidContractId { - contract_id: id.clone(), - error: e, - })?; - } - let response = self.run_against_rpc_server(None, None).await?; for event in &response.events { @@ -226,11 +218,23 @@ impl NetworkRunnable for Cmd { client .verify_network_passphrase(Some(&network.network_passphrase)) .await?; + + let contract_ids: Vec = self + .contract_ids + .iter() + .map(|id| { + Ok(self + .locator + .resolve_contract_id(id, &network.network_passphrase)? + .to_string()) + }) + .collect::, Error>>()?; + Ok(client .get_events( start, Some(self.event_type), - &self.contract_ids, + &contract_ids, &self.topic_filters, Some(self.count), )