use std::env;
use web3::types::{TransactionRequest, U256, H256};
use web3::transports::Http;
use web3::Web3;
pub async fn submit_transaction(
to_address: &str, raw_data: Vec<u8>, gas_limit: U256, gas_price: U256, nonce: U256 ) -> web3::Result<H256> {
let infura_project_id = env::var("INFURA_PROJECT_ID")
.expect("Infura project ID must be set in environment variables");
let infura_url = format!("https://mainnet.infura.io/v3/{}", infura_project_id);
let transport = Http::new(&infura_url)?;
let web3 = Web3::new(transport);
let tx = TransactionRequest {
to: Some(to_address.parse().unwrap()), gas: Some(gas_limit), gas_price: Some(gas_price), value: Some(U256::zero()), data: Some(raw_data.into()), nonce: Some(nonce), ..Default::default() };
let result = web3.eth().send_transaction(tx).await?;
Ok(result)
}