archway_bindings/
query.rs1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::CustomQuery;
3
4use crate::pagination::PageRequest;
5use crate::types::{gov, rewards};
6
7#[cw_serde]
9#[derive(QueryResponses)]
10pub enum ArchwayQuery {
11 #[returns(rewards::ContractMetadataResponse)]
13 ContractMetadata { contract_address: String },
14 #[returns(rewards::FlatFeeResponse)]
16 FlatFee { contract_address: String },
17 #[returns(rewards::RewardsRecordsResponse)]
22 RewardsRecords {
23 rewards_address: String,
24 pagination: Option<PageRequest>,
25 },
26 #[returns(gov::VoteResponse)]
28 GovVote { proposal_id: u64, voter: String },
29}
30
31impl CustomQuery for ArchwayQuery {}
32
33impl ArchwayQuery {
34 pub fn contract_metadata(contract_address: impl Into<String>) -> Self {
36 ArchwayQuery::ContractMetadata {
37 contract_address: contract_address.into(),
38 }
39 }
40
41 pub fn flat_fee(contract_address: impl Into<String>) -> Self {
43 ArchwayQuery::FlatFee {
44 contract_address: contract_address.into(),
45 }
46 }
47
48 pub fn rewards_records(rewards_address: impl Into<String>) -> Self {
50 ArchwayQuery::RewardsRecords {
51 rewards_address: rewards_address.into(),
52 pagination: None,
53 }
54 }
55
56 pub fn rewards_records_with_pagination(
59 rewards_address: impl Into<String>,
60 pagination: PageRequest,
61 ) -> Self {
62 ArchwayQuery::RewardsRecords {
63 rewards_address: rewards_address.into(),
64 pagination: Some(pagination),
65 }
66 }
67
68 pub fn gov_vote(proposal_id: u64, voter: impl Into<String>) -> Self {
70 ArchwayQuery::GovVote {
71 proposal_id,
72 voter: voter.into(),
73 }
74 }
75}