use near_api::{
Contract, NetworkConfig, Signer,
types::{AccountId, Data},
};
use near_sandbox::config::{DEFAULT_GENESIS_ACCOUNT, DEFAULT_GENESIS_ACCOUNT_PRIVATE_KEY};
use testresult::TestResult;
#[tokio::main]
async fn main() -> TestResult {
let network = near_sandbox::Sandbox::start_sandbox().await.unwrap();
let account: AccountId = DEFAULT_GENESIS_ACCOUNT.into();
let network = NetworkConfig::from_rpc_url("sandbox", network.rpc_addr.parse().unwrap());
let signer =
Signer::from_secret_key(DEFAULT_GENESIS_ACCOUNT_PRIVATE_KEY.parse().unwrap()).unwrap();
Contract::deploy(account.clone())
.use_code(include_bytes!("../resources/counter.wasm").to_vec())
.without_init_call()
.with_signer(signer.clone())
.send_to(&network)
.await
.unwrap()
.assert_success();
let contract = Contract(account.clone());
let current_value: Data<i8> = contract
.call_function("get_num", ())
.read_only()
.fetch_from(&network)
.await
.unwrap();
println!("Current value: {}", current_value.data);
contract
.call_function("increment", ())
.transaction()
.with_signer(account.clone(), signer.clone())
.send_to(&network)
.await
.unwrap()
.assert_success();
let current_value: Data<i8> = contract
.call_function("get_num", ())
.read_only()
.fetch_from(&network)
.await
.unwrap();
println!("Current value: {}", current_value.data);
Ok(())
}