import { PageRequest, PageResponse } from "../../base/query/v1beta1/pagination"; import { Params, ValidatorOutstandingRewards, ValidatorAccumulatedCommission, ValidatorSlashEvent, DelegationDelegatorReward } from "./distribution"; import { DecCoin } from "../../base/v1beta1/coin"; import { LCDClient } from "@osmonauts/lcd"; import { setPaginationParams } from "@osmonauts/helpers"; import { QueryParamsRequest, QueryParamsResponse, QueryValidatorOutstandingRewardsRequest, QueryValidatorOutstandingRewardsResponse, QueryValidatorCommissionRequest, QueryValidatorCommissionResponse, QueryValidatorSlashesRequest, QueryValidatorSlashesResponse, QueryDelegationRewardsRequest, QueryDelegationRewardsResponse, QueryDelegationTotalRewardsRequest, QueryDelegationTotalRewardsResponse, QueryDelegatorValidatorsRequest, QueryDelegatorValidatorsResponse, QueryDelegatorWithdrawAddressRequest, QueryDelegatorWithdrawAddressResponse, QueryCommunityPoolRequest, QueryCommunityPoolResponse } from "./query"; export class LCDQueryClient extends LCDClient { constructor({ restEndpoint }: { restEndpoint: string; }) { super({ restEndpoint }); } /* Params queries params of the distribution module. */ async params(_params: QueryParamsRequest = {}): Promise { const endpoint = `cosmos/distribution/v1beta1/params`; return await this.request(endpoint); } /* ValidatorOutstandingRewards queries rewards of a validator address. */ async validatorOutstandingRewards(params: QueryValidatorOutstandingRewardsRequest): Promise { const endpoint = `cosmos/distribution/v1beta1/validators/${params.validator_address}/outstanding_rewards`; return await this.request(endpoint); } /* ValidatorCommission queries accumulated commission for a validator. */ async validatorCommission(params: QueryValidatorCommissionRequest): Promise { const endpoint = `cosmos/distribution/v1beta1/validators/${params.validator_address}/commission`; return await this.request(endpoint); } /* ValidatorSlashes queries slash events of a validator. */ async validatorSlashes(params: QueryValidatorSlashesRequest): Promise { const options: any = { params: {} }; if (typeof params?.starting_height !== "undefined") { options.params.starting_height = params.starting_height; } if (typeof params?.ending_height !== "undefined") { options.params.ending_height = params.ending_height; } if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/distribution/v1beta1/validators/${params.validator_address}/slashes`; return await this.request(endpoint, options); } /* DelegationRewards queries the total rewards accrued by a delegation. */ async delegationRewards(params: QueryDelegationRewardsRequest): Promise { const endpoint = `cosmos/distribution/v1beta1/delegators/${params.delegator_address}rewards/${params.validator_address}`; return await this.request(endpoint); } /* DelegationTotalRewards queries the total rewards accrued by a each validator. */ async delegationTotalRewards(params: QueryDelegationTotalRewardsRequest): Promise { const endpoint = `cosmos/distribution/v1beta1/delegators/${params.delegator_address}/rewards`; return await this.request(endpoint); } /* DelegatorValidators queries the validators of a delegator. */ async delegatorValidators(params: QueryDelegatorValidatorsRequest): Promise { const endpoint = `cosmos/distribution/v1beta1/delegators/${params.delegator_address}/validators`; return await this.request(endpoint); } /* DelegatorWithdrawAddress queries withdraw address of a delegator. */ async delegatorWithdrawAddress(params: QueryDelegatorWithdrawAddressRequest): Promise { const endpoint = `cosmos/distribution/v1beta1/delegators/${params.delegator_address}/withdraw_address`; return await this.request(endpoint); } /* CommunityPool queries the community pool coins. */ async communityPool(_params: QueryCommunityPoolRequest = {}): Promise { const endpoint = `cosmos/distribution/v1beta1/community_pool`; return await this.request(endpoint); } }