registry_query

Attribute Macro registry_query 

Source
#[registry_query]
Expand description

Procedural macro for cw83 standard that automatically needed variants for query messages of account registries.

§Notes

  • #[registry_query] must be applied before #[cw_serde] or other derives.
  • Enum must have #[derive(QueryResponses)] applied to make #[returns] properties valid.

This macro injects a QueryMsg::AccountInfo(...) variant into your query enum, returning an AccountResponse<T> that contains metadata about a smart account.

Macto takes two optional arguments:

  • The first type (optional) is used as the inner query type (e.g., QueryParams). Defaults to Option<Binary>.
  • The second type (optional) is used as the info payload returned by AccountResponse. Must be serializable Defaults to Option<Empty>.

§Examples

use cw83::registry_query;
use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::{Binary, Empty};

#[registry_query]
#[cw_serde]
#[derive(QueryResponses)]
pub enum RegQuery {
//
//    // user-defined queries
//
}

// Generated:
// pub struct AccountResponse<T> {
//     pub address: String,
//     pub info: Option<T>,
// }
//
// pub enum RegQuery {
//
//    // user-defined queries
//
//
//    #[returns(AccountResponse)]
//    AccountInfo(Option<Empty>),
// }


// With a custom query type:

pub struct QueryParams {
    pub custom_pubkey: Option<Binary>,
}

#[registry_query(QueryParams)]
#[cw_serde]
#[derive(QueryResponses)]
pub enum RegQueryParams {
//
//    // user-defined queries
//
}

// Generated:
// pub enum RegQueryParams {
//
//    // user-defined queries
//
//
//     #[returns(AccountResponse)] // same as above
//     AccountInfo(QueryParams),
// }

// With custom query type and custom info payload:

// the macro call requires name only and doesn't support syntax of generics
type OptionalBin = Option<Binary>;
 
#[registry_query(QueryParams, OptionalBin)]
#[cw_serde]
#[derive(QueryResponses)]
pub enum RegQueryCustom {
//
//    // user-defined queries
//
}

// Generated:
// pub struct AccountResponse {
//     pub address: String,
//     pub info: Option<Binary>,  // Binary instead of Empty
// }
//
// pub enum RegQueryCustom {
//
//    // user-defined queries
//
//     #[returns(AccountResponse)]
//     AccountInfo(QueryParams),
// }

This macro is part of the CW83 spec for account registries.