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}