Trait cw_multi_test::Module

source ·
pub trait Module {
    type ExecT;
    type QueryT;
    type SudoT;

    // Required methods
    fn execute<ExecC, QueryC>(
        &self,
        api: &dyn Api,
        storage: &mut dyn Storage,
        router: &dyn CosmosRouter<ExecC = ExecC, QueryC = QueryC>,
        block: &BlockInfo,
        sender: Addr,
        msg: Self::ExecT
    ) -> AnyResult<AppResponse>
       where ExecC: Debug + Clone + PartialEq + JsonSchema + DeserializeOwned + 'static,
             QueryC: CustomQuery + DeserializeOwned + 'static;
    fn sudo<ExecC, QueryC>(
        &self,
        api: &dyn Api,
        storage: &mut dyn Storage,
        router: &dyn CosmosRouter<ExecC = ExecC, QueryC = QueryC>,
        block: &BlockInfo,
        msg: Self::SudoT
    ) -> AnyResult<AppResponse>
       where ExecC: Debug + Clone + PartialEq + JsonSchema + DeserializeOwned + 'static,
             QueryC: CustomQuery + DeserializeOwned + 'static;
    fn query(
        &self,
        api: &dyn Api,
        storage: &dyn Storage,
        querier: &dyn Querier,
        block: &BlockInfo,
        request: Self::QueryT
    ) -> AnyResult<Binary>;
}

Required Associated Types§

Required Methods§

source

fn execute<ExecC, QueryC>( &self, api: &dyn Api, storage: &mut dyn Storage, router: &dyn CosmosRouter<ExecC = ExecC, QueryC = QueryC>, block: &BlockInfo, sender: Addr, msg: Self::ExecT ) -> AnyResult<AppResponse>where ExecC: Debug + Clone + PartialEq + JsonSchema + DeserializeOwned + 'static, QueryC: CustomQuery + DeserializeOwned + 'static,

execute runs any ExecT message, which can be called by any external actor or smart contract

source

fn sudo<ExecC, QueryC>( &self, api: &dyn Api, storage: &mut dyn Storage, router: &dyn CosmosRouter<ExecC = ExecC, QueryC = QueryC>, block: &BlockInfo, msg: Self::SudoT ) -> AnyResult<AppResponse>where ExecC: Debug + Clone + PartialEq + JsonSchema + DeserializeOwned + 'static, QueryC: CustomQuery + DeserializeOwned + 'static,

sudo runs privileged actions, like minting tokens, or governance proposals. This allows modules to have full access to these privileged actions, that cannot be triggered by smart contracts.

There is no sender, as this must be previously authorized before the call

source

fn query( &self, api: &dyn Api, storage: &dyn Storage, querier: &dyn Querier, block: &BlockInfo, request: Self::QueryT ) -> AnyResult<Binary>

Implementors§

source§

impl Module for BankKeeper

source§

impl Module for DistributionKeeper

source§

impl Module for StakeKeeper

source§

impl<Exec, Query> Module for CachingCustomHandler<Exec, Query>

§

type ExecT = Exec

§

type QueryT = Query

§

type SudoT = Empty

source§

impl<Exec, Query, Sudo> Module for FailingModule<Exec, Query, Sudo>where Exec: Debug, Query: Debug, Sudo: Debug,

§

type ExecT = Exec

§

type QueryT = Query

§

type SudoT = Sudo