import { setPaginationParams } from "../../helpers"; import { LCDClient } from "@osmonauts/lcd"; import { QueryParamsRequest, QueryParamsResponseSDKType, QueryVaultRequest, QueryVaultResponseSDKType, QueryAllVaultsRequest, QueryAllVaultsResponseSDKType, QueryMegavaultTotalSharesRequest, QueryMegavaultTotalSharesResponseSDKType, QueryMegavaultOwnerSharesRequest, QueryMegavaultOwnerSharesResponseSDKType, QueryMegavaultAllOwnerSharesRequest, QueryMegavaultAllOwnerSharesResponseSDKType, QueryVaultParamsRequest, QueryVaultParamsResponseSDKType } from "./query"; export class LCDQueryClient { req: LCDClient; constructor({ requestClient }: { requestClient: LCDClient; }) { this.req = requestClient; this.params = this.params.bind(this); this.vault = this.vault.bind(this); this.allVaults = this.allVaults.bind(this); this.megavaultTotalShares = this.megavaultTotalShares.bind(this); this.megavaultOwnerShares = this.megavaultOwnerShares.bind(this); this.megavaultAllOwnerShares = this.megavaultAllOwnerShares.bind(this); this.vaultParams = this.vaultParams.bind(this); } /* Queries the Params. */ async params(_params: QueryParamsRequest = {}): Promise { const endpoint = `dydxprotocol/vault/params`; return await this.req.get(endpoint); } /* Queries a Vault by type and number. */ async vault(params: QueryVaultRequest): Promise { const endpoint = `dydxprotocol/vault/vault/${params.type}/${params.number}`; return await this.req.get(endpoint); } /* Queries all vaults. */ async allVaults(params: QueryAllVaultsRequest = { pagination: undefined }): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `dydxprotocol/vault/vault`; return await this.req.get(endpoint, options); } /* Queries total shares of megavault. */ async megavaultTotalShares(_params: QueryMegavaultTotalSharesRequest = {}): Promise { const endpoint = `dydxprotocol/vault/megavault/total_shares`; return await this.req.get(endpoint); } /* Queries owner shares of megavault. */ async megavaultOwnerShares(params: QueryMegavaultOwnerSharesRequest): Promise { const endpoint = `dydxprotocol/vault/megavault/owner_shares/${params.address}`; return await this.req.get(endpoint); } /* Queries all owner shares of megavault. */ async megavaultAllOwnerShares(params: QueryMegavaultAllOwnerSharesRequest = { pagination: undefined }): Promise { const options: any = { params: {} }; if (typeof params?.pagination !== "undefined") { setPaginationParams(options, params.pagination); } const endpoint = `dydxprotocol/vault/megavault/all_owner_shares`; return await this.req.get(endpoint, options); } /* Queries vault params of a vault. */ async vaultParams(params: QueryVaultParamsRequest): Promise { const endpoint = `dydxprotocol/vault/params/${params.type}/${params.number}`; return await this.req.get(endpoint); } }