#[derive(Debug)]
pub enum WatchError {
InvalidContractAddress,
MonitoringFailed,
}
pub fn watch_contract_transactions<F>(
contract_address: String, poll_interval: std::time::Duration,
callback: F,
) -> Result<(), WatchError>
where
F: Fn(&str) + Send + 'static,
{
if contract_address.is_empty() {
return Err(WatchError::InvalidContractAddress);
}
println!("Starting to watch contract at address {}...", contract_address);
std::thread::spawn(move || {
for _ in 0..5 {
std::thread::sleep(poll_interval);
let simulated_transaction = format!("Transaction detected for contract: {}", contract_address);
callback(&simulated_transaction);
}
println!("Stopped watching contract at address {}.", contract_address);
});
Ok(())
}