cyber_std/tokenfactory/
query.rs

1use crate::tokenfactory::types::{Metadata, Params};
2use cosmwasm_schema::{cw_serde, QueryResponses};
3
4#[cw_serde]
5#[derive(QueryResponses)]
6pub enum TokenFactoryQuery {
7    /// Given a subdenom created by the address `creator_addr` via `OsmosisMsg::CreateDenom`,
8    /// returns the full denom as used by `BankMsg::Send`.
9    /// You may call `FullDenom { creator_addr: env.contract.address, subdenom }` to find the denom issued
10    /// by the current contract.
11    #[returns(FullDenomResponse)]
12    FullDenom {
13        creator_addr: String,
14        subdenom: String,
15    },
16    /// Returns the metadata set for this denom, if present. May return None.
17    /// This will also return metadata for native tokens created outside
18    /// of the token factory (like staking tokens)
19    #[returns(MetadataResponse)]
20    Metadata { denom: String },
21    /// Returns info on admin of the denom, only if created/managed via token factory.
22    /// Errors if denom doesn't exist or was created by another module.
23    #[returns(AdminResponse)]
24    Admin { denom: String },
25    /// List all denoms that were created by the given creator.
26    /// This does not imply all tokens currently managed by the creator.
27    /// (Admin may have changed)
28    #[returns(DenomsByCreatorResponse)]
29    DenomsByCreator { creator: String },
30    // Returns configuration params for TokenFactory modules
31    #[returns(ParamsResponse)]
32    Params {},
33}
34
35#[cw_serde]
36pub struct FullDenomResponse {
37    pub denom: String,
38}
39#[cw_serde]
40pub struct MetadataResponse {
41    /// Empty if this was never set for the given denom
42    pub metadata: Option<Metadata>,
43}
44
45#[cw_serde]
46pub struct AdminResponse {
47    pub admin: String,
48}
49
50#[cw_serde]
51pub struct DenomsByCreatorResponse {
52    pub denoms: Vec<String>,
53}
54
55#[cw_serde]
56pub struct ParamsResponse {
57    pub params: Params,
58}