import { Rpc } from "../../../../helpers"; import * as _m0 from "protobufjs/minimal"; import { QueryClient, createProtobufRpcClient } from "@cosmjs/stargate"; import { ConfigRequest, ConfigResponse, StatusRequest, StatusResponse } from "./query"; /** Service defines the gRPC querier service for node related queries. */ export interface Service { /** Config queries for the operator configuration. */ config(request?: ConfigRequest): Promise; /** Status queries for the node status. */ status(request?: StatusRequest): Promise; } export class ServiceClientImpl implements Service { private readonly rpc: Rpc; constructor(rpc: Rpc) { this.rpc = rpc; this.config = this.config.bind(this); this.status = this.status.bind(this); } config(request: ConfigRequest = {}): Promise { const data = ConfigRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.base.node.v1beta1.Service", "Config", data); return promise.then(data => ConfigResponse.decode(new _m0.Reader(data))); } status(request: StatusRequest = {}): Promise { const data = StatusRequest.encode(request).finish(); const promise = this.rpc.request("cosmos.base.node.v1beta1.Service", "Status", data); return promise.then(data => StatusResponse.decode(new _m0.Reader(data))); } } export const createRpcQueryExtension = (base: QueryClient) => { const rpc = createProtobufRpcClient(base); const queryService = new ServiceClientImpl(rpc); return { config(request?: ConfigRequest): Promise { return queryService.config(request); }, status(request?: StatusRequest): Promise { return queryService.status(request); } }; };