import { PageRequest, PageResponse } from "../../base/query/v1beta1/pagination"; import { Validator, DelegationResponse, UnbondingDelegation, RedelegationResponse, HistoricalInfo, Pool, Params } from "./staking"; import { LCDClient } from "@osmonauts/lcd"; import { setPaginationParams } from "@osmonauts/helpers"; import { QueryValidatorsRequest, QueryValidatorsResponse, QueryValidatorRequest, QueryValidatorResponse, QueryValidatorDelegationsRequest, QueryValidatorDelegationsResponse, QueryValidatorUnbondingDelegationsRequest, QueryValidatorUnbondingDelegationsResponse, QueryDelegationRequest, QueryDelegationResponse, QueryUnbondingDelegationRequest, QueryUnbondingDelegationResponse, QueryDelegatorDelegationsRequest, QueryDelegatorDelegationsResponse, QueryDelegatorUnbondingDelegationsRequest, QueryDelegatorUnbondingDelegationsResponse, QueryRedelegationsRequest, QueryRedelegationsResponse, QueryDelegatorValidatorsRequest, QueryDelegatorValidatorsResponse, QueryDelegatorValidatorRequest, QueryDelegatorValidatorResponse, QueryHistoricalInfoRequest, QueryHistoricalInfoResponse, QueryPoolRequest, QueryPoolResponse, QueryParamsRequest, QueryParamsResponse } from "./query"; export class LCDQueryClient extends LCDClient { constructor({ restEndpoint }: { restEndpoint: string; }) { super({ restEndpoint }); } /* Validators queries all validators that match the given status. */ async validators(params: QueryValidatorsRequest): Promise { const options: any = { params: {} }; if (typeof params?.status !== "undefined") { options.params.status = params.status; } if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/staking/v1beta1/validators`; return await this.request(endpoint, options); } /* Validator queries validator info for given validator address. */ async validator(params: QueryValidatorRequest): Promise { const endpoint = `cosmos/staking/v1beta1/validators/${params.validator_addr}`; return await this.request(endpoint); } /* ValidatorDelegations queries delegate info for given validator. */ async validatorDelegations(params: QueryValidatorDelegationsRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/staking/v1beta1/validators/${params.validator_addr}/delegations`; return await this.request(endpoint, options); } /* ValidatorUnbondingDelegations queries unbonding delegations of a validator. */ async validatorUnbondingDelegations(params: QueryValidatorUnbondingDelegationsRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/staking/v1beta1/validators/${params.validator_addr}/unbonding_delegations`; return await this.request(endpoint, options); } /* Delegation queries delegate info for given validator delegator pair. */ async delegation(params: QueryDelegationRequest): Promise { const endpoint = `cosmos/staking/v1beta1/validators/${params.validator_addr}delegations/${params.delegator_addr}`; return await this.request(endpoint); } /* UnbondingDelegation queries unbonding info for given validator delegator pair. */ async unbondingDelegation(params: QueryUnbondingDelegationRequest): Promise { const endpoint = `cosmos/staking/v1beta1/validators/${params.validator_addr}/delegations/${params.delegator_addr}/unbonding_delegation`; return await this.request(endpoint); } /* DelegatorDelegations queries all delegations of a given delegator address. */ async delegatorDelegations(params: QueryDelegatorDelegationsRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/staking/v1beta1/delegations/${params.delegator_addr}`; return await this.request(endpoint, options); } /* DelegatorUnbondingDelegations queries all unbonding delegations of a given delegator address. */ async delegatorUnbondingDelegations(params: QueryDelegatorUnbondingDelegationsRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/staking/v1beta1/delegators/${params.delegator_addr}/unbonding_delegations`; return await this.request(endpoint, options); } /* Redelegations queries redelegations of given address. */ async redelegations(params: QueryRedelegationsRequest): Promise { const options: any = { params: {} }; if (typeof params?.src_validator_addr !== "undefined") { options.params.src_validator_addr = params.src_validator_addr; } if (typeof params?.dst_validator_addr !== "undefined") { options.params.dst_validator_addr = params.dst_validator_addr; } if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/staking/v1beta1/delegators/${params.delegator_addr}/redelegations`; return await this.request(endpoint, options); } /* DelegatorValidators queries all validators info for given delegator address. */ async delegatorValidators(params: QueryDelegatorValidatorsRequest): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `cosmos/staking/v1beta1/delegators/${params.delegator_addr}/validators`; return await this.request(endpoint, options); } /* DelegatorValidator queries validator info for given delegator validator pair. */ async delegatorValidator(params: QueryDelegatorValidatorRequest): Promise { const endpoint = `cosmos/staking/v1beta1/delegators/${params.delegator_addr}validators/${params.validator_addr}`; return await this.request(endpoint); } /* HistoricalInfo queries the historical info for given height. */ async historicalInfo(params: QueryHistoricalInfoRequest): Promise { const endpoint = `cosmos/staking/v1beta1/historical_info/${params.height}`; return await this.request(endpoint); } /* Pool queries the pool info. */ async pool(_params: QueryPoolRequest = {}): Promise { const endpoint = `cosmos/staking/v1beta1/pool`; return await this.request(endpoint); } /* Parameters queries the staking parameters. */ async params(_params: QueryParamsRequest = {}): Promise { const endpoint = `cosmos/staking/v1beta1/params`; return await this.request(endpoint); } }