import { setPaginationParams } from "../../../helpers"; import { LCDClient } from "@osmonauts/lcd"; import { QueryGroupInfoRequest, QueryGroupInfoResponseSDKType, QueryGroupPolicyInfoRequest, QueryGroupPolicyInfoResponseSDKType, QueryGroupMembersRequest, QueryGroupMembersResponseSDKType, QueryGroupsByAdminRequest, QueryGroupsByAdminResponseSDKType, QueryGroupPoliciesByGroupRequest, QueryGroupPoliciesByGroupResponseSDKType, QueryGroupPoliciesByAdminRequest, QueryGroupPoliciesByAdminResponseSDKType, QueryProposalRequest, QueryProposalResponseSDKType, QueryProposalsByGroupPolicyRequest, QueryProposalsByGroupPolicyResponseSDKType, QueryVoteByProposalVoterRequest, QueryVoteByProposalVoterResponseSDKType, QueryVotesByProposalRequest, QueryVotesByProposalResponseSDKType, QueryVotesByVoterRequest, QueryVotesByVoterResponseSDKType, QueryGroupsByMemberRequest, QueryGroupsByMemberResponseSDKType, QueryTallyResultRequest, QueryTallyResultResponseSDKType, QueryGroupsRequest, QueryGroupsResponseSDKType } from "./query"; export class LCDQueryClient { req: LCDClient; constructor({ requestClient }: { requestClient: LCDClient; }) { this.req = requestClient; this.groupInfo = this.groupInfo.bind(this); this.groupPolicyInfo = this.groupPolicyInfo.bind(this); this.groupMembers = this.groupMembers.bind(this); this.groupsByAdmin = this.groupsByAdmin.bind(this); this.groupPoliciesByGroup = this.groupPoliciesByGroup.bind(this); this.groupPoliciesByAdmin = this.groupPoliciesByAdmin.bind(this); this.proposal = this.proposal.bind(this); this.proposalsByGroupPolicy = this.proposalsByGroupPolicy.bind(this); this.voteByProposalVoter = this.voteByProposalVoter.bind(this); this.votesByProposal = this.votesByProposal.bind(this); this.votesByVoter = this.votesByVoter.bind(this); this.groupsByMember = this.groupsByMember.bind(this); this.tallyResult = this.tallyResult.bind(this); this.groups = this.groups.bind(this); } /* GroupInfo queries group info based on group id. */ async groupInfo(params: QueryGroupInfoRequest): Promise { const endpoint = `cosmos/group/v1/group_info/${params.groupId}`; return await this.req.get(endpoint); } /* GroupPolicyInfo queries group policy info based on account address of group policy. */ async groupPolicyInfo(params: QueryGroupPolicyInfoRequest): Promise { const endpoint = `cosmos/group/v1/group_policy_info/${params.address}`; return await this.req.get(endpoint); } /* GroupMembers queries members of a group by group id. */ async groupMembers(params: QueryGroupMembersRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/group_members/${params.groupId}`; return await this.req.get(endpoint, options); } /* GroupsByAdmin queries groups by admin address. */ async groupsByAdmin(params: QueryGroupsByAdminRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/groups_by_admin/${params.admin}`; return await this.req.get(endpoint, options); } /* GroupPoliciesByGroup queries group policies by group id. */ async groupPoliciesByGroup(params: QueryGroupPoliciesByGroupRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/group_policies_by_group/${params.groupId}`; return await this.req.get(endpoint, options); } /* GroupPoliciesByAdmin queries group policies by admin address. */ async groupPoliciesByAdmin(params: QueryGroupPoliciesByAdminRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/group_policies_by_admin/${params.admin}`; return await this.req.get(endpoint, options); } /* Proposal queries a proposal based on proposal id. */ async proposal(params: QueryProposalRequest): Promise { const endpoint = `cosmos/group/v1/proposal/${params.proposalId}`; return await this.req.get(endpoint); } /* ProposalsByGroupPolicy queries proposals based on account address of group policy. */ async proposalsByGroupPolicy(params: QueryProposalsByGroupPolicyRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/proposals_by_group_policy/${params.address}`; return await this.req.get(endpoint, options); } /* VoteByProposalVoter queries a vote by proposal id and voter. */ async voteByProposalVoter(params: QueryVoteByProposalVoterRequest): Promise { const endpoint = `cosmos/group/v1/vote_by_proposal_voter/${params.proposalId}/${params.voter}`; return await this.req.get(endpoint); } /* VotesByProposal queries a vote by proposal id. */ async votesByProposal(params: QueryVotesByProposalRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/votes_by_proposal/${params.proposalId}`; return await this.req.get(endpoint, options); } /* VotesByVoter queries a vote by voter. */ async votesByVoter(params: QueryVotesByVoterRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/votes_by_voter/${params.voter}`; return await this.req.get(endpoint, options); } /* GroupsByMember queries groups by member address. */ async groupsByMember(params: QueryGroupsByMemberRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/groups_by_member/${params.address}`; return await this.req.get(endpoint, options); } /* TallyResult returns the tally result of a proposal. If the proposal is still in voting period, then this query computes the current tally state, which might not be final. On the other hand, if the proposal is final, then it simply returns the `final_tally_result` state stored in the proposal itself. */ async tallyResult(params: QueryTallyResultRequest): Promise { const endpoint = `cosmos/group/v1/proposals/${params.proposalId}/tally`; return await this.req.get(endpoint); } /* Groups queries all groups in state. Since: cosmos-sdk 0.47.1 */ async groups(params: QueryGroupsRequest = { pagination: undefined }): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/group/v1/groups`; return await this.req.get(endpoint, options); } }