Override entry point

Sylvia is still developing and lacks features like f.e. sudo support. If you need to use a lacking feature of CosmWasm or prefer to define some custom entry point, it is possible to use the #[sv::override_entry_point(...)] attribute.

Example

To make sylvia generate multitest helpers with sudo support, you first need to define your entry point.

#[entry_point]
pub fn sudo(deps: DepsMut, _env: Env, _msg: SudoMsg) -> StdResult<Response> {
    CounterContract::new().counter.save(deps.storage, &3)?;
    Ok(Response::new())
}

You have to define the SudoMsg yourself, as it is not yet supported.

#[cfg_attr(not(feature = "library"), entry_points)]
#[contract]
#[sv::override_entry_point(sudo=crate::entry_points::sudo(crate::messages::SudoMsg))]
#[sv::override_entry_point(exec=crate::entry_points::execute(crate::messages::CustomExecMsg))]
impl CounterContract {
}

For every entry point, provide the path to the function in a separate attribute. You also have to provide the type of your custom msg, as multitest helpers need to deserialize an array of bytes.

Next step

In the next chapter, I will cover the interface macro.