1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use cosmwasm_schema::cw_serde;
use cosmwasm_std::{Addr, Binary, Uint128};
use crate::logo::LogoInfo;
use cw_utils::Expiration;
#[cw_serde]
pub enum Cw20QueryMsg {
/// Returns the current balance of the given address, 0 if unset.
/// Return type: BalanceResponse.
Balance { address: String },
/// Returns metadata on the contract - name, decimals, supply, etc.
/// Return type: TokenInfoResponse.
TokenInfo {},
/// Only with "allowance" extension.
/// Returns how much spender can use from owner account, 0 if unset.
/// Return type: AllowanceResponse.
Allowance { owner: String, spender: String },
/// Only with "mintable" extension.
/// Returns who can mint and the hard cap on maximum tokens after minting.
/// Return type: MinterResponse.
Minter {},
/// Only with "marketing" extension
/// Returns more metadata on the contract to display in the client:
/// - description, logo, project url, etc.
/// Return type: MarketingInfoResponse.
MarketingInfo {},
/// Only with "marketing" extension
/// Downloads the embedded logo data (if stored on chain). Errors if no logo data stored for
/// this contract.
/// Return type: DownloadLogoResponse.
DownloadLogo {},
/// Only with "enumerable" extension (and "allowances")
/// Returns all allowances this owner has approved. Supports pagination.
/// Return type: AllAllowancesResponse.
AllAllowances {
owner: String,
start_after: Option<String>,
limit: Option<u32>,
},
/// Only with "enumerable" extension
/// Returns all accounts that have balances. Supports pagination.
/// Return type: AllAccountsResponse.
AllAccounts {
start_after: Option<String>,
limit: Option<u32>,
},
}
#[cw_serde]
pub struct BalanceResponse {
pub balance: Uint128,
}
#[cw_serde]
pub struct TokenInfoResponse {
pub name: String,
pub symbol: String,
pub decimals: u8,
pub total_supply: Uint128,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)]
pub struct AllowanceResponse {
pub allowance: Uint128,
pub expires: Expiration,
}
#[cw_serde]
pub struct MinterResponse {
pub minter: String,
/// cap is a hard cap on total supply that can be achieved by minting.
/// Note that this refers to total_supply.
/// If None, there is unlimited cap.
pub cap: Option<Uint128>,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)]
pub struct MarketingInfoResponse {
/// A URL pointing to the project behind this token.
pub project: Option<String>,
/// A longer description of the token and it's utility. Designed for tooltips or such
pub description: Option<String>,
/// A link to the logo, or a comment there is an on-chain logo stored
pub logo: Option<LogoInfo>,
/// The address (if any) who can update this data structure
pub marketing: Option<Addr>,
}
/// When we download an embedded logo, we get this response type.
/// We expect a SPA to be able to accept this info and display it.
#[cw_serde]
pub struct DownloadLogoResponse {
pub mime_type: String,
pub data: Binary,
}
#[cw_serde]
pub struct AllowanceInfo {
pub spender: String,
pub allowance: Uint128,
pub expires: Expiration,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)]
pub struct AllAllowancesResponse {
pub allowances: Vec<AllowanceInfo>,
}
#[cw_serde]
pub struct SpenderAllowanceInfo {
pub owner: String,
pub allowance: Uint128,
pub expires: Expiration,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)]
pub struct AllSpenderAllowancesResponse {
pub allowances: Vec<SpenderAllowanceInfo>,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema, Debug, Default)]
pub struct AllAccountsResponse {
pub accounts: Vec<String>,
}