token_bindings/
query.rs

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