cw-orch-daemon 0.29.2

Scripting library for deploying and interacting with CosmWasm smart-contracts
Documentation
use counter_contract::{
    msg::InstantiateMsg, CounterContract, CounterExecuteMsgFns, CounterQueryMsgFns,
};
use cw_orch::{anyhow, daemon::senders::BatchDaemon, prelude::*};
use cw_orch_daemon::senders::CosmosBatchOptions;

// From https://github.com/CosmosContracts/juno/blob/32568dba828ff7783aea8cb5bb4b8b5832888255/docker/test-user.env#L2
const LOCAL_MNEMONIC: &str = "clip hire initial neck maid actor venue client foam budget lock catalog sweet steak waste crater broccoli pipe steak sister coyote moment obvious choose";
pub fn main() -> anyhow::Result<()> {
    std::env::set_var("LOCAL_MNEMONIC", LOCAL_MNEMONIC);
    dotenv::dotenv().ok(); // Used to load the `.env` file if any
    pretty_env_logger::init(); // Used to log contract and chain interactions

    let network = networks::LOCAL_JUNO;
    let chain: BatchDaemon =
        BatchDaemon::builder(network).build_sender(CosmosBatchOptions::default())?;

    let counter = CounterContract::new(chain.clone());

    counter.upload()?;
    counter.instantiate(&InstantiateMsg { count: 0 }, None, &[])?;

    counter.increment()?;

    // The count hasn't been incremented yet, we didn't broadcast the tx
    let count = counter.get_count()?;
    assert_eq!(count.count, 0);

    chain.rt_handle.block_on(chain.sender().broadcast(None))?;

    let count = counter.get_count()?;
    assert_eq!(count.count, 1);

    // Increment multiple times in the same transaction
    counter.increment()?;
    counter.increment()?;
    counter.increment()?;
    counter.increment()?;
    counter.increment()?;
    counter.increment()?;

    chain.rt_handle.block_on(chain.sender().broadcast(None))?;

    let count = counter.get_count()?;
    assert_eq!(count.count, 7);

    Ok(())
}