#![doc(
html_logo_url = "https://use.ink/img/crate-docs/logo.png",
html_favicon_url = "https://use.ink/crate-docs/favicon.png"
)]
mod backend;
mod backend_calls;
mod builders;
mod client_utils;
mod contract_build;
mod contract_results;
mod error;
pub mod events;
mod node_proc;
#[cfg(feature = "sandbox")]
mod sandbox_client;
mod subxt_client;
mod xts;
pub use crate::contract_build::build_root_and_contract_dependencies;
pub use backend::{
ChainBackend,
ContractsBackend,
E2EBackend,
};
pub use backend_calls::{
CallBuilder,
InstantiateBuilder,
};
pub use contract_results::{
CallDryRunResult,
CallResult,
InstantiateDryRunResult,
InstantiationResult,
UploadResult,
};
pub use ink_e2e_macro::test;
pub use node_proc::{
TestNodeProcess,
TestNodeProcessBuilder,
};
#[cfg(feature = "sandbox")]
pub use sandbox_client::{
preset,
Client as SandboxClient,
};
pub use sp_core::H256;
pub use sp_keyring::AccountKeyring;
pub use subxt::{
self,
backend::rpc::RpcClient,
};
pub use subxt_client::{
CallBuilderFinal,
Client,
Error,
};
pub use subxt_signer::{
self,
sr25519::{
self,
dev::*,
Keypair,
},
};
pub use tokio;
pub use tracing_subscriber;
#[cfg(feature = "sandbox")]
pub use ink_sandbox::DefaultSandbox;
use ink::codegen::ContractCallBuilder;
use ink_env::{
call::FromAccountId,
ContractEnv,
Environment,
};
use pallet_contracts::{
ContractExecResult,
ContractInstantiateResult,
};
use std::{
cell::RefCell,
sync::Once,
};
use xts::ContractsApi;
pub use subxt::PolkadotConfig;
pub static INIT: Once = Once::new();
thread_local! {
pub static LOG_PREFIX: RefCell<String> = RefCell::new(String::from("no prefix set"));
}
pub fn log_prefix() -> String {
LOG_PREFIX.with(|log_prefix| log_prefix.borrow().clone())
}
pub fn log_info(msg: &str) {
tracing::info!("[{}] {}", log_prefix(), msg);
}
pub fn log_error(msg: &str) {
tracing::error!("[{}] {}", log_prefix(), msg);
}
pub fn account_id(account: AccountKeyring) -> ink_primitives::AccountId {
ink_primitives::AccountId::try_from(account.to_account_id().as_ref())
.expect("account keyring has a valid account id")
}
pub fn create_call_builder<Contract>(
acc_id: <<Contract as ContractEnv>::Env as Environment>::AccountId,
) -> <Contract as ContractCallBuilder>::Type
where
<Contract as ContractEnv>::Env: Environment,
Contract: ContractCallBuilder,
Contract: ContractEnv,
Contract::Type: FromAccountId<<Contract as ContractEnv>::Env>,
{
<<Contract as ContractCallBuilder>::Type as FromAccountId<
<Contract as ContractEnv>::Env,
>>::from_account_id(acc_id)
}