import { Rpc } from "../../../helpers"; import { BinaryReader } from "../../../binary"; import { QueryClient, createProtobufRpcClient } from "@cosmjs/stargate"; import { QueryAccountsRequest, QueryAccountsResponse, QueryAccountRequest, QueryAccountResponse, QueryParamsRequest, QueryParamsResponse, QueryModuleAccountsRequest, QueryModuleAccountsResponse, Bech32PrefixRequest, Bech32PrefixResponse, AddressBytesToStringRequest, AddressBytesToStringResponse, AddressStringToBytesRequest, AddressStringToBytesResponse } from "./query"; /** Query defines the gRPC querier service. */ export interface Query { /** * Accounts returns all the existing accounts * * Since: cosmos-sdk 0.43 */ accounts(request?: QueryAccountsRequest): Promise; /** Account returns account details based on address. */ account(request: QueryAccountRequest): Promise; /** Params queries all parameters. */ params(request?: QueryParamsRequest): Promise; /** ModuleAccounts returns all the existing module accounts. */ moduleAccounts(request?: QueryModuleAccountsRequest): Promise; /** Bech32 queries bech32Prefix */ bech32Prefix(request?: Bech32PrefixRequest): Promise; /** AddressBytesToString converts Account Address bytes to string */ addressBytesToString(request: AddressBytesToStringRequest): Promise; /** AddressStringToBytes converts Address string to bytes */ addressStringToBytes(request: AddressStringToBytesRequest): Promise; } export class QueryClientImpl implements Query { private readonly rpc: Rpc; constructor(rpc: Rpc) { this.rpc = rpc; this.accounts = this.accounts.bind(this); this.account = this.account.bind(this); this.params = this.params.bind(this); this.moduleAccounts = this.moduleAccounts.bind(this); this.bech32Prefix = this.bech32Prefix.bind(this); this.addressBytesToString = this.addressBytesToString.bind(this); this.addressStringToBytes = this.addressStringToBytes.bind(this); } accounts(request: QueryAccountsRequest = { pagination: undefined }): Promise { const data = QueryAccountsRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.auth.v1beta1.Query", "Accounts", data); return promise.then(data => QueryAccountsResponse.decode(new BinaryReader(data))); } account(request: QueryAccountRequest): Promise { const data = QueryAccountRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.auth.v1beta1.Query", "Account", data); return promise.then(data => QueryAccountResponse.decode(new BinaryReader(data))); } params(request: QueryParamsRequest = {}): Promise { const data = QueryParamsRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.auth.v1beta1.Query", "Params", data); return promise.then(data => QueryParamsResponse.decode(new BinaryReader(data))); } moduleAccounts(request: QueryModuleAccountsRequest = {}): Promise { const data = QueryModuleAccountsRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.auth.v1beta1.Query", "ModuleAccounts", data); return promise.then(data => QueryModuleAccountsResponse.decode(new BinaryReader(data))); } bech32Prefix(request: Bech32PrefixRequest = {}): Promise { const data = Bech32PrefixRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.auth.v1beta1.Query", "Bech32Prefix", data); return promise.then(data => Bech32PrefixResponse.decode(new BinaryReader(data))); } addressBytesToString(request: AddressBytesToStringRequest): Promise { const data = AddressBytesToStringRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.auth.v1beta1.Query", "AddressBytesToString", data); return promise.then(data => AddressBytesToStringResponse.decode(new BinaryReader(data))); } addressStringToBytes(request: AddressStringToBytesRequest): Promise { const data = AddressStringToBytesRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.auth.v1beta1.Query", "AddressStringToBytes", data); return promise.then(data => AddressStringToBytesResponse.decode(new BinaryReader(data))); } } export const createRpcQueryExtension = (base: QueryClient) => { const rpc = createProtobufRpcClient(base); const queryService = new QueryClientImpl(rpc); return { accounts(request?: QueryAccountsRequest): Promise { return queryService.accounts(request); }, account(request: QueryAccountRequest): Promise { return queryService.account(request); }, params(request?: QueryParamsRequest): Promise { return queryService.params(request); }, moduleAccounts(request?: QueryModuleAccountsRequest): Promise { return queryService.moduleAccounts(request); }, bech32Prefix(request?: Bech32PrefixRequest): Promise { return queryService.bech32Prefix(request); }, addressBytesToString(request: AddressBytesToStringRequest): Promise { return queryService.addressBytesToString(request); }, addressStringToBytes(request: AddressStringToBytesRequest): Promise { return queryService.addressStringToBytes(request); } }; };