import { Rpc } from "../../../../helpers"; import { BinaryReader } from "../../../../binary"; import { QueryClient, createProtobufRpcClient } from "@cosmjs/stargate"; import { QueryChannelRequest, QueryChannelResponse, QueryChannelsRequest, QueryChannelsResponse, QueryConnectionChannelsRequest, QueryConnectionChannelsResponse, QueryChannelClientStateRequest, QueryChannelClientStateResponse, QueryChannelConsensusStateRequest, QueryChannelConsensusStateResponse, QueryPacketCommitmentRequest, QueryPacketCommitmentResponse, QueryPacketCommitmentsRequest, QueryPacketCommitmentsResponse, QueryPacketReceiptRequest, QueryPacketReceiptResponse, QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementResponse, QueryPacketAcknowledgementsRequest, QueryPacketAcknowledgementsResponse, QueryUnreceivedPacketsRequest, QueryUnreceivedPacketsResponse, QueryUnreceivedAcksRequest, QueryUnreceivedAcksResponse, QueryNextSequenceReceiveRequest, QueryNextSequenceReceiveResponse } from "./query"; /** Query provides defines the gRPC querier service */ export interface Query { /** Channel queries an IBC Channel. */ channel(request: QueryChannelRequest): Promise; /** Channels queries all the IBC channels of a chain. */ channels(request?: QueryChannelsRequest): Promise; /** * ConnectionChannels queries all the channels associated with a connection * end. */ connectionChannels(request: QueryConnectionChannelsRequest): Promise; /** * ChannelClientState queries for the client state for the channel associated * with the provided channel identifiers. */ channelClientState(request: QueryChannelClientStateRequest): Promise; /** * ChannelConsensusState queries for the consensus state for the channel * associated with the provided channel identifiers. */ channelConsensusState(request: QueryChannelConsensusStateRequest): Promise; /** PacketCommitment queries a stored packet commitment hash. */ packetCommitment(request: QueryPacketCommitmentRequest): Promise; /** * PacketCommitments returns all the packet commitments hashes associated * with a channel. */ packetCommitments(request: QueryPacketCommitmentsRequest): Promise; /** * PacketReceipt queries if a given packet sequence has been received on the * queried chain */ packetReceipt(request: QueryPacketReceiptRequest): Promise; /** PacketAcknowledgement queries a stored packet acknowledgement hash. */ packetAcknowledgement(request: QueryPacketAcknowledgementRequest): Promise; /** * PacketAcknowledgements returns all the packet acknowledgements associated * with a channel. */ packetAcknowledgements(request: QueryPacketAcknowledgementsRequest): Promise; /** * UnreceivedPackets returns all the unreceived IBC packets associated with a * channel and sequences. */ unreceivedPackets(request: QueryUnreceivedPacketsRequest): Promise; /** * UnreceivedAcks returns all the unreceived IBC acknowledgements associated * with a channel and sequences. */ unreceivedAcks(request: QueryUnreceivedAcksRequest): Promise; /** NextSequenceReceive returns the next receive sequence for a given channel. */ nextSequenceReceive(request: QueryNextSequenceReceiveRequest): Promise; } export class QueryClientImpl implements Query { private readonly rpc: Rpc; constructor(rpc: Rpc) { this.rpc = rpc; this.channel = this.channel.bind(this); this.channels = this.channels.bind(this); this.connectionChannels = this.connectionChannels.bind(this); this.channelClientState = this.channelClientState.bind(this); this.channelConsensusState = this.channelConsensusState.bind(this); this.packetCommitment = this.packetCommitment.bind(this); this.packetCommitments = this.packetCommitments.bind(this); this.packetReceipt = this.packetReceipt.bind(this); this.packetAcknowledgement = this.packetAcknowledgement.bind(this); this.packetAcknowledgements = this.packetAcknowledgements.bind(this); this.unreceivedPackets = this.unreceivedPackets.bind(this); this.unreceivedAcks = this.unreceivedAcks.bind(this); this.nextSequenceReceive = this.nextSequenceReceive.bind(this); } channel(request: QueryChannelRequest): Promise { const data = QueryChannelRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "Channel", data); return promise.then(data => QueryChannelResponse.decode(new BinaryReader(data))); } channels(request: QueryChannelsRequest = { pagination: undefined }): Promise { const data = QueryChannelsRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "Channels", data); return promise.then(data => QueryChannelsResponse.decode(new BinaryReader(data))); } connectionChannels(request: QueryConnectionChannelsRequest): Promise { const data = QueryConnectionChannelsRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "ConnectionChannels", data); return promise.then(data => QueryConnectionChannelsResponse.decode(new BinaryReader(data))); } channelClientState(request: QueryChannelClientStateRequest): Promise { const data = QueryChannelClientStateRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "ChannelClientState", data); return promise.then(data => QueryChannelClientStateResponse.decode(new BinaryReader(data))); } channelConsensusState(request: QueryChannelConsensusStateRequest): Promise { const data = QueryChannelConsensusStateRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "ChannelConsensusState", data); return promise.then(data => QueryChannelConsensusStateResponse.decode(new BinaryReader(data))); } packetCommitment(request: QueryPacketCommitmentRequest): Promise { const data = QueryPacketCommitmentRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "PacketCommitment", data); return promise.then(data => QueryPacketCommitmentResponse.decode(new BinaryReader(data))); } packetCommitments(request: QueryPacketCommitmentsRequest): Promise { const data = QueryPacketCommitmentsRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "PacketCommitments", data); return promise.then(data => QueryPacketCommitmentsResponse.decode(new BinaryReader(data))); } packetReceipt(request: QueryPacketReceiptRequest): Promise { const data = QueryPacketReceiptRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "PacketReceipt", data); return promise.then(data => QueryPacketReceiptResponse.decode(new BinaryReader(data))); } packetAcknowledgement(request: QueryPacketAcknowledgementRequest): Promise { const data = QueryPacketAcknowledgementRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "PacketAcknowledgement", data); return promise.then(data => QueryPacketAcknowledgementResponse.decode(new BinaryReader(data))); } packetAcknowledgements(request: QueryPacketAcknowledgementsRequest): Promise { const data = QueryPacketAcknowledgementsRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "PacketAcknowledgements", data); return promise.then(data => QueryPacketAcknowledgementsResponse.decode(new BinaryReader(data))); } unreceivedPackets(request: QueryUnreceivedPacketsRequest): Promise { const data = QueryUnreceivedPacketsRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "UnreceivedPackets", data); return promise.then(data => QueryUnreceivedPacketsResponse.decode(new BinaryReader(data))); } unreceivedAcks(request: QueryUnreceivedAcksRequest): Promise { const data = QueryUnreceivedAcksRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "UnreceivedAcks", data); return promise.then(data => QueryUnreceivedAcksResponse.decode(new BinaryReader(data))); } nextSequenceReceive(request: QueryNextSequenceReceiveRequest): Promise { const data = QueryNextSequenceReceiveRequest.encode(request).finish(); const promise = this.rpc.request("ibc.core.channel.v1.Query", "NextSequenceReceive", data); return promise.then(data => QueryNextSequenceReceiveResponse.decode(new BinaryReader(data))); } } export const createRpcQueryExtension = (base: QueryClient) => { const rpc = createProtobufRpcClient(base); const queryService = new QueryClientImpl(rpc); return { channel(request: QueryChannelRequest): Promise { return queryService.channel(request); }, channels(request?: QueryChannelsRequest): Promise { return queryService.channels(request); }, connectionChannels(request: QueryConnectionChannelsRequest): Promise { return queryService.connectionChannels(request); }, channelClientState(request: QueryChannelClientStateRequest): Promise { return queryService.channelClientState(request); }, channelConsensusState(request: QueryChannelConsensusStateRequest): Promise { return queryService.channelConsensusState(request); }, packetCommitment(request: QueryPacketCommitmentRequest): Promise { return queryService.packetCommitment(request); }, packetCommitments(request: QueryPacketCommitmentsRequest): Promise { return queryService.packetCommitments(request); }, packetReceipt(request: QueryPacketReceiptRequest): Promise { return queryService.packetReceipt(request); }, packetAcknowledgement(request: QueryPacketAcknowledgementRequest): Promise { return queryService.packetAcknowledgement(request); }, packetAcknowledgements(request: QueryPacketAcknowledgementsRequest): Promise { return queryService.packetAcknowledgements(request); }, unreceivedPackets(request: QueryUnreceivedPacketsRequest): Promise { return queryService.unreceivedPackets(request); }, unreceivedAcks(request: QueryUnreceivedAcksRequest): Promise { return queryService.unreceivedAcks(request); }, nextSequenceReceive(request: QueryNextSequenceReceiveRequest): Promise { return queryService.nextSequenceReceive(request); } }; };