/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.20.3
 * source: tendermint/abci/types.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../crypto/proof";
import * as dependency_2 from "./../crypto/keys";
import * as dependency_3 from "./../types/params";
import * as dependency_4 from "./../types/validator";
import * as dependency_5 from "./../../google/protobuf/timestamp";
import * as dependency_6 from "./../../gogoproto/gogo";
import * as pb_1 from "google-protobuf";
import * as grpc_1 from "@grpc/grpc-js";
export namespace tendermint.abci {
    export enum CheckTxType {
        NEW = 0,
        RECHECK = 1
    }
    export enum MisbehaviorType {
        UNKNOWN = 0,
        DUPLICATE_VOTE = 1,
        LIGHT_CLIENT_ATTACK = 2
    }
    export class Request extends pb_1.Message {
        #one_of_decls: number[][] = [[1, 2, 3, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]];
        constructor(data?: any[] | ({} & (({
            echo?: RequestEcho;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: RequestFlush;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: RequestInfo;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: RequestInitChain;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: RequestQuery;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: RequestCheckTx;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: RequestCommit;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: RequestListSnapshots;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: RequestOfferSnapshot;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: RequestLoadSnapshotChunk;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: RequestApplySnapshotChunk;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: RequestPrepareProposal;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: RequestProcessProposal;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: RequestExtendVote;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: RequestVerifyVoteExtension;
            finalize_block?: never;
        } | {
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: RequestFinalizeBlock;
        })))) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("echo" in data && data.echo != undefined) {
                    this.echo = data.echo;
                }
                if ("flush" in data && data.flush != undefined) {
                    this.flush = data.flush;
                }
                if ("info" in data && data.info != undefined) {
                    this.info = data.info;
                }
                if ("init_chain" in data && data.init_chain != undefined) {
                    this.init_chain = data.init_chain;
                }
                if ("query" in data && data.query != undefined) {
                    this.query = data.query;
                }
                if ("check_tx" in data && data.check_tx != undefined) {
                    this.check_tx = data.check_tx;
                }
                if ("commit" in data && data.commit != undefined) {
                    this.commit = data.commit;
                }
                if ("list_snapshots" in data && data.list_snapshots != undefined) {
                    this.list_snapshots = data.list_snapshots;
                }
                if ("offer_snapshot" in data && data.offer_snapshot != undefined) {
                    this.offer_snapshot = data.offer_snapshot;
                }
                if ("load_snapshot_chunk" in data && data.load_snapshot_chunk != undefined) {
                    this.load_snapshot_chunk = data.load_snapshot_chunk;
                }
                if ("apply_snapshot_chunk" in data && data.apply_snapshot_chunk != undefined) {
                    this.apply_snapshot_chunk = data.apply_snapshot_chunk;
                }
                if ("prepare_proposal" in data && data.prepare_proposal != undefined) {
                    this.prepare_proposal = data.prepare_proposal;
                }
                if ("process_proposal" in data && data.process_proposal != undefined) {
                    this.process_proposal = data.process_proposal;
                }
                if ("extend_vote" in data && data.extend_vote != undefined) {
                    this.extend_vote = data.extend_vote;
                }
                if ("verify_vote_extension" in data && data.verify_vote_extension != undefined) {
                    this.verify_vote_extension = data.verify_vote_extension;
                }
                if ("finalize_block" in data && data.finalize_block != undefined) {
                    this.finalize_block = data.finalize_block;
                }
            }
        }
        get echo() {
            return pb_1.Message.getWrapperField(this, RequestEcho, 1) as RequestEcho;
        }
        set echo(value: RequestEcho) {
            pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value);
        }
        get has_echo() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get flush() {
            return pb_1.Message.getWrapperField(this, RequestFlush, 2) as RequestFlush;
        }
        set flush(value: RequestFlush) {
            pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
        }
        get has_flush() {
            return pb_1.Message.getField(this, 2) != null;
        }
        get info() {
            return pb_1.Message.getWrapperField(this, RequestInfo, 3) as RequestInfo;
        }
        set info(value: RequestInfo) {
            pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
        }
        get has_info() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get init_chain() {
            return pb_1.Message.getWrapperField(this, RequestInitChain, 5) as RequestInitChain;
        }
        set init_chain(value: RequestInitChain) {
            pb_1.Message.setOneofWrapperField(this, 5, this.#one_of_decls[0], value);
        }
        get has_init_chain() {
            return pb_1.Message.getField(this, 5) != null;
        }
        get query() {
            return pb_1.Message.getWrapperField(this, RequestQuery, 6) as RequestQuery;
        }
        set query(value: RequestQuery) {
            pb_1.Message.setOneofWrapperField(this, 6, this.#one_of_decls[0], value);
        }
        get has_query() {
            return pb_1.Message.getField(this, 6) != null;
        }
        get check_tx() {
            return pb_1.Message.getWrapperField(this, RequestCheckTx, 8) as RequestCheckTx;
        }
        set check_tx(value: RequestCheckTx) {
            pb_1.Message.setOneofWrapperField(this, 8, this.#one_of_decls[0], value);
        }
        get has_check_tx() {
            return pb_1.Message.getField(this, 8) != null;
        }
        get commit() {
            return pb_1.Message.getWrapperField(this, RequestCommit, 11) as RequestCommit;
        }
        set commit(value: RequestCommit) {
            pb_1.Message.setOneofWrapperField(this, 11, this.#one_of_decls[0], value);
        }
        get has_commit() {
            return pb_1.Message.getField(this, 11) != null;
        }
        get list_snapshots() {
            return pb_1.Message.getWrapperField(this, RequestListSnapshots, 12) as RequestListSnapshots;
        }
        set list_snapshots(value: RequestListSnapshots) {
            pb_1.Message.setOneofWrapperField(this, 12, this.#one_of_decls[0], value);
        }
        get has_list_snapshots() {
            return pb_1.Message.getField(this, 12) != null;
        }
        get offer_snapshot() {
            return pb_1.Message.getWrapperField(this, RequestOfferSnapshot, 13) as RequestOfferSnapshot;
        }
        set offer_snapshot(value: RequestOfferSnapshot) {
            pb_1.Message.setOneofWrapperField(this, 13, this.#one_of_decls[0], value);
        }
        get has_offer_snapshot() {
            return pb_1.Message.getField(this, 13) != null;
        }
        get load_snapshot_chunk() {
            return pb_1.Message.getWrapperField(this, RequestLoadSnapshotChunk, 14) as RequestLoadSnapshotChunk;
        }
        set load_snapshot_chunk(value: RequestLoadSnapshotChunk) {
            pb_1.Message.setOneofWrapperField(this, 14, this.#one_of_decls[0], value);
        }
        get has_load_snapshot_chunk() {
            return pb_1.Message.getField(this, 14) != null;
        }
        get apply_snapshot_chunk() {
            return pb_1.Message.getWrapperField(this, RequestApplySnapshotChunk, 15) as RequestApplySnapshotChunk;
        }
        set apply_snapshot_chunk(value: RequestApplySnapshotChunk) {
            pb_1.Message.setOneofWrapperField(this, 15, this.#one_of_decls[0], value);
        }
        get has_apply_snapshot_chunk() {
            return pb_1.Message.getField(this, 15) != null;
        }
        get prepare_proposal() {
            return pb_1.Message.getWrapperField(this, RequestPrepareProposal, 16) as RequestPrepareProposal;
        }
        set prepare_proposal(value: RequestPrepareProposal) {
            pb_1.Message.setOneofWrapperField(this, 16, this.#one_of_decls[0], value);
        }
        get has_prepare_proposal() {
            return pb_1.Message.getField(this, 16) != null;
        }
        get process_proposal() {
            return pb_1.Message.getWrapperField(this, RequestProcessProposal, 17) as RequestProcessProposal;
        }
        set process_proposal(value: RequestProcessProposal) {
            pb_1.Message.setOneofWrapperField(this, 17, this.#one_of_decls[0], value);
        }
        get has_process_proposal() {
            return pb_1.Message.getField(this, 17) != null;
        }
        get extend_vote() {
            return pb_1.Message.getWrapperField(this, RequestExtendVote, 18) as RequestExtendVote;
        }
        set extend_vote(value: RequestExtendVote) {
            pb_1.Message.setOneofWrapperField(this, 18, this.#one_of_decls[0], value);
        }
        get has_extend_vote() {
            return pb_1.Message.getField(this, 18) != null;
        }
        get verify_vote_extension() {
            return pb_1.Message.getWrapperField(this, RequestVerifyVoteExtension, 19) as RequestVerifyVoteExtension;
        }
        set verify_vote_extension(value: RequestVerifyVoteExtension) {
            pb_1.Message.setOneofWrapperField(this, 19, this.#one_of_decls[0], value);
        }
        get has_verify_vote_extension() {
            return pb_1.Message.getField(this, 19) != null;
        }
        get finalize_block() {
            return pb_1.Message.getWrapperField(this, RequestFinalizeBlock, 20) as RequestFinalizeBlock;
        }
        set finalize_block(value: RequestFinalizeBlock) {
            pb_1.Message.setOneofWrapperField(this, 20, this.#one_of_decls[0], value);
        }
        get has_finalize_block() {
            return pb_1.Message.getField(this, 20) != null;
        }
        get value() {
            const cases: {
                [index: number]: "none" | "echo" | "flush" | "info" | "init_chain" | "query" | "check_tx" | "commit" | "list_snapshots" | "offer_snapshot" | "load_snapshot_chunk" | "apply_snapshot_chunk" | "prepare_proposal" | "process_proposal" | "extend_vote" | "verify_vote_extension" | "finalize_block";
            } = {
                0: "none",
                1: "echo",
                2: "flush",
                3: "info",
                5: "init_chain",
                6: "query",
                8: "check_tx",
                11: "commit",
                12: "list_snapshots",
                13: "offer_snapshot",
                14: "load_snapshot_chunk",
                15: "apply_snapshot_chunk",
                16: "prepare_proposal",
                17: "process_proposal",
                18: "extend_vote",
                19: "verify_vote_extension",
                20: "finalize_block"
            };
            return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])];
        }
        static fromObject(data: {
            echo?: ReturnType<typeof RequestEcho.prototype.toObject>;
            flush?: ReturnType<typeof RequestFlush.prototype.toObject>;
            info?: ReturnType<typeof RequestInfo.prototype.toObject>;
            init_chain?: ReturnType<typeof RequestInitChain.prototype.toObject>;
            query?: ReturnType<typeof RequestQuery.prototype.toObject>;
            check_tx?: ReturnType<typeof RequestCheckTx.prototype.toObject>;
            commit?: ReturnType<typeof RequestCommit.prototype.toObject>;
            list_snapshots?: ReturnType<typeof RequestListSnapshots.prototype.toObject>;
            offer_snapshot?: ReturnType<typeof RequestOfferSnapshot.prototype.toObject>;
            load_snapshot_chunk?: ReturnType<typeof RequestLoadSnapshotChunk.prototype.toObject>;
            apply_snapshot_chunk?: ReturnType<typeof RequestApplySnapshotChunk.prototype.toObject>;
            prepare_proposal?: ReturnType<typeof RequestPrepareProposal.prototype.toObject>;
            process_proposal?: ReturnType<typeof RequestProcessProposal.prototype.toObject>;
            extend_vote?: ReturnType<typeof RequestExtendVote.prototype.toObject>;
            verify_vote_extension?: ReturnType<typeof RequestVerifyVoteExtension.prototype.toObject>;
            finalize_block?: ReturnType<typeof RequestFinalizeBlock.prototype.toObject>;
        }): Request {
            const message = new Request({});
            if (data.echo != null) {
                message.echo = RequestEcho.fromObject(data.echo);
            }
            if (data.flush != null) {
                message.flush = RequestFlush.fromObject(data.flush);
            }
            if (data.info != null) {
                message.info = RequestInfo.fromObject(data.info);
            }
            if (data.init_chain != null) {
                message.init_chain = RequestInitChain.fromObject(data.init_chain);
            }
            if (data.query != null) {
                message.query = RequestQuery.fromObject(data.query);
            }
            if (data.check_tx != null) {
                message.check_tx = RequestCheckTx.fromObject(data.check_tx);
            }
            if (data.commit != null) {
                message.commit = RequestCommit.fromObject(data.commit);
            }
            if (data.list_snapshots != null) {
                message.list_snapshots = RequestListSnapshots.fromObject(data.list_snapshots);
            }
            if (data.offer_snapshot != null) {
                message.offer_snapshot = RequestOfferSnapshot.fromObject(data.offer_snapshot);
            }
            if (data.load_snapshot_chunk != null) {
                message.load_snapshot_chunk = RequestLoadSnapshotChunk.fromObject(data.load_snapshot_chunk);
            }
            if (data.apply_snapshot_chunk != null) {
                message.apply_snapshot_chunk = RequestApplySnapshotChunk.fromObject(data.apply_snapshot_chunk);
            }
            if (data.prepare_proposal != null) {
                message.prepare_proposal = RequestPrepareProposal.fromObject(data.prepare_proposal);
            }
            if (data.process_proposal != null) {
                message.process_proposal = RequestProcessProposal.fromObject(data.process_proposal);
            }
            if (data.extend_vote != null) {
                message.extend_vote = RequestExtendVote.fromObject(data.extend_vote);
            }
            if (data.verify_vote_extension != null) {
                message.verify_vote_extension = RequestVerifyVoteExtension.fromObject(data.verify_vote_extension);
            }
            if (data.finalize_block != null) {
                message.finalize_block = RequestFinalizeBlock.fromObject(data.finalize_block);
            }
            return message;
        }
        toObject() {
            const data: {
                echo?: ReturnType<typeof RequestEcho.prototype.toObject>;
                flush?: ReturnType<typeof RequestFlush.prototype.toObject>;
                info?: ReturnType<typeof RequestInfo.prototype.toObject>;
                init_chain?: ReturnType<typeof RequestInitChain.prototype.toObject>;
                query?: ReturnType<typeof RequestQuery.prototype.toObject>;
                check_tx?: ReturnType<typeof RequestCheckTx.prototype.toObject>;
                commit?: ReturnType<typeof RequestCommit.prototype.toObject>;
                list_snapshots?: ReturnType<typeof RequestListSnapshots.prototype.toObject>;
                offer_snapshot?: ReturnType<typeof RequestOfferSnapshot.prototype.toObject>;
                load_snapshot_chunk?: ReturnType<typeof RequestLoadSnapshotChunk.prototype.toObject>;
                apply_snapshot_chunk?: ReturnType<typeof RequestApplySnapshotChunk.prototype.toObject>;
                prepare_proposal?: ReturnType<typeof RequestPrepareProposal.prototype.toObject>;
                process_proposal?: ReturnType<typeof RequestProcessProposal.prototype.toObject>;
                extend_vote?: ReturnType<typeof RequestExtendVote.prototype.toObject>;
                verify_vote_extension?: ReturnType<typeof RequestVerifyVoteExtension.prototype.toObject>;
                finalize_block?: ReturnType<typeof RequestFinalizeBlock.prototype.toObject>;
            } = {};
            if (this.echo != null) {
                data.echo = this.echo.toObject();
            }
            if (this.flush != null) {
                data.flush = this.flush.toObject();
            }
            if (this.info != null) {
                data.info = this.info.toObject();
            }
            if (this.init_chain != null) {
                data.init_chain = this.init_chain.toObject();
            }
            if (this.query != null) {
                data.query = this.query.toObject();
            }
            if (this.check_tx != null) {
                data.check_tx = this.check_tx.toObject();
            }
            if (this.commit != null) {
                data.commit = this.commit.toObject();
            }
            if (this.list_snapshots != null) {
                data.list_snapshots = this.list_snapshots.toObject();
            }
            if (this.offer_snapshot != null) {
                data.offer_snapshot = this.offer_snapshot.toObject();
            }
            if (this.load_snapshot_chunk != null) {
                data.load_snapshot_chunk = this.load_snapshot_chunk.toObject();
            }
            if (this.apply_snapshot_chunk != null) {
                data.apply_snapshot_chunk = this.apply_snapshot_chunk.toObject();
            }
            if (this.prepare_proposal != null) {
                data.prepare_proposal = this.prepare_proposal.toObject();
            }
            if (this.process_proposal != null) {
                data.process_proposal = this.process_proposal.toObject();
            }
            if (this.extend_vote != null) {
                data.extend_vote = this.extend_vote.toObject();
            }
            if (this.verify_vote_extension != null) {
                data.verify_vote_extension = this.verify_vote_extension.toObject();
            }
            if (this.finalize_block != null) {
                data.finalize_block = this.finalize_block.toObject();
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.has_echo)
                writer.writeMessage(1, this.echo, () => this.echo.serialize(writer));
            if (this.has_flush)
                writer.writeMessage(2, this.flush, () => this.flush.serialize(writer));
            if (this.has_info)
                writer.writeMessage(3, this.info, () => this.info.serialize(writer));
            if (this.has_init_chain)
                writer.writeMessage(5, this.init_chain, () => this.init_chain.serialize(writer));
            if (this.has_query)
                writer.writeMessage(6, this.query, () => this.query.serialize(writer));
            if (this.has_check_tx)
                writer.writeMessage(8, this.check_tx, () => this.check_tx.serialize(writer));
            if (this.has_commit)
                writer.writeMessage(11, this.commit, () => this.commit.serialize(writer));
            if (this.has_list_snapshots)
                writer.writeMessage(12, this.list_snapshots, () => this.list_snapshots.serialize(writer));
            if (this.has_offer_snapshot)
                writer.writeMessage(13, this.offer_snapshot, () => this.offer_snapshot.serialize(writer));
            if (this.has_load_snapshot_chunk)
                writer.writeMessage(14, this.load_snapshot_chunk, () => this.load_snapshot_chunk.serialize(writer));
            if (this.has_apply_snapshot_chunk)
                writer.writeMessage(15, this.apply_snapshot_chunk, () => this.apply_snapshot_chunk.serialize(writer));
            if (this.has_prepare_proposal)
                writer.writeMessage(16, this.prepare_proposal, () => this.prepare_proposal.serialize(writer));
            if (this.has_process_proposal)
                writer.writeMessage(17, this.process_proposal, () => this.process_proposal.serialize(writer));
            if (this.has_extend_vote)
                writer.writeMessage(18, this.extend_vote, () => this.extend_vote.serialize(writer));
            if (this.has_verify_vote_extension)
                writer.writeMessage(19, this.verify_vote_extension, () => this.verify_vote_extension.serialize(writer));
            if (this.has_finalize_block)
                writer.writeMessage(20, this.finalize_block, () => this.finalize_block.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Request {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Request();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.echo, () => message.echo = RequestEcho.deserialize(reader));
                        break;
                    case 2:
                        reader.readMessage(message.flush, () => message.flush = RequestFlush.deserialize(reader));
                        break;
                    case 3:
                        reader.readMessage(message.info, () => message.info = RequestInfo.deserialize(reader));
                        break;
                    case 5:
                        reader.readMessage(message.init_chain, () => message.init_chain = RequestInitChain.deserialize(reader));
                        break;
                    case 6:
                        reader.readMessage(message.query, () => message.query = RequestQuery.deserialize(reader));
                        break;
                    case 8:
                        reader.readMessage(message.check_tx, () => message.check_tx = RequestCheckTx.deserialize(reader));
                        break;
                    case 11:
                        reader.readMessage(message.commit, () => message.commit = RequestCommit.deserialize(reader));
                        break;
                    case 12:
                        reader.readMessage(message.list_snapshots, () => message.list_snapshots = RequestListSnapshots.deserialize(reader));
                        break;
                    case 13:
                        reader.readMessage(message.offer_snapshot, () => message.offer_snapshot = RequestOfferSnapshot.deserialize(reader));
                        break;
                    case 14:
                        reader.readMessage(message.load_snapshot_chunk, () => message.load_snapshot_chunk = RequestLoadSnapshotChunk.deserialize(reader));
                        break;
                    case 15:
                        reader.readMessage(message.apply_snapshot_chunk, () => message.apply_snapshot_chunk = RequestApplySnapshotChunk.deserialize(reader));
                        break;
                    case 16:
                        reader.readMessage(message.prepare_proposal, () => message.prepare_proposal = RequestPrepareProposal.deserialize(reader));
                        break;
                    case 17:
                        reader.readMessage(message.process_proposal, () => message.process_proposal = RequestProcessProposal.deserialize(reader));
                        break;
                    case 18:
                        reader.readMessage(message.extend_vote, () => message.extend_vote = RequestExtendVote.deserialize(reader));
                        break;
                    case 19:
                        reader.readMessage(message.verify_vote_extension, () => message.verify_vote_extension = RequestVerifyVoteExtension.deserialize(reader));
                        break;
                    case 20:
                        reader.readMessage(message.finalize_block, () => message.finalize_block = RequestFinalizeBlock.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Request {
            return Request.deserialize(bytes);
        }
    }
    export class RequestEcho extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            message?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("message" in data && data.message != undefined) {
                    this.message = data.message;
                }
            }
        }
        get message() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set message(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            message?: string;
        }): RequestEcho {
            const message = new RequestEcho({});
            if (data.message != null) {
                message.message = data.message;
            }
            return message;
        }
        toObject() {
            const data: {
                message?: string;
            } = {};
            if (this.message != null) {
                data.message = this.message;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.message.length)
                writer.writeString(1, this.message);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestEcho {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestEcho();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.message = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestEcho {
            return RequestEcho.deserialize(bytes);
        }
    }
    export class RequestFlush extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {}) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") { }
        }
        static fromObject(data: {}): RequestFlush {
            const message = new RequestFlush({});
            return message;
        }
        toObject() {
            const data: {} = {};
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestFlush {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestFlush();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestFlush {
            return RequestFlush.deserialize(bytes);
        }
    }
    export class RequestInfo extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            version?: string;
            block_version?: number;
            p2p_version?: number;
            abci_version?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("version" in data && data.version != undefined) {
                    this.version = data.version;
                }
                if ("block_version" in data && data.block_version != undefined) {
                    this.block_version = data.block_version;
                }
                if ("p2p_version" in data && data.p2p_version != undefined) {
                    this.p2p_version = data.p2p_version;
                }
                if ("abci_version" in data && data.abci_version != undefined) {
                    this.abci_version = data.abci_version;
                }
            }
        }
        get version() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set version(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        get block_version() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set block_version(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        get p2p_version() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set p2p_version(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get abci_version() {
            return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
        }
        set abci_version(value: string) {
            pb_1.Message.setField(this, 4, value);
        }
        static fromObject(data: {
            version?: string;
            block_version?: number;
            p2p_version?: number;
            abci_version?: string;
        }): RequestInfo {
            const message = new RequestInfo({});
            if (data.version != null) {
                message.version = data.version;
            }
            if (data.block_version != null) {
                message.block_version = data.block_version;
            }
            if (data.p2p_version != null) {
                message.p2p_version = data.p2p_version;
            }
            if (data.abci_version != null) {
                message.abci_version = data.abci_version;
            }
            return message;
        }
        toObject() {
            const data: {
                version?: string;
                block_version?: number;
                p2p_version?: number;
                abci_version?: string;
            } = {};
            if (this.version != null) {
                data.version = this.version;
            }
            if (this.block_version != null) {
                data.block_version = this.block_version;
            }
            if (this.p2p_version != null) {
                data.p2p_version = this.p2p_version;
            }
            if (this.abci_version != null) {
                data.abci_version = this.abci_version;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.version.length)
                writer.writeString(1, this.version);
            if (this.block_version != 0)
                writer.writeUint64(2, this.block_version);
            if (this.p2p_version != 0)
                writer.writeUint64(3, this.p2p_version);
            if (this.abci_version.length)
                writer.writeString(4, this.abci_version);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestInfo {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestInfo();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.version = reader.readString();
                        break;
                    case 2:
                        message.block_version = reader.readUint64();
                        break;
                    case 3:
                        message.p2p_version = reader.readUint64();
                        break;
                    case 4:
                        message.abci_version = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestInfo {
            return RequestInfo.deserialize(bytes);
        }
    }
    export class RequestInitChain extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            time?: dependency_5.google.protobuf.Timestamp;
            chain_id?: string;
            consensus_params?: dependency_3.tendermint.types.ConsensusParams;
            validators?: ValidatorUpdate[];
            app_state_bytes?: Uint8Array;
            initial_height?: number;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [4], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("time" in data && data.time != undefined) {
                    this.time = data.time;
                }
                if ("chain_id" in data && data.chain_id != undefined) {
                    this.chain_id = data.chain_id;
                }
                if ("consensus_params" in data && data.consensus_params != undefined) {
                    this.consensus_params = data.consensus_params;
                }
                if ("validators" in data && data.validators != undefined) {
                    this.validators = data.validators;
                }
                if ("app_state_bytes" in data && data.app_state_bytes != undefined) {
                    this.app_state_bytes = data.app_state_bytes;
                }
                if ("initial_height" in data && data.initial_height != undefined) {
                    this.initial_height = data.initial_height;
                }
            }
        }
        get time() {
            return pb_1.Message.getWrapperField(this, dependency_5.google.protobuf.Timestamp, 1) as dependency_5.google.protobuf.Timestamp;
        }
        set time(value: dependency_5.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_time() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get chain_id() {
            return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
        }
        set chain_id(value: string) {
            pb_1.Message.setField(this, 2, value);
        }
        get consensus_params() {
            return pb_1.Message.getWrapperField(this, dependency_3.tendermint.types.ConsensusParams, 3) as dependency_3.tendermint.types.ConsensusParams;
        }
        set consensus_params(value: dependency_3.tendermint.types.ConsensusParams) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_consensus_params() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get validators() {
            return pb_1.Message.getRepeatedWrapperField(this, ValidatorUpdate, 4) as ValidatorUpdate[];
        }
        set validators(value: ValidatorUpdate[]) {
            pb_1.Message.setRepeatedWrapperField(this, 4, value);
        }
        get app_state_bytes() {
            return pb_1.Message.getFieldWithDefault(this, 5, new Uint8Array(0)) as Uint8Array;
        }
        set app_state_bytes(value: Uint8Array) {
            pb_1.Message.setField(this, 5, value);
        }
        get initial_height() {
            return pb_1.Message.getFieldWithDefault(this, 6, 0) as number;
        }
        set initial_height(value: number) {
            pb_1.Message.setField(this, 6, value);
        }
        static fromObject(data: {
            time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
            chain_id?: string;
            consensus_params?: ReturnType<typeof dependency_3.tendermint.types.ConsensusParams.prototype.toObject>;
            validators?: ReturnType<typeof ValidatorUpdate.prototype.toObject>[];
            app_state_bytes?: Uint8Array;
            initial_height?: number;
        }): RequestInitChain {
            const message = new RequestInitChain({});
            if (data.time != null) {
                message.time = dependency_5.google.protobuf.Timestamp.fromObject(data.time);
            }
            if (data.chain_id != null) {
                message.chain_id = data.chain_id;
            }
            if (data.consensus_params != null) {
                message.consensus_params = dependency_3.tendermint.types.ConsensusParams.fromObject(data.consensus_params);
            }
            if (data.validators != null) {
                message.validators = data.validators.map(item => ValidatorUpdate.fromObject(item));
            }
            if (data.app_state_bytes != null) {
                message.app_state_bytes = data.app_state_bytes;
            }
            if (data.initial_height != null) {
                message.initial_height = data.initial_height;
            }
            return message;
        }
        toObject() {
            const data: {
                time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
                chain_id?: string;
                consensus_params?: ReturnType<typeof dependency_3.tendermint.types.ConsensusParams.prototype.toObject>;
                validators?: ReturnType<typeof ValidatorUpdate.prototype.toObject>[];
                app_state_bytes?: Uint8Array;
                initial_height?: number;
            } = {};
            if (this.time != null) {
                data.time = this.time.toObject();
            }
            if (this.chain_id != null) {
                data.chain_id = this.chain_id;
            }
            if (this.consensus_params != null) {
                data.consensus_params = this.consensus_params.toObject();
            }
            if (this.validators != null) {
                data.validators = this.validators.map((item: ValidatorUpdate) => item.toObject());
            }
            if (this.app_state_bytes != null) {
                data.app_state_bytes = this.app_state_bytes;
            }
            if (this.initial_height != null) {
                data.initial_height = this.initial_height;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.has_time)
                writer.writeMessage(1, this.time, () => this.time.serialize(writer));
            if (this.chain_id.length)
                writer.writeString(2, this.chain_id);
            if (this.has_consensus_params)
                writer.writeMessage(3, this.consensus_params, () => this.consensus_params.serialize(writer));
            if (this.validators.length)
                writer.writeRepeatedMessage(4, this.validators, (item: ValidatorUpdate) => item.serialize(writer));
            if (this.app_state_bytes.length)
                writer.writeBytes(5, this.app_state_bytes);
            if (this.initial_height != 0)
                writer.writeInt64(6, this.initial_height);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestInitChain {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestInitChain();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.time, () => message.time = dependency_5.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 2:
                        message.chain_id = reader.readString();
                        break;
                    case 3:
                        reader.readMessage(message.consensus_params, () => message.consensus_params = dependency_3.tendermint.types.ConsensusParams.deserialize(reader));
                        break;
                    case 4:
                        reader.readMessage(message.validators, () => pb_1.Message.addToRepeatedWrapperField(message, 4, ValidatorUpdate.deserialize(reader), ValidatorUpdate));
                        break;
                    case 5:
                        message.app_state_bytes = reader.readBytes();
                        break;
                    case 6:
                        message.initial_height = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestInitChain {
            return RequestInitChain.deserialize(bytes);
        }
    }
    export class RequestQuery extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            data?: Uint8Array;
            path?: string;
            height?: number;
            prove?: boolean;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("data" in data && data.data != undefined) {
                    this.data = data.data;
                }
                if ("path" in data && data.path != undefined) {
                    this.path = data.path;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("prove" in data && data.prove != undefined) {
                    this.prove = data.prove;
                }
            }
        }
        get data() {
            return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
        }
        set data(value: Uint8Array) {
            pb_1.Message.setField(this, 1, value);
        }
        get path() {
            return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
        }
        set path(value: string) {
            pb_1.Message.setField(this, 2, value);
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get prove() {
            return pb_1.Message.getFieldWithDefault(this, 4, false) as boolean;
        }
        set prove(value: boolean) {
            pb_1.Message.setField(this, 4, value);
        }
        static fromObject(data: {
            data?: Uint8Array;
            path?: string;
            height?: number;
            prove?: boolean;
        }): RequestQuery {
            const message = new RequestQuery({});
            if (data.data != null) {
                message.data = data.data;
            }
            if (data.path != null) {
                message.path = data.path;
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.prove != null) {
                message.prove = data.prove;
            }
            return message;
        }
        toObject() {
            const data: {
                data?: Uint8Array;
                path?: string;
                height?: number;
                prove?: boolean;
            } = {};
            if (this.data != null) {
                data.data = this.data;
            }
            if (this.path != null) {
                data.path = this.path;
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.prove != null) {
                data.prove = this.prove;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.data.length)
                writer.writeBytes(1, this.data);
            if (this.path.length)
                writer.writeString(2, this.path);
            if (this.height != 0)
                writer.writeInt64(3, this.height);
            if (this.prove != false)
                writer.writeBool(4, this.prove);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestQuery {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestQuery();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.data = reader.readBytes();
                        break;
                    case 2:
                        message.path = reader.readString();
                        break;
                    case 3:
                        message.height = reader.readInt64();
                        break;
                    case 4:
                        message.prove = reader.readBool();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestQuery {
            return RequestQuery.deserialize(bytes);
        }
    }
    export class RequestCheckTx extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            tx?: Uint8Array;
            type?: CheckTxType;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("tx" in data && data.tx != undefined) {
                    this.tx = data.tx;
                }
                if ("type" in data && data.type != undefined) {
                    this.type = data.type;
                }
            }
        }
        get tx() {
            return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
        }
        set tx(value: Uint8Array) {
            pb_1.Message.setField(this, 1, value);
        }
        get type() {
            return pb_1.Message.getFieldWithDefault(this, 2, CheckTxType.NEW) as CheckTxType;
        }
        set type(value: CheckTxType) {
            pb_1.Message.setField(this, 2, value);
        }
        static fromObject(data: {
            tx?: Uint8Array;
            type?: CheckTxType;
        }): RequestCheckTx {
            const message = new RequestCheckTx({});
            if (data.tx != null) {
                message.tx = data.tx;
            }
            if (data.type != null) {
                message.type = data.type;
            }
            return message;
        }
        toObject() {
            const data: {
                tx?: Uint8Array;
                type?: CheckTxType;
            } = {};
            if (this.tx != null) {
                data.tx = this.tx;
            }
            if (this.type != null) {
                data.type = this.type;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.tx.length)
                writer.writeBytes(1, this.tx);
            if (this.type != CheckTxType.NEW)
                writer.writeEnum(2, this.type);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestCheckTx {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestCheckTx();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.tx = reader.readBytes();
                        break;
                    case 2:
                        message.type = reader.readEnum();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestCheckTx {
            return RequestCheckTx.deserialize(bytes);
        }
    }
    export class RequestCommit extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {}) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") { }
        }
        static fromObject(data: {}): RequestCommit {
            const message = new RequestCommit({});
            return message;
        }
        toObject() {
            const data: {} = {};
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestCommit {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestCommit();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestCommit {
            return RequestCommit.deserialize(bytes);
        }
    }
    export class RequestListSnapshots extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {}) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") { }
        }
        static fromObject(data: {}): RequestListSnapshots {
            const message = new RequestListSnapshots({});
            return message;
        }
        toObject() {
            const data: {} = {};
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestListSnapshots {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestListSnapshots();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestListSnapshots {
            return RequestListSnapshots.deserialize(bytes);
        }
    }
    export class RequestOfferSnapshot extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            snapshot?: Snapshot;
            app_hash?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("snapshot" in data && data.snapshot != undefined) {
                    this.snapshot = data.snapshot;
                }
                if ("app_hash" in data && data.app_hash != undefined) {
                    this.app_hash = data.app_hash;
                }
            }
        }
        get snapshot() {
            return pb_1.Message.getWrapperField(this, Snapshot, 1) as Snapshot;
        }
        set snapshot(value: Snapshot) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_snapshot() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get app_hash() {
            return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
        }
        set app_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 2, value);
        }
        static fromObject(data: {
            snapshot?: ReturnType<typeof Snapshot.prototype.toObject>;
            app_hash?: Uint8Array;
        }): RequestOfferSnapshot {
            const message = new RequestOfferSnapshot({});
            if (data.snapshot != null) {
                message.snapshot = Snapshot.fromObject(data.snapshot);
            }
            if (data.app_hash != null) {
                message.app_hash = data.app_hash;
            }
            return message;
        }
        toObject() {
            const data: {
                snapshot?: ReturnType<typeof Snapshot.prototype.toObject>;
                app_hash?: Uint8Array;
            } = {};
            if (this.snapshot != null) {
                data.snapshot = this.snapshot.toObject();
            }
            if (this.app_hash != null) {
                data.app_hash = this.app_hash;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.has_snapshot)
                writer.writeMessage(1, this.snapshot, () => this.snapshot.serialize(writer));
            if (this.app_hash.length)
                writer.writeBytes(2, this.app_hash);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestOfferSnapshot {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestOfferSnapshot();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.snapshot, () => message.snapshot = Snapshot.deserialize(reader));
                        break;
                    case 2:
                        message.app_hash = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestOfferSnapshot {
            return RequestOfferSnapshot.deserialize(bytes);
        }
    }
    export class RequestLoadSnapshotChunk extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            height?: number;
            format?: number;
            chunk?: number;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("format" in data && data.format != undefined) {
                    this.format = data.format;
                }
                if ("chunk" in data && data.chunk != undefined) {
                    this.chunk = data.chunk;
                }
            }
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get format() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set format(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        get chunk() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set chunk(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            height?: number;
            format?: number;
            chunk?: number;
        }): RequestLoadSnapshotChunk {
            const message = new RequestLoadSnapshotChunk({});
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.format != null) {
                message.format = data.format;
            }
            if (data.chunk != null) {
                message.chunk = data.chunk;
            }
            return message;
        }
        toObject() {
            const data: {
                height?: number;
                format?: number;
                chunk?: number;
            } = {};
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.format != null) {
                data.format = this.format;
            }
            if (this.chunk != null) {
                data.chunk = this.chunk;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.height != 0)
                writer.writeUint64(1, this.height);
            if (this.format != 0)
                writer.writeUint32(2, this.format);
            if (this.chunk != 0)
                writer.writeUint32(3, this.chunk);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestLoadSnapshotChunk {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestLoadSnapshotChunk();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.height = reader.readUint64();
                        break;
                    case 2:
                        message.format = reader.readUint32();
                        break;
                    case 3:
                        message.chunk = reader.readUint32();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestLoadSnapshotChunk {
            return RequestLoadSnapshotChunk.deserialize(bytes);
        }
    }
    export class RequestApplySnapshotChunk extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            index?: number;
            chunk?: Uint8Array;
            sender?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("index" in data && data.index != undefined) {
                    this.index = data.index;
                }
                if ("chunk" in data && data.chunk != undefined) {
                    this.chunk = data.chunk;
                }
                if ("sender" in data && data.sender != undefined) {
                    this.sender = data.sender;
                }
            }
        }
        get index() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set index(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get chunk() {
            return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
        }
        set chunk(value: Uint8Array) {
            pb_1.Message.setField(this, 2, value);
        }
        get sender() {
            return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
        }
        set sender(value: string) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            index?: number;
            chunk?: Uint8Array;
            sender?: string;
        }): RequestApplySnapshotChunk {
            const message = new RequestApplySnapshotChunk({});
            if (data.index != null) {
                message.index = data.index;
            }
            if (data.chunk != null) {
                message.chunk = data.chunk;
            }
            if (data.sender != null) {
                message.sender = data.sender;
            }
            return message;
        }
        toObject() {
            const data: {
                index?: number;
                chunk?: Uint8Array;
                sender?: string;
            } = {};
            if (this.index != null) {
                data.index = this.index;
            }
            if (this.chunk != null) {
                data.chunk = this.chunk;
            }
            if (this.sender != null) {
                data.sender = this.sender;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.index != 0)
                writer.writeUint32(1, this.index);
            if (this.chunk.length)
                writer.writeBytes(2, this.chunk);
            if (this.sender.length)
                writer.writeString(3, this.sender);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestApplySnapshotChunk {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestApplySnapshotChunk();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.index = reader.readUint32();
                        break;
                    case 2:
                        message.chunk = reader.readBytes();
                        break;
                    case 3:
                        message.sender = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestApplySnapshotChunk {
            return RequestApplySnapshotChunk.deserialize(bytes);
        }
    }
    export class RequestPrepareProposal extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            max_tx_bytes?: number;
            txs?: Uint8Array[];
            local_last_commit?: ExtendedCommitInfo;
            misbehavior?: Misbehavior[];
            height?: number;
            time?: dependency_5.google.protobuf.Timestamp;
            next_validators_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 4], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("max_tx_bytes" in data && data.max_tx_bytes != undefined) {
                    this.max_tx_bytes = data.max_tx_bytes;
                }
                if ("txs" in data && data.txs != undefined) {
                    this.txs = data.txs;
                }
                if ("local_last_commit" in data && data.local_last_commit != undefined) {
                    this.local_last_commit = data.local_last_commit;
                }
                if ("misbehavior" in data && data.misbehavior != undefined) {
                    this.misbehavior = data.misbehavior;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("time" in data && data.time != undefined) {
                    this.time = data.time;
                }
                if ("next_validators_hash" in data && data.next_validators_hash != undefined) {
                    this.next_validators_hash = data.next_validators_hash;
                }
                if ("proposer_address" in data && data.proposer_address != undefined) {
                    this.proposer_address = data.proposer_address;
                }
            }
        }
        get max_tx_bytes() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set max_tx_bytes(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get txs() {
            return pb_1.Message.getFieldWithDefault(this, 2, []) as Uint8Array[];
        }
        set txs(value: Uint8Array[]) {
            pb_1.Message.setField(this, 2, value);
        }
        get local_last_commit() {
            return pb_1.Message.getWrapperField(this, ExtendedCommitInfo, 3) as ExtendedCommitInfo;
        }
        set local_last_commit(value: ExtendedCommitInfo) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_local_last_commit() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get misbehavior() {
            return pb_1.Message.getRepeatedWrapperField(this, Misbehavior, 4) as Misbehavior[];
        }
        set misbehavior(value: Misbehavior[]) {
            pb_1.Message.setRepeatedWrapperField(this, 4, value);
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 5, value);
        }
        get time() {
            return pb_1.Message.getWrapperField(this, dependency_5.google.protobuf.Timestamp, 6) as dependency_5.google.protobuf.Timestamp;
        }
        set time(value: dependency_5.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 6, value);
        }
        get has_time() {
            return pb_1.Message.getField(this, 6) != null;
        }
        get next_validators_hash() {
            return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array(0)) as Uint8Array;
        }
        set next_validators_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 7, value);
        }
        get proposer_address() {
            return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array(0)) as Uint8Array;
        }
        set proposer_address(value: Uint8Array) {
            pb_1.Message.setField(this, 8, value);
        }
        static fromObject(data: {
            max_tx_bytes?: number;
            txs?: Uint8Array[];
            local_last_commit?: ReturnType<typeof ExtendedCommitInfo.prototype.toObject>;
            misbehavior?: ReturnType<typeof Misbehavior.prototype.toObject>[];
            height?: number;
            time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
            next_validators_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }): RequestPrepareProposal {
            const message = new RequestPrepareProposal({});
            if (data.max_tx_bytes != null) {
                message.max_tx_bytes = data.max_tx_bytes;
            }
            if (data.txs != null) {
                message.txs = data.txs;
            }
            if (data.local_last_commit != null) {
                message.local_last_commit = ExtendedCommitInfo.fromObject(data.local_last_commit);
            }
            if (data.misbehavior != null) {
                message.misbehavior = data.misbehavior.map(item => Misbehavior.fromObject(item));
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.time != null) {
                message.time = dependency_5.google.protobuf.Timestamp.fromObject(data.time);
            }
            if (data.next_validators_hash != null) {
                message.next_validators_hash = data.next_validators_hash;
            }
            if (data.proposer_address != null) {
                message.proposer_address = data.proposer_address;
            }
            return message;
        }
        toObject() {
            const data: {
                max_tx_bytes?: number;
                txs?: Uint8Array[];
                local_last_commit?: ReturnType<typeof ExtendedCommitInfo.prototype.toObject>;
                misbehavior?: ReturnType<typeof Misbehavior.prototype.toObject>[];
                height?: number;
                time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
                next_validators_hash?: Uint8Array;
                proposer_address?: Uint8Array;
            } = {};
            if (this.max_tx_bytes != null) {
                data.max_tx_bytes = this.max_tx_bytes;
            }
            if (this.txs != null) {
                data.txs = this.txs;
            }
            if (this.local_last_commit != null) {
                data.local_last_commit = this.local_last_commit.toObject();
            }
            if (this.misbehavior != null) {
                data.misbehavior = this.misbehavior.map((item: Misbehavior) => item.toObject());
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.time != null) {
                data.time = this.time.toObject();
            }
            if (this.next_validators_hash != null) {
                data.next_validators_hash = this.next_validators_hash;
            }
            if (this.proposer_address != null) {
                data.proposer_address = this.proposer_address;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.max_tx_bytes != 0)
                writer.writeInt64(1, this.max_tx_bytes);
            if (this.txs.length)
                writer.writeRepeatedBytes(2, this.txs);
            if (this.has_local_last_commit)
                writer.writeMessage(3, this.local_last_commit, () => this.local_last_commit.serialize(writer));
            if (this.misbehavior.length)
                writer.writeRepeatedMessage(4, this.misbehavior, (item: Misbehavior) => item.serialize(writer));
            if (this.height != 0)
                writer.writeInt64(5, this.height);
            if (this.has_time)
                writer.writeMessage(6, this.time, () => this.time.serialize(writer));
            if (this.next_validators_hash.length)
                writer.writeBytes(7, this.next_validators_hash);
            if (this.proposer_address.length)
                writer.writeBytes(8, this.proposer_address);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestPrepareProposal {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestPrepareProposal();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.max_tx_bytes = reader.readInt64();
                        break;
                    case 2:
                        pb_1.Message.addToRepeatedField(message, 2, reader.readBytes());
                        break;
                    case 3:
                        reader.readMessage(message.local_last_commit, () => message.local_last_commit = ExtendedCommitInfo.deserialize(reader));
                        break;
                    case 4:
                        reader.readMessage(message.misbehavior, () => pb_1.Message.addToRepeatedWrapperField(message, 4, Misbehavior.deserialize(reader), Misbehavior));
                        break;
                    case 5:
                        message.height = reader.readInt64();
                        break;
                    case 6:
                        reader.readMessage(message.time, () => message.time = dependency_5.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 7:
                        message.next_validators_hash = reader.readBytes();
                        break;
                    case 8:
                        message.proposer_address = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestPrepareProposal {
            return RequestPrepareProposal.deserialize(bytes);
        }
    }
    export class RequestProcessProposal extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            txs?: Uint8Array[];
            proposed_last_commit?: CommitInfo;
            misbehavior?: Misbehavior[];
            hash?: Uint8Array;
            height?: number;
            time?: dependency_5.google.protobuf.Timestamp;
            next_validators_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 3], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("txs" in data && data.txs != undefined) {
                    this.txs = data.txs;
                }
                if ("proposed_last_commit" in data && data.proposed_last_commit != undefined) {
                    this.proposed_last_commit = data.proposed_last_commit;
                }
                if ("misbehavior" in data && data.misbehavior != undefined) {
                    this.misbehavior = data.misbehavior;
                }
                if ("hash" in data && data.hash != undefined) {
                    this.hash = data.hash;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("time" in data && data.time != undefined) {
                    this.time = data.time;
                }
                if ("next_validators_hash" in data && data.next_validators_hash != undefined) {
                    this.next_validators_hash = data.next_validators_hash;
                }
                if ("proposer_address" in data && data.proposer_address != undefined) {
                    this.proposer_address = data.proposer_address;
                }
            }
        }
        get txs() {
            return pb_1.Message.getFieldWithDefault(this, 1, []) as Uint8Array[];
        }
        set txs(value: Uint8Array[]) {
            pb_1.Message.setField(this, 1, value);
        }
        get proposed_last_commit() {
            return pb_1.Message.getWrapperField(this, CommitInfo, 2) as CommitInfo;
        }
        set proposed_last_commit(value: CommitInfo) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_proposed_last_commit() {
            return pb_1.Message.getField(this, 2) != null;
        }
        get misbehavior() {
            return pb_1.Message.getRepeatedWrapperField(this, Misbehavior, 3) as Misbehavior[];
        }
        set misbehavior(value: Misbehavior[]) {
            pb_1.Message.setRepeatedWrapperField(this, 3, value);
        }
        get hash() {
            return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
        }
        set hash(value: Uint8Array) {
            pb_1.Message.setField(this, 4, value);
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 5, value);
        }
        get time() {
            return pb_1.Message.getWrapperField(this, dependency_5.google.protobuf.Timestamp, 6) as dependency_5.google.protobuf.Timestamp;
        }
        set time(value: dependency_5.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 6, value);
        }
        get has_time() {
            return pb_1.Message.getField(this, 6) != null;
        }
        get next_validators_hash() {
            return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array(0)) as Uint8Array;
        }
        set next_validators_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 7, value);
        }
        get proposer_address() {
            return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array(0)) as Uint8Array;
        }
        set proposer_address(value: Uint8Array) {
            pb_1.Message.setField(this, 8, value);
        }
        static fromObject(data: {
            txs?: Uint8Array[];
            proposed_last_commit?: ReturnType<typeof CommitInfo.prototype.toObject>;
            misbehavior?: ReturnType<typeof Misbehavior.prototype.toObject>[];
            hash?: Uint8Array;
            height?: number;
            time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
            next_validators_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }): RequestProcessProposal {
            const message = new RequestProcessProposal({});
            if (data.txs != null) {
                message.txs = data.txs;
            }
            if (data.proposed_last_commit != null) {
                message.proposed_last_commit = CommitInfo.fromObject(data.proposed_last_commit);
            }
            if (data.misbehavior != null) {
                message.misbehavior = data.misbehavior.map(item => Misbehavior.fromObject(item));
            }
            if (data.hash != null) {
                message.hash = data.hash;
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.time != null) {
                message.time = dependency_5.google.protobuf.Timestamp.fromObject(data.time);
            }
            if (data.next_validators_hash != null) {
                message.next_validators_hash = data.next_validators_hash;
            }
            if (data.proposer_address != null) {
                message.proposer_address = data.proposer_address;
            }
            return message;
        }
        toObject() {
            const data: {
                txs?: Uint8Array[];
                proposed_last_commit?: ReturnType<typeof CommitInfo.prototype.toObject>;
                misbehavior?: ReturnType<typeof Misbehavior.prototype.toObject>[];
                hash?: Uint8Array;
                height?: number;
                time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
                next_validators_hash?: Uint8Array;
                proposer_address?: Uint8Array;
            } = {};
            if (this.txs != null) {
                data.txs = this.txs;
            }
            if (this.proposed_last_commit != null) {
                data.proposed_last_commit = this.proposed_last_commit.toObject();
            }
            if (this.misbehavior != null) {
                data.misbehavior = this.misbehavior.map((item: Misbehavior) => item.toObject());
            }
            if (this.hash != null) {
                data.hash = this.hash;
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.time != null) {
                data.time = this.time.toObject();
            }
            if (this.next_validators_hash != null) {
                data.next_validators_hash = this.next_validators_hash;
            }
            if (this.proposer_address != null) {
                data.proposer_address = this.proposer_address;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.txs.length)
                writer.writeRepeatedBytes(1, this.txs);
            if (this.has_proposed_last_commit)
                writer.writeMessage(2, this.proposed_last_commit, () => this.proposed_last_commit.serialize(writer));
            if (this.misbehavior.length)
                writer.writeRepeatedMessage(3, this.misbehavior, (item: Misbehavior) => item.serialize(writer));
            if (this.hash.length)
                writer.writeBytes(4, this.hash);
            if (this.height != 0)
                writer.writeInt64(5, this.height);
            if (this.has_time)
                writer.writeMessage(6, this.time, () => this.time.serialize(writer));
            if (this.next_validators_hash.length)
                writer.writeBytes(7, this.next_validators_hash);
            if (this.proposer_address.length)
                writer.writeBytes(8, this.proposer_address);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestProcessProposal {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestProcessProposal();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        pb_1.Message.addToRepeatedField(message, 1, reader.readBytes());
                        break;
                    case 2:
                        reader.readMessage(message.proposed_last_commit, () => message.proposed_last_commit = CommitInfo.deserialize(reader));
                        break;
                    case 3:
                        reader.readMessage(message.misbehavior, () => pb_1.Message.addToRepeatedWrapperField(message, 3, Misbehavior.deserialize(reader), Misbehavior));
                        break;
                    case 4:
                        message.hash = reader.readBytes();
                        break;
                    case 5:
                        message.height = reader.readInt64();
                        break;
                    case 6:
                        reader.readMessage(message.time, () => message.time = dependency_5.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 7:
                        message.next_validators_hash = reader.readBytes();
                        break;
                    case 8:
                        message.proposer_address = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestProcessProposal {
            return RequestProcessProposal.deserialize(bytes);
        }
    }
    export class RequestExtendVote extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            hash?: Uint8Array;
            height?: number;
            time?: dependency_5.google.protobuf.Timestamp;
            txs?: Uint8Array[];
            proposed_last_commit?: CommitInfo;
            misbehavior?: Misbehavior[];
            next_validators_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [4, 6], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("hash" in data && data.hash != undefined) {
                    this.hash = data.hash;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("time" in data && data.time != undefined) {
                    this.time = data.time;
                }
                if ("txs" in data && data.txs != undefined) {
                    this.txs = data.txs;
                }
                if ("proposed_last_commit" in data && data.proposed_last_commit != undefined) {
                    this.proposed_last_commit = data.proposed_last_commit;
                }
                if ("misbehavior" in data && data.misbehavior != undefined) {
                    this.misbehavior = data.misbehavior;
                }
                if ("next_validators_hash" in data && data.next_validators_hash != undefined) {
                    this.next_validators_hash = data.next_validators_hash;
                }
                if ("proposer_address" in data && data.proposer_address != undefined) {
                    this.proposer_address = data.proposer_address;
                }
            }
        }
        get hash() {
            return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
        }
        set hash(value: Uint8Array) {
            pb_1.Message.setField(this, 1, value);
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        get time() {
            return pb_1.Message.getWrapperField(this, dependency_5.google.protobuf.Timestamp, 3) as dependency_5.google.protobuf.Timestamp;
        }
        set time(value: dependency_5.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_time() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get txs() {
            return pb_1.Message.getFieldWithDefault(this, 4, []) as Uint8Array[];
        }
        set txs(value: Uint8Array[]) {
            pb_1.Message.setField(this, 4, value);
        }
        get proposed_last_commit() {
            return pb_1.Message.getWrapperField(this, CommitInfo, 5) as CommitInfo;
        }
        set proposed_last_commit(value: CommitInfo) {
            pb_1.Message.setWrapperField(this, 5, value);
        }
        get has_proposed_last_commit() {
            return pb_1.Message.getField(this, 5) != null;
        }
        get misbehavior() {
            return pb_1.Message.getRepeatedWrapperField(this, Misbehavior, 6) as Misbehavior[];
        }
        set misbehavior(value: Misbehavior[]) {
            pb_1.Message.setRepeatedWrapperField(this, 6, value);
        }
        get next_validators_hash() {
            return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array(0)) as Uint8Array;
        }
        set next_validators_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 7, value);
        }
        get proposer_address() {
            return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array(0)) as Uint8Array;
        }
        set proposer_address(value: Uint8Array) {
            pb_1.Message.setField(this, 8, value);
        }
        static fromObject(data: {
            hash?: Uint8Array;
            height?: number;
            time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
            txs?: Uint8Array[];
            proposed_last_commit?: ReturnType<typeof CommitInfo.prototype.toObject>;
            misbehavior?: ReturnType<typeof Misbehavior.prototype.toObject>[];
            next_validators_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }): RequestExtendVote {
            const message = new RequestExtendVote({});
            if (data.hash != null) {
                message.hash = data.hash;
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.time != null) {
                message.time = dependency_5.google.protobuf.Timestamp.fromObject(data.time);
            }
            if (data.txs != null) {
                message.txs = data.txs;
            }
            if (data.proposed_last_commit != null) {
                message.proposed_last_commit = CommitInfo.fromObject(data.proposed_last_commit);
            }
            if (data.misbehavior != null) {
                message.misbehavior = data.misbehavior.map(item => Misbehavior.fromObject(item));
            }
            if (data.next_validators_hash != null) {
                message.next_validators_hash = data.next_validators_hash;
            }
            if (data.proposer_address != null) {
                message.proposer_address = data.proposer_address;
            }
            return message;
        }
        toObject() {
            const data: {
                hash?: Uint8Array;
                height?: number;
                time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
                txs?: Uint8Array[];
                proposed_last_commit?: ReturnType<typeof CommitInfo.prototype.toObject>;
                misbehavior?: ReturnType<typeof Misbehavior.prototype.toObject>[];
                next_validators_hash?: Uint8Array;
                proposer_address?: Uint8Array;
            } = {};
            if (this.hash != null) {
                data.hash = this.hash;
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.time != null) {
                data.time = this.time.toObject();
            }
            if (this.txs != null) {
                data.txs = this.txs;
            }
            if (this.proposed_last_commit != null) {
                data.proposed_last_commit = this.proposed_last_commit.toObject();
            }
            if (this.misbehavior != null) {
                data.misbehavior = this.misbehavior.map((item: Misbehavior) => item.toObject());
            }
            if (this.next_validators_hash != null) {
                data.next_validators_hash = this.next_validators_hash;
            }
            if (this.proposer_address != null) {
                data.proposer_address = this.proposer_address;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.hash.length)
                writer.writeBytes(1, this.hash);
            if (this.height != 0)
                writer.writeInt64(2, this.height);
            if (this.has_time)
                writer.writeMessage(3, this.time, () => this.time.serialize(writer));
            if (this.txs.length)
                writer.writeRepeatedBytes(4, this.txs);
            if (this.has_proposed_last_commit)
                writer.writeMessage(5, this.proposed_last_commit, () => this.proposed_last_commit.serialize(writer));
            if (this.misbehavior.length)
                writer.writeRepeatedMessage(6, this.misbehavior, (item: Misbehavior) => item.serialize(writer));
            if (this.next_validators_hash.length)
                writer.writeBytes(7, this.next_validators_hash);
            if (this.proposer_address.length)
                writer.writeBytes(8, this.proposer_address);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestExtendVote {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestExtendVote();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.hash = reader.readBytes();
                        break;
                    case 2:
                        message.height = reader.readInt64();
                        break;
                    case 3:
                        reader.readMessage(message.time, () => message.time = dependency_5.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 4:
                        pb_1.Message.addToRepeatedField(message, 4, reader.readBytes());
                        break;
                    case 5:
                        reader.readMessage(message.proposed_last_commit, () => message.proposed_last_commit = CommitInfo.deserialize(reader));
                        break;
                    case 6:
                        reader.readMessage(message.misbehavior, () => pb_1.Message.addToRepeatedWrapperField(message, 6, Misbehavior.deserialize(reader), Misbehavior));
                        break;
                    case 7:
                        message.next_validators_hash = reader.readBytes();
                        break;
                    case 8:
                        message.proposer_address = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestExtendVote {
            return RequestExtendVote.deserialize(bytes);
        }
    }
    export class RequestVerifyVoteExtension extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            hash?: Uint8Array;
            validator_address?: Uint8Array;
            height?: number;
            vote_extension?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("hash" in data && data.hash != undefined) {
                    this.hash = data.hash;
                }
                if ("validator_address" in data && data.validator_address != undefined) {
                    this.validator_address = data.validator_address;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("vote_extension" in data && data.vote_extension != undefined) {
                    this.vote_extension = data.vote_extension;
                }
            }
        }
        get hash() {
            return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
        }
        set hash(value: Uint8Array) {
            pb_1.Message.setField(this, 1, value);
        }
        get validator_address() {
            return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
        }
        set validator_address(value: Uint8Array) {
            pb_1.Message.setField(this, 2, value);
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get vote_extension() {
            return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
        }
        set vote_extension(value: Uint8Array) {
            pb_1.Message.setField(this, 4, value);
        }
        static fromObject(data: {
            hash?: Uint8Array;
            validator_address?: Uint8Array;
            height?: number;
            vote_extension?: Uint8Array;
        }): RequestVerifyVoteExtension {
            const message = new RequestVerifyVoteExtension({});
            if (data.hash != null) {
                message.hash = data.hash;
            }
            if (data.validator_address != null) {
                message.validator_address = data.validator_address;
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.vote_extension != null) {
                message.vote_extension = data.vote_extension;
            }
            return message;
        }
        toObject() {
            const data: {
                hash?: Uint8Array;
                validator_address?: Uint8Array;
                height?: number;
                vote_extension?: Uint8Array;
            } = {};
            if (this.hash != null) {
                data.hash = this.hash;
            }
            if (this.validator_address != null) {
                data.validator_address = this.validator_address;
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.vote_extension != null) {
                data.vote_extension = this.vote_extension;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.hash.length)
                writer.writeBytes(1, this.hash);
            if (this.validator_address.length)
                writer.writeBytes(2, this.validator_address);
            if (this.height != 0)
                writer.writeInt64(3, this.height);
            if (this.vote_extension.length)
                writer.writeBytes(4, this.vote_extension);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestVerifyVoteExtension {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestVerifyVoteExtension();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.hash = reader.readBytes();
                        break;
                    case 2:
                        message.validator_address = reader.readBytes();
                        break;
                    case 3:
                        message.height = reader.readInt64();
                        break;
                    case 4:
                        message.vote_extension = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestVerifyVoteExtension {
            return RequestVerifyVoteExtension.deserialize(bytes);
        }
    }
    export class RequestFinalizeBlock extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            txs?: Uint8Array[];
            decided_last_commit?: CommitInfo;
            misbehavior?: Misbehavior[];
            hash?: Uint8Array;
            height?: number;
            time?: dependency_5.google.protobuf.Timestamp;
            next_validators_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 3], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("txs" in data && data.txs != undefined) {
                    this.txs = data.txs;
                }
                if ("decided_last_commit" in data && data.decided_last_commit != undefined) {
                    this.decided_last_commit = data.decided_last_commit;
                }
                if ("misbehavior" in data && data.misbehavior != undefined) {
                    this.misbehavior = data.misbehavior;
                }
                if ("hash" in data && data.hash != undefined) {
                    this.hash = data.hash;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("time" in data && data.time != undefined) {
                    this.time = data.time;
                }
                if ("next_validators_hash" in data && data.next_validators_hash != undefined) {
                    this.next_validators_hash = data.next_validators_hash;
                }
                if ("proposer_address" in data && data.proposer_address != undefined) {
                    this.proposer_address = data.proposer_address;
                }
            }
        }
        get txs() {
            return pb_1.Message.getFieldWithDefault(this, 1, []) as Uint8Array[];
        }
        set txs(value: Uint8Array[]) {
            pb_1.Message.setField(this, 1, value);
        }
        get decided_last_commit() {
            return pb_1.Message.getWrapperField(this, CommitInfo, 2) as CommitInfo;
        }
        set decided_last_commit(value: CommitInfo) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_decided_last_commit() {
            return pb_1.Message.getField(this, 2) != null;
        }
        get misbehavior() {
            return pb_1.Message.getRepeatedWrapperField(this, Misbehavior, 3) as Misbehavior[];
        }
        set misbehavior(value: Misbehavior[]) {
            pb_1.Message.setRepeatedWrapperField(this, 3, value);
        }
        get hash() {
            return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
        }
        set hash(value: Uint8Array) {
            pb_1.Message.setField(this, 4, value);
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 5, value);
        }
        get time() {
            return pb_1.Message.getWrapperField(this, dependency_5.google.protobuf.Timestamp, 6) as dependency_5.google.protobuf.Timestamp;
        }
        set time(value: dependency_5.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 6, value);
        }
        get has_time() {
            return pb_1.Message.getField(this, 6) != null;
        }
        get next_validators_hash() {
            return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array(0)) as Uint8Array;
        }
        set next_validators_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 7, value);
        }
        get proposer_address() {
            return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array(0)) as Uint8Array;
        }
        set proposer_address(value: Uint8Array) {
            pb_1.Message.setField(this, 8, value);
        }
        static fromObject(data: {
            txs?: Uint8Array[];
            decided_last_commit?: ReturnType<typeof CommitInfo.prototype.toObject>;
            misbehavior?: ReturnType<typeof Misbehavior.prototype.toObject>[];
            hash?: Uint8Array;
            height?: number;
            time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
            next_validators_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }): RequestFinalizeBlock {
            const message = new RequestFinalizeBlock({});
            if (data.txs != null) {
                message.txs = data.txs;
            }
            if (data.decided_last_commit != null) {
                message.decided_last_commit = CommitInfo.fromObject(data.decided_last_commit);
            }
            if (data.misbehavior != null) {
                message.misbehavior = data.misbehavior.map(item => Misbehavior.fromObject(item));
            }
            if (data.hash != null) {
                message.hash = data.hash;
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.time != null) {
                message.time = dependency_5.google.protobuf.Timestamp.fromObject(data.time);
            }
            if (data.next_validators_hash != null) {
                message.next_validators_hash = data.next_validators_hash;
            }
            if (data.proposer_address != null) {
                message.proposer_address = data.proposer_address;
            }
            return message;
        }
        toObject() {
            const data: {
                txs?: Uint8Array[];
                decided_last_commit?: ReturnType<typeof CommitInfo.prototype.toObject>;
                misbehavior?: ReturnType<typeof Misbehavior.prototype.toObject>[];
                hash?: Uint8Array;
                height?: number;
                time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
                next_validators_hash?: Uint8Array;
                proposer_address?: Uint8Array;
            } = {};
            if (this.txs != null) {
                data.txs = this.txs;
            }
            if (this.decided_last_commit != null) {
                data.decided_last_commit = this.decided_last_commit.toObject();
            }
            if (this.misbehavior != null) {
                data.misbehavior = this.misbehavior.map((item: Misbehavior) => item.toObject());
            }
            if (this.hash != null) {
                data.hash = this.hash;
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.time != null) {
                data.time = this.time.toObject();
            }
            if (this.next_validators_hash != null) {
                data.next_validators_hash = this.next_validators_hash;
            }
            if (this.proposer_address != null) {
                data.proposer_address = this.proposer_address;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.txs.length)
                writer.writeRepeatedBytes(1, this.txs);
            if (this.has_decided_last_commit)
                writer.writeMessage(2, this.decided_last_commit, () => this.decided_last_commit.serialize(writer));
            if (this.misbehavior.length)
                writer.writeRepeatedMessage(3, this.misbehavior, (item: Misbehavior) => item.serialize(writer));
            if (this.hash.length)
                writer.writeBytes(4, this.hash);
            if (this.height != 0)
                writer.writeInt64(5, this.height);
            if (this.has_time)
                writer.writeMessage(6, this.time, () => this.time.serialize(writer));
            if (this.next_validators_hash.length)
                writer.writeBytes(7, this.next_validators_hash);
            if (this.proposer_address.length)
                writer.writeBytes(8, this.proposer_address);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RequestFinalizeBlock {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RequestFinalizeBlock();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        pb_1.Message.addToRepeatedField(message, 1, reader.readBytes());
                        break;
                    case 2:
                        reader.readMessage(message.decided_last_commit, () => message.decided_last_commit = CommitInfo.deserialize(reader));
                        break;
                    case 3:
                        reader.readMessage(message.misbehavior, () => pb_1.Message.addToRepeatedWrapperField(message, 3, Misbehavior.deserialize(reader), Misbehavior));
                        break;
                    case 4:
                        message.hash = reader.readBytes();
                        break;
                    case 5:
                        message.height = reader.readInt64();
                        break;
                    case 6:
                        reader.readMessage(message.time, () => message.time = dependency_5.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 7:
                        message.next_validators_hash = reader.readBytes();
                        break;
                    case 8:
                        message.proposer_address = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): RequestFinalizeBlock {
            return RequestFinalizeBlock.deserialize(bytes);
        }
    }
    export class Response extends pb_1.Message {
        #one_of_decls: number[][] = [[1, 2, 3, 4, 6, 7, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]];
        constructor(data?: any[] | ({} & (({
            exception?: ResponseException;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: ResponseEcho;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: ResponseFlush;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: ResponseInfo;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: ResponseInitChain;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: ResponseQuery;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: ResponseCheckTx;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: ResponseCommit;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: ResponseListSnapshots;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: ResponseOfferSnapshot;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: ResponseLoadSnapshotChunk;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: ResponseApplySnapshotChunk;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: ResponsePrepareProposal;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: ResponseProcessProposal;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: ResponseExtendVote;
            verify_vote_extension?: never;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: ResponseVerifyVoteExtension;
            finalize_block?: never;
        } | {
            exception?: never;
            echo?: never;
            flush?: never;
            info?: never;
            init_chain?: never;
            query?: never;
            check_tx?: never;
            commit?: never;
            list_snapshots?: never;
            offer_snapshot?: never;
            load_snapshot_chunk?: never;
            apply_snapshot_chunk?: never;
            prepare_proposal?: never;
            process_proposal?: never;
            extend_vote?: never;
            verify_vote_extension?: never;
            finalize_block?: ResponseFinalizeBlock;
        })))) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("exception" in data && data.exception != undefined) {
                    this.exception = data.exception;
                }
                if ("echo" in data && data.echo != undefined) {
                    this.echo = data.echo;
                }
                if ("flush" in data && data.flush != undefined) {
                    this.flush = data.flush;
                }
                if ("info" in data && data.info != undefined) {
                    this.info = data.info;
                }
                if ("init_chain" in data && data.init_chain != undefined) {
                    this.init_chain = data.init_chain;
                }
                if ("query" in data && data.query != undefined) {
                    this.query = data.query;
                }
                if ("check_tx" in data && data.check_tx != undefined) {
                    this.check_tx = data.check_tx;
                }
                if ("commit" in data && data.commit != undefined) {
                    this.commit = data.commit;
                }
                if ("list_snapshots" in data && data.list_snapshots != undefined) {
                    this.list_snapshots = data.list_snapshots;
                }
                if ("offer_snapshot" in data && data.offer_snapshot != undefined) {
                    this.offer_snapshot = data.offer_snapshot;
                }
                if ("load_snapshot_chunk" in data && data.load_snapshot_chunk != undefined) {
                    this.load_snapshot_chunk = data.load_snapshot_chunk;
                }
                if ("apply_snapshot_chunk" in data && data.apply_snapshot_chunk != undefined) {
                    this.apply_snapshot_chunk = data.apply_snapshot_chunk;
                }
                if ("prepare_proposal" in data && data.prepare_proposal != undefined) {
                    this.prepare_proposal = data.prepare_proposal;
                }
                if ("process_proposal" in data && data.process_proposal != undefined) {
                    this.process_proposal = data.process_proposal;
                }
                if ("extend_vote" in data && data.extend_vote != undefined) {
                    this.extend_vote = data.extend_vote;
                }
                if ("verify_vote_extension" in data && data.verify_vote_extension != undefined) {
                    this.verify_vote_extension = data.verify_vote_extension;
                }
                if ("finalize_block" in data && data.finalize_block != undefined) {
                    this.finalize_block = data.finalize_block;
                }
            }
        }
        get exception() {
            return pb_1.Message.getWrapperField(this, ResponseException, 1) as ResponseException;
        }
        set exception(value: ResponseException) {
            pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value);
        }
        get has_exception() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get echo() {
            return pb_1.Message.getWrapperField(this, ResponseEcho, 2) as ResponseEcho;
        }
        set echo(value: ResponseEcho) {
            pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
        }
        get has_echo() {
            return pb_1.Message.getField(this, 2) != null;
        }
        get flush() {
            return pb_1.Message.getWrapperField(this, ResponseFlush, 3) as ResponseFlush;
        }
        set flush(value: ResponseFlush) {
            pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
        }
        get has_flush() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get info() {
            return pb_1.Message.getWrapperField(this, ResponseInfo, 4) as ResponseInfo;
        }
        set info(value: ResponseInfo) {
            pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value);
        }
        get has_info() {
            return pb_1.Message.getField(this, 4) != null;
        }
        get init_chain() {
            return pb_1.Message.getWrapperField(this, ResponseInitChain, 6) as ResponseInitChain;
        }
        set init_chain(value: ResponseInitChain) {
            pb_1.Message.setOneofWrapperField(this, 6, this.#one_of_decls[0], value);
        }
        get has_init_chain() {
            return pb_1.Message.getField(this, 6) != null;
        }
        get query() {
            return pb_1.Message.getWrapperField(this, ResponseQuery, 7) as ResponseQuery;
        }
        set query(value: ResponseQuery) {
            pb_1.Message.setOneofWrapperField(this, 7, this.#one_of_decls[0], value);
        }
        get has_query() {
            return pb_1.Message.getField(this, 7) != null;
        }
        get check_tx() {
            return pb_1.Message.getWrapperField(this, ResponseCheckTx, 9) as ResponseCheckTx;
        }
        set check_tx(value: ResponseCheckTx) {
            pb_1.Message.setOneofWrapperField(this, 9, this.#one_of_decls[0], value);
        }
        get has_check_tx() {
            return pb_1.Message.getField(this, 9) != null;
        }
        get commit() {
            return pb_1.Message.getWrapperField(this, ResponseCommit, 12) as ResponseCommit;
        }
        set commit(value: ResponseCommit) {
            pb_1.Message.setOneofWrapperField(this, 12, this.#one_of_decls[0], value);
        }
        get has_commit() {
            return pb_1.Message.getField(this, 12) != null;
        }
        get list_snapshots() {
            return pb_1.Message.getWrapperField(this, ResponseListSnapshots, 13) as ResponseListSnapshots;
        }
        set list_snapshots(value: ResponseListSnapshots) {
            pb_1.Message.setOneofWrapperField(this, 13, this.#one_of_decls[0], value);
        }
        get has_list_snapshots() {
            return pb_1.Message.getField(this, 13) != null;
        }
        get offer_snapshot() {
            return pb_1.Message.getWrapperField(this, ResponseOfferSnapshot, 14) as ResponseOfferSnapshot;
        }
        set offer_snapshot(value: ResponseOfferSnapshot) {
            pb_1.Message.setOneofWrapperField(this, 14, this.#one_of_decls[0], value);
        }
        get has_offer_snapshot() {
            return pb_1.Message.getField(this, 14) != null;
        }
        get load_snapshot_chunk() {
            return pb_1.Message.getWrapperField(this, ResponseLoadSnapshotChunk, 15) as ResponseLoadSnapshotChunk;
        }
        set load_snapshot_chunk(value: ResponseLoadSnapshotChunk) {
            pb_1.Message.setOneofWrapperField(this, 15, this.#one_of_decls[0], value);
        }
        get has_load_snapshot_chunk() {
            return pb_1.Message.getField(this, 15) != null;
        }
        get apply_snapshot_chunk() {
            return pb_1.Message.getWrapperField(this, ResponseApplySnapshotChunk, 16) as ResponseApplySnapshotChunk;
        }
        set apply_snapshot_chunk(value: ResponseApplySnapshotChunk) {
            pb_1.Message.setOneofWrapperField(this, 16, this.#one_of_decls[0], value);
        }
        get has_apply_snapshot_chunk() {
            return pb_1.Message.getField(this, 16) != null;
        }
        get prepare_proposal() {
            return pb_1.Message.getWrapperField(this, ResponsePrepareProposal, 17) as ResponsePrepareProposal;
        }
        set prepare_proposal(value: ResponsePrepareProposal) {
            pb_1.Message.setOneofWrapperField(this, 17, this.#one_of_decls[0], value);
        }
        get has_prepare_proposal() {
            return pb_1.Message.getField(this, 17) != null;
        }
        get process_proposal() {
            return pb_1.Message.getWrapperField(this, ResponseProcessProposal, 18) as ResponseProcessProposal;
        }
        set process_proposal(value: ResponseProcessProposal) {
            pb_1.Message.setOneofWrapperField(this, 18, this.#one_of_decls[0], value);
        }
        get has_process_proposal() {
            return pb_1.Message.getField(this, 18) != null;
        }
        get extend_vote() {
            return pb_1.Message.getWrapperField(this, ResponseExtendVote, 19) as ResponseExtendVote;
        }
        set extend_vote(value: ResponseExtendVote) {
            pb_1.Message.setOneofWrapperField(this, 19, this.#one_of_decls[0], value);
        }
        get has_extend_vote() {
            return pb_1.Message.getField(this, 19) != null;
        }
        get verify_vote_extension() {
            return pb_1.Message.getWrapperField(this, ResponseVerifyVoteExtension, 20) as ResponseVerifyVoteExtension;
        }
        set verify_vote_extension(value: ResponseVerifyVoteExtension) {
            pb_1.Message.setOneofWrapperField(this, 20, this.#one_of_decls[0], value);
        }
        get has_verify_vote_extension() {
            return pb_1.Message.getField(this, 20) != null;
        }
        get finalize_block() {
            return pb_1.Message.getWrapperField(this, ResponseFinalizeBlock, 21) as ResponseFinalizeBlock;
        }
        set finalize_block(value: ResponseFinalizeBlock) {
            pb_1.Message.setOneofWrapperField(this, 21, this.#one_of_decls[0], value);
        }
        get has_finalize_block() {
            return pb_1.Message.getField(this, 21) != null;
        }
        get value() {
            const cases: {
                [index: number]: "none" | "exception" | "echo" | "flush" | "info" | "init_chain" | "query" | "check_tx" | "commit" | "list_snapshots" | "offer_snapshot" | "load_snapshot_chunk" | "apply_snapshot_chunk" | "prepare_proposal" | "process_proposal" | "extend_vote" | "verify_vote_extension" | "finalize_block";
            } = {
                0: "none",
                1: "exception",
                2: "echo",
                3: "flush",
                4: "info",
                6: "init_chain",
                7: "query",
                9: "check_tx",
                12: "commit",
                13: "list_snapshots",
                14: "offer_snapshot",
                15: "load_snapshot_chunk",
                16: "apply_snapshot_chunk",
                17: "prepare_proposal",
                18: "process_proposal",
                19: "extend_vote",
                20: "verify_vote_extension",
                21: "finalize_block"
            };
            return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3, 4, 6, 7, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21])];
        }
        static fromObject(data: {
            exception?: ReturnType<typeof ResponseException.prototype.toObject>;
            echo?: ReturnType<typeof ResponseEcho.prototype.toObject>;
            flush?: ReturnType<typeof ResponseFlush.prototype.toObject>;
            info?: ReturnType<typeof ResponseInfo.prototype.toObject>;
            init_chain?: ReturnType<typeof ResponseInitChain.prototype.toObject>;
            query?: ReturnType<typeof ResponseQuery.prototype.toObject>;
            check_tx?: ReturnType<typeof ResponseCheckTx.prototype.toObject>;
            commit?: ReturnType<typeof ResponseCommit.prototype.toObject>;
            list_snapshots?: ReturnType<typeof ResponseListSnapshots.prototype.toObject>;
            offer_snapshot?: ReturnType<typeof ResponseOfferSnapshot.prototype.toObject>;
            load_snapshot_chunk?: ReturnType<typeof ResponseLoadSnapshotChunk.prototype.toObject>;
            apply_snapshot_chunk?: ReturnType<typeof ResponseApplySnapshotChunk.prototype.toObject>;
            prepare_proposal?: ReturnType<typeof ResponsePrepareProposal.prototype.toObject>;
            process_proposal?: ReturnType<typeof ResponseProcessProposal.prototype.toObject>;
            extend_vote?: ReturnType<typeof ResponseExtendVote.prototype.toObject>;
            verify_vote_extension?: ReturnType<typeof ResponseVerifyVoteExtension.prototype.toObject>;
            finalize_block?: ReturnType<typeof ResponseFinalizeBlock.prototype.toObject>;
        }): Response {
            const message = new Response({});
            if (data.exception != null) {
                message.exception = ResponseException.fromObject(data.exception);
            }
            if (data.echo != null) {
                message.echo = ResponseEcho.fromObject(data.echo);
            }
            if (data.flush != null) {
                message.flush = ResponseFlush.fromObject(data.flush);
            }
            if (data.info != null) {
                message.info = ResponseInfo.fromObject(data.info);
            }
            if (data.init_chain != null) {
                message.init_chain = ResponseInitChain.fromObject(data.init_chain);
            }
            if (data.query != null) {
                message.query = ResponseQuery.fromObject(data.query);
            }
            if (data.check_tx != null) {
                message.check_tx = ResponseCheckTx.fromObject(data.check_tx);
            }
            if (data.commit != null) {
                message.commit = ResponseCommit.fromObject(data.commit);
            }
            if (data.list_snapshots != null) {
                message.list_snapshots = ResponseListSnapshots.fromObject(data.list_snapshots);
            }
            if (data.offer_snapshot != null) {
                message.offer_snapshot = ResponseOfferSnapshot.fromObject(data.offer_snapshot);
            }
            if (data.load_snapshot_chunk != null) {
                message.load_snapshot_chunk = ResponseLoadSnapshotChunk.fromObject(data.load_snapshot_chunk);
            }
            if (data.apply_snapshot_chunk != null) {
                message.apply_snapshot_chunk = ResponseApplySnapshotChunk.fromObject(data.apply_snapshot_chunk);
            }
            if (data.prepare_proposal != null) {
                message.prepare_proposal = ResponsePrepareProposal.fromObject(data.prepare_proposal);
            }
            if (data.process_proposal != null) {
                message.process_proposal = ResponseProcessProposal.fromObject(data.process_proposal);
            }
            if (data.extend_vote != null) {
                message.extend_vote = ResponseExtendVote.fromObject(data.extend_vote);
            }
            if (data.verify_vote_extension != null) {
                message.verify_vote_extension = ResponseVerifyVoteExtension.fromObject(data.verify_vote_extension);
            }
            if (data.finalize_block != null) {
                message.finalize_block = ResponseFinalizeBlock.fromObject(data.finalize_block);
            }
            return message;
        }
        toObject() {
            const data: {
                exception?: ReturnType<typeof ResponseException.prototype.toObject>;
                echo?: ReturnType<typeof ResponseEcho.prototype.toObject>;
                flush?: ReturnType<typeof ResponseFlush.prototype.toObject>;
                info?: ReturnType<typeof ResponseInfo.prototype.toObject>;
                init_chain?: ReturnType<typeof ResponseInitChain.prototype.toObject>;
                query?: ReturnType<typeof ResponseQuery.prototype.toObject>;
                check_tx?: ReturnType<typeof ResponseCheckTx.prototype.toObject>;
                commit?: ReturnType<typeof ResponseCommit.prototype.toObject>;
                list_snapshots?: ReturnType<typeof ResponseListSnapshots.prototype.toObject>;
                offer_snapshot?: ReturnType<typeof ResponseOfferSnapshot.prototype.toObject>;
                load_snapshot_chunk?: ReturnType<typeof ResponseLoadSnapshotChunk.prototype.toObject>;
                apply_snapshot_chunk?: ReturnType<typeof ResponseApplySnapshotChunk.prototype.toObject>;
                prepare_proposal?: ReturnType<typeof ResponsePrepareProposal.prototype.toObject>;
                process_proposal?: ReturnType<typeof ResponseProcessProposal.prototype.toObject>;
                extend_vote?: ReturnType<typeof ResponseExtendVote.prototype.toObject>;
                verify_vote_extension?: ReturnType<typeof ResponseVerifyVoteExtension.prototype.toObject>;
                finalize_block?: ReturnType<typeof ResponseFinalizeBlock.prototype.toObject>;
            } = {};
            if (this.exception != null) {
                data.exception = this.exception.toObject();
            }
            if (this.echo != null) {
                data.echo = this.echo.toObject();
            }
            if (this.flush != null) {
                data.flush = this.flush.toObject();
            }
            if (this.info != null) {
                data.info = this.info.toObject();
            }
            if (this.init_chain != null) {
                data.init_chain = this.init_chain.toObject();
            }
            if (this.query != null) {
                data.query = this.query.toObject();
            }
            if (this.check_tx != null) {
                data.check_tx = this.check_tx.toObject();
            }
            if (this.commit != null) {
                data.commit = this.commit.toObject();
            }
            if (this.list_snapshots != null) {
                data.list_snapshots = this.list_snapshots.toObject();
            }
            if (this.offer_snapshot != null) {
                data.offer_snapshot = this.offer_snapshot.toObject();
            }
            if (this.load_snapshot_chunk != null) {
                data.load_snapshot_chunk = this.load_snapshot_chunk.toObject();
            }
            if (this.apply_snapshot_chunk != null) {
                data.apply_snapshot_chunk = this.apply_snapshot_chunk.toObject();
            }
            if (this.prepare_proposal != null) {
                data.prepare_proposal = this.prepare_proposal.toObject();
            }
            if (this.process_proposal != null) {
                data.process_proposal = this.process_proposal.toObject();
            }
            if (this.extend_vote != null) {
                data.extend_vote = this.extend_vote.toObject();
            }
            if (this.verify_vote_extension != null) {
                data.verify_vote_extension = this.verify_vote_extension.toObject();
            }
            if (this.finalize_block != null) {
                data.finalize_block = this.finalize_block.toObject();
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.has_exception)
                writer.writeMessage(1, this.exception, () => this.exception.serialize(writer));
            if (this.has_echo)
                writer.writeMessage(2, this.echo, () => this.echo.serialize(writer));
            if (this.has_flush)
                writer.writeMessage(3, this.flush, () => this.flush.serialize(writer));
            if (this.has_info)
                writer.writeMessage(4, this.info, () => this.info.serialize(writer));
            if (this.has_init_chain)
                writer.writeMessage(6, this.init_chain, () => this.init_chain.serialize(writer));
            if (this.has_query)
                writer.writeMessage(7, this.query, () => this.query.serialize(writer));
            if (this.has_check_tx)
                writer.writeMessage(9, this.check_tx, () => this.check_tx.serialize(writer));
            if (this.has_commit)
                writer.writeMessage(12, this.commit, () => this.commit.serialize(writer));
            if (this.has_list_snapshots)
                writer.writeMessage(13, this.list_snapshots, () => this.list_snapshots.serialize(writer));
            if (this.has_offer_snapshot)
                writer.writeMessage(14, this.offer_snapshot, () => this.offer_snapshot.serialize(writer));
            if (this.has_load_snapshot_chunk)
                writer.writeMessage(15, this.load_snapshot_chunk, () => this.load_snapshot_chunk.serialize(writer));
            if (this.has_apply_snapshot_chunk)
                writer.writeMessage(16, this.apply_snapshot_chunk, () => this.apply_snapshot_chunk.serialize(writer));
            if (this.has_prepare_proposal)
                writer.writeMessage(17, this.prepare_proposal, () => this.prepare_proposal.serialize(writer));
            if (this.has_process_proposal)
                writer.writeMessage(18, this.process_proposal, () => this.process_proposal.serialize(writer));
            if (this.has_extend_vote)
                writer.writeMessage(19, this.extend_vote, () => this.extend_vote.serialize(writer));
            if (this.has_verify_vote_extension)
                writer.writeMessage(20, this.verify_vote_extension, () => this.verify_vote_extension.serialize(writer));
            if (this.has_finalize_block)
                writer.writeMessage(21, this.finalize_block, () => this.finalize_block.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Response {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Response();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.exception, () => message.exception = ResponseException.deserialize(reader));
                        break;
                    case 2:
                        reader.readMessage(message.echo, () => message.echo = ResponseEcho.deserialize(reader));
                        break;
                    case 3:
                        reader.readMessage(message.flush, () => message.flush = ResponseFlush.deserialize(reader));
                        break;
                    case 4:
                        reader.readMessage(message.info, () => message.info = ResponseInfo.deserialize(reader));
                        break;
                    case 6:
                        reader.readMessage(message.init_chain, () => message.init_chain = ResponseInitChain.deserialize(reader));
                        break;
                    case 7:
                        reader.readMessage(message.query, () => message.query = ResponseQuery.deserialize(reader));
                        break;
                    case 9:
                        reader.readMessage(message.check_tx, () => message.check_tx = ResponseCheckTx.deserialize(reader));
                        break;
                    case 12:
                        reader.readMessage(message.commit, () => message.commit = ResponseCommit.deserialize(reader));
                        break;
                    case 13:
                        reader.readMessage(message.list_snapshots, () => message.list_snapshots = ResponseListSnapshots.deserialize(reader));
                        break;
                    case 14:
                        reader.readMessage(message.offer_snapshot, () => message.offer_snapshot = ResponseOfferSnapshot.deserialize(reader));
                        break;
                    case 15:
                        reader.readMessage(message.load_snapshot_chunk, () => message.load_snapshot_chunk = ResponseLoadSnapshotChunk.deserialize(reader));
                        break;
                    case 16:
                        reader.readMessage(message.apply_snapshot_chunk, () => message.apply_snapshot_chunk = ResponseApplySnapshotChunk.deserialize(reader));
                        break;
                    case 17:
                        reader.readMessage(message.prepare_proposal, () => message.prepare_proposal = ResponsePrepareProposal.deserialize(reader));
                        break;
                    case 18:
                        reader.readMessage(message.process_proposal, () => message.process_proposal = ResponseProcessProposal.deserialize(reader));
                        break;
                    case 19:
                        reader.readMessage(message.extend_vote, () => message.extend_vote = ResponseExtendVote.deserialize(reader));
                        break;
                    case 20:
                        reader.readMessage(message.verify_vote_extension, () => message.verify_vote_extension = ResponseVerifyVoteExtension.deserialize(reader));
                        break;
                    case 21:
                        reader.readMessage(message.finalize_block, () => message.finalize_block = ResponseFinalizeBlock.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Response {
            return Response.deserialize(bytes);
        }
    }
    export class ResponseException extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            error?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("error" in data && data.error != undefined) {
                    this.error = data.error;
                }
            }
        }
        get error() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set error(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            error?: string;
        }): ResponseException {
            const message = new ResponseException({});
            if (data.error != null) {
                message.error = data.error;
            }
            return message;
        }
        toObject() {
            const data: {
                error?: string;
            } = {};
            if (this.error != null) {
                data.error = this.error;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.error.length)
                writer.writeString(1, this.error);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseException {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseException();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.error = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseException {
            return ResponseException.deserialize(bytes);
        }
    }
    export class ResponseEcho extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            message?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("message" in data && data.message != undefined) {
                    this.message = data.message;
                }
            }
        }
        get message() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set message(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            message?: string;
        }): ResponseEcho {
            const message = new ResponseEcho({});
            if (data.message != null) {
                message.message = data.message;
            }
            return message;
        }
        toObject() {
            const data: {
                message?: string;
            } = {};
            if (this.message != null) {
                data.message = this.message;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.message.length)
                writer.writeString(1, this.message);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseEcho {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseEcho();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.message = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseEcho {
            return ResponseEcho.deserialize(bytes);
        }
    }
    export class ResponseFlush extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {}) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") { }
        }
        static fromObject(data: {}): ResponseFlush {
            const message = new ResponseFlush({});
            return message;
        }
        toObject() {
            const data: {} = {};
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseFlush {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseFlush();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseFlush {
            return ResponseFlush.deserialize(bytes);
        }
    }
    export class ResponseInfo extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            data?: string;
            version?: string;
            app_version?: number;
            last_block_height?: number;
            last_block_app_hash?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("data" in data && data.data != undefined) {
                    this.data = data.data;
                }
                if ("version" in data && data.version != undefined) {
                    this.version = data.version;
                }
                if ("app_version" in data && data.app_version != undefined) {
                    this.app_version = data.app_version;
                }
                if ("last_block_height" in data && data.last_block_height != undefined) {
                    this.last_block_height = data.last_block_height;
                }
                if ("last_block_app_hash" in data && data.last_block_app_hash != undefined) {
                    this.last_block_app_hash = data.last_block_app_hash;
                }
            }
        }
        get data() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set data(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        get version() {
            return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
        }
        set version(value: string) {
            pb_1.Message.setField(this, 2, value);
        }
        get app_version() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set app_version(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get last_block_height() {
            return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
        }
        set last_block_height(value: number) {
            pb_1.Message.setField(this, 4, value);
        }
        get last_block_app_hash() {
            return pb_1.Message.getFieldWithDefault(this, 5, new Uint8Array(0)) as Uint8Array;
        }
        set last_block_app_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 5, value);
        }
        static fromObject(data: {
            data?: string;
            version?: string;
            app_version?: number;
            last_block_height?: number;
            last_block_app_hash?: Uint8Array;
        }): ResponseInfo {
            const message = new ResponseInfo({});
            if (data.data != null) {
                message.data = data.data;
            }
            if (data.version != null) {
                message.version = data.version;
            }
            if (data.app_version != null) {
                message.app_version = data.app_version;
            }
            if (data.last_block_height != null) {
                message.last_block_height = data.last_block_height;
            }
            if (data.last_block_app_hash != null) {
                message.last_block_app_hash = data.last_block_app_hash;
            }
            return message;
        }
        toObject() {
            const data: {
                data?: string;
                version?: string;
                app_version?: number;
                last_block_height?: number;
                last_block_app_hash?: Uint8Array;
            } = {};
            if (this.data != null) {
                data.data = this.data;
            }
            if (this.version != null) {
                data.version = this.version;
            }
            if (this.app_version != null) {
                data.app_version = this.app_version;
            }
            if (this.last_block_height != null) {
                data.last_block_height = this.last_block_height;
            }
            if (this.last_block_app_hash != null) {
                data.last_block_app_hash = this.last_block_app_hash;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.data.length)
                writer.writeString(1, this.data);
            if (this.version.length)
                writer.writeString(2, this.version);
            if (this.app_version != 0)
                writer.writeUint64(3, this.app_version);
            if (this.last_block_height != 0)
                writer.writeInt64(4, this.last_block_height);
            if (this.last_block_app_hash.length)
                writer.writeBytes(5, this.last_block_app_hash);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseInfo {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseInfo();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.data = reader.readString();
                        break;
                    case 2:
                        message.version = reader.readString();
                        break;
                    case 3:
                        message.app_version = reader.readUint64();
                        break;
                    case 4:
                        message.last_block_height = reader.readInt64();
                        break;
                    case 5:
                        message.last_block_app_hash = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseInfo {
            return ResponseInfo.deserialize(bytes);
        }
    }
    export class ResponseInitChain extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            consensus_params?: dependency_3.tendermint.types.ConsensusParams;
            validators?: ValidatorUpdate[];
            app_hash?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("consensus_params" in data && data.consensus_params != undefined) {
                    this.consensus_params = data.consensus_params;
                }
                if ("validators" in data && data.validators != undefined) {
                    this.validators = data.validators;
                }
                if ("app_hash" in data && data.app_hash != undefined) {
                    this.app_hash = data.app_hash;
                }
            }
        }
        get consensus_params() {
            return pb_1.Message.getWrapperField(this, dependency_3.tendermint.types.ConsensusParams, 1) as dependency_3.tendermint.types.ConsensusParams;
        }
        set consensus_params(value: dependency_3.tendermint.types.ConsensusParams) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_consensus_params() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get validators() {
            return pb_1.Message.getRepeatedWrapperField(this, ValidatorUpdate, 2) as ValidatorUpdate[];
        }
        set validators(value: ValidatorUpdate[]) {
            pb_1.Message.setRepeatedWrapperField(this, 2, value);
        }
        get app_hash() {
            return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array(0)) as Uint8Array;
        }
        set app_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            consensus_params?: ReturnType<typeof dependency_3.tendermint.types.ConsensusParams.prototype.toObject>;
            validators?: ReturnType<typeof ValidatorUpdate.prototype.toObject>[];
            app_hash?: Uint8Array;
        }): ResponseInitChain {
            const message = new ResponseInitChain({});
            if (data.consensus_params != null) {
                message.consensus_params = dependency_3.tendermint.types.ConsensusParams.fromObject(data.consensus_params);
            }
            if (data.validators != null) {
                message.validators = data.validators.map(item => ValidatorUpdate.fromObject(item));
            }
            if (data.app_hash != null) {
                message.app_hash = data.app_hash;
            }
            return message;
        }
        toObject() {
            const data: {
                consensus_params?: ReturnType<typeof dependency_3.tendermint.types.ConsensusParams.prototype.toObject>;
                validators?: ReturnType<typeof ValidatorUpdate.prototype.toObject>[];
                app_hash?: Uint8Array;
            } = {};
            if (this.consensus_params != null) {
                data.consensus_params = this.consensus_params.toObject();
            }
            if (this.validators != null) {
                data.validators = this.validators.map((item: ValidatorUpdate) => item.toObject());
            }
            if (this.app_hash != null) {
                data.app_hash = this.app_hash;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.has_consensus_params)
                writer.writeMessage(1, this.consensus_params, () => this.consensus_params.serialize(writer));
            if (this.validators.length)
                writer.writeRepeatedMessage(2, this.validators, (item: ValidatorUpdate) => item.serialize(writer));
            if (this.app_hash.length)
                writer.writeBytes(3, this.app_hash);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseInitChain {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseInitChain();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.consensus_params, () => message.consensus_params = dependency_3.tendermint.types.ConsensusParams.deserialize(reader));
                        break;
                    case 2:
                        reader.readMessage(message.validators, () => pb_1.Message.addToRepeatedWrapperField(message, 2, ValidatorUpdate.deserialize(reader), ValidatorUpdate));
                        break;
                    case 3:
                        message.app_hash = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseInitChain {
            return ResponseInitChain.deserialize(bytes);
        }
    }
    export class ResponseQuery extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            code?: number;
            log?: string;
            info?: string;
            index?: number;
            key?: Uint8Array;
            value?: Uint8Array;
            proof_ops?: dependency_1.tendermint.crypto.ProofOps;
            height?: number;
            codespace?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("code" in data && data.code != undefined) {
                    this.code = data.code;
                }
                if ("log" in data && data.log != undefined) {
                    this.log = data.log;
                }
                if ("info" in data && data.info != undefined) {
                    this.info = data.info;
                }
                if ("index" in data && data.index != undefined) {
                    this.index = data.index;
                }
                if ("key" in data && data.key != undefined) {
                    this.key = data.key;
                }
                if ("value" in data && data.value != undefined) {
                    this.value = data.value;
                }
                if ("proof_ops" in data && data.proof_ops != undefined) {
                    this.proof_ops = data.proof_ops;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("codespace" in data && data.codespace != undefined) {
                    this.codespace = data.codespace;
                }
            }
        }
        get code() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set code(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get log() {
            return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
        }
        set log(value: string) {
            pb_1.Message.setField(this, 3, value);
        }
        get info() {
            return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
        }
        set info(value: string) {
            pb_1.Message.setField(this, 4, value);
        }
        get index() {
            return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
        }
        set index(value: number) {
            pb_1.Message.setField(this, 5, value);
        }
        get key() {
            return pb_1.Message.getFieldWithDefault(this, 6, new Uint8Array(0)) as Uint8Array;
        }
        set key(value: Uint8Array) {
            pb_1.Message.setField(this, 6, value);
        }
        get value() {
            return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array(0)) as Uint8Array;
        }
        set value(value: Uint8Array) {
            pb_1.Message.setField(this, 7, value);
        }
        get proof_ops() {
            return pb_1.Message.getWrapperField(this, dependency_1.tendermint.crypto.ProofOps, 8) as dependency_1.tendermint.crypto.ProofOps;
        }
        set proof_ops(value: dependency_1.tendermint.crypto.ProofOps) {
            pb_1.Message.setWrapperField(this, 8, value);
        }
        get has_proof_ops() {
            return pb_1.Message.getField(this, 8) != null;
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 9, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 9, value);
        }
        get codespace() {
            return pb_1.Message.getFieldWithDefault(this, 10, "") as string;
        }
        set codespace(value: string) {
            pb_1.Message.setField(this, 10, value);
        }
        static fromObject(data: {
            code?: number;
            log?: string;
            info?: string;
            index?: number;
            key?: Uint8Array;
            value?: Uint8Array;
            proof_ops?: ReturnType<typeof dependency_1.tendermint.crypto.ProofOps.prototype.toObject>;
            height?: number;
            codespace?: string;
        }): ResponseQuery {
            const message = new ResponseQuery({});
            if (data.code != null) {
                message.code = data.code;
            }
            if (data.log != null) {
                message.log = data.log;
            }
            if (data.info != null) {
                message.info = data.info;
            }
            if (data.index != null) {
                message.index = data.index;
            }
            if (data.key != null) {
                message.key = data.key;
            }
            if (data.value != null) {
                message.value = data.value;
            }
            if (data.proof_ops != null) {
                message.proof_ops = dependency_1.tendermint.crypto.ProofOps.fromObject(data.proof_ops);
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.codespace != null) {
                message.codespace = data.codespace;
            }
            return message;
        }
        toObject() {
            const data: {
                code?: number;
                log?: string;
                info?: string;
                index?: number;
                key?: Uint8Array;
                value?: Uint8Array;
                proof_ops?: ReturnType<typeof dependency_1.tendermint.crypto.ProofOps.prototype.toObject>;
                height?: number;
                codespace?: string;
            } = {};
            if (this.code != null) {
                data.code = this.code;
            }
            if (this.log != null) {
                data.log = this.log;
            }
            if (this.info != null) {
                data.info = this.info;
            }
            if (this.index != null) {
                data.index = this.index;
            }
            if (this.key != null) {
                data.key = this.key;
            }
            if (this.value != null) {
                data.value = this.value;
            }
            if (this.proof_ops != null) {
                data.proof_ops = this.proof_ops.toObject();
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.codespace != null) {
                data.codespace = this.codespace;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.code != 0)
                writer.writeUint32(1, this.code);
            if (this.log.length)
                writer.writeString(3, this.log);
            if (this.info.length)
                writer.writeString(4, this.info);
            if (this.index != 0)
                writer.writeInt64(5, this.index);
            if (this.key.length)
                writer.writeBytes(6, this.key);
            if (this.value.length)
                writer.writeBytes(7, this.value);
            if (this.has_proof_ops)
                writer.writeMessage(8, this.proof_ops, () => this.proof_ops.serialize(writer));
            if (this.height != 0)
                writer.writeInt64(9, this.height);
            if (this.codespace.length)
                writer.writeString(10, this.codespace);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseQuery {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseQuery();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.code = reader.readUint32();
                        break;
                    case 3:
                        message.log = reader.readString();
                        break;
                    case 4:
                        message.info = reader.readString();
                        break;
                    case 5:
                        message.index = reader.readInt64();
                        break;
                    case 6:
                        message.key = reader.readBytes();
                        break;
                    case 7:
                        message.value = reader.readBytes();
                        break;
                    case 8:
                        reader.readMessage(message.proof_ops, () => message.proof_ops = dependency_1.tendermint.crypto.ProofOps.deserialize(reader));
                        break;
                    case 9:
                        message.height = reader.readInt64();
                        break;
                    case 10:
                        message.codespace = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseQuery {
            return ResponseQuery.deserialize(bytes);
        }
    }
    export class ResponseCheckTx extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            code?: number;
            data?: Uint8Array;
            log?: string;
            info?: string;
            gas_wanted?: number;
            gas_used?: number;
            events?: Event[];
            codespace?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [7], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("code" in data && data.code != undefined) {
                    this.code = data.code;
                }
                if ("data" in data && data.data != undefined) {
                    this.data = data.data;
                }
                if ("log" in data && data.log != undefined) {
                    this.log = data.log;
                }
                if ("info" in data && data.info != undefined) {
                    this.info = data.info;
                }
                if ("gas_wanted" in data && data.gas_wanted != undefined) {
                    this.gas_wanted = data.gas_wanted;
                }
                if ("gas_used" in data && data.gas_used != undefined) {
                    this.gas_used = data.gas_used;
                }
                if ("events" in data && data.events != undefined) {
                    this.events = data.events;
                }
                if ("codespace" in data && data.codespace != undefined) {
                    this.codespace = data.codespace;
                }
            }
        }
        get code() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set code(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get data() {
            return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
        }
        set data(value: Uint8Array) {
            pb_1.Message.setField(this, 2, value);
        }
        get log() {
            return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
        }
        set log(value: string) {
            pb_1.Message.setField(this, 3, value);
        }
        get info() {
            return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
        }
        set info(value: string) {
            pb_1.Message.setField(this, 4, value);
        }
        get gas_wanted() {
            return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
        }
        set gas_wanted(value: number) {
            pb_1.Message.setField(this, 5, value);
        }
        get gas_used() {
            return pb_1.Message.getFieldWithDefault(this, 6, 0) as number;
        }
        set gas_used(value: number) {
            pb_1.Message.setField(this, 6, value);
        }
        get events() {
            return pb_1.Message.getRepeatedWrapperField(this, Event, 7) as Event[];
        }
        set events(value: Event[]) {
            pb_1.Message.setRepeatedWrapperField(this, 7, value);
        }
        get codespace() {
            return pb_1.Message.getFieldWithDefault(this, 8, "") as string;
        }
        set codespace(value: string) {
            pb_1.Message.setField(this, 8, value);
        }
        static fromObject(data: {
            code?: number;
            data?: Uint8Array;
            log?: string;
            info?: string;
            gas_wanted?: number;
            gas_used?: number;
            events?: ReturnType<typeof Event.prototype.toObject>[];
            codespace?: string;
        }): ResponseCheckTx {
            const message = new ResponseCheckTx({});
            if (data.code != null) {
                message.code = data.code;
            }
            if (data.data != null) {
                message.data = data.data;
            }
            if (data.log != null) {
                message.log = data.log;
            }
            if (data.info != null) {
                message.info = data.info;
            }
            if (data.gas_wanted != null) {
                message.gas_wanted = data.gas_wanted;
            }
            if (data.gas_used != null) {
                message.gas_used = data.gas_used;
            }
            if (data.events != null) {
                message.events = data.events.map(item => Event.fromObject(item));
            }
            if (data.codespace != null) {
                message.codespace = data.codespace;
            }
            return message;
        }
        toObject() {
            const data: {
                code?: number;
                data?: Uint8Array;
                log?: string;
                info?: string;
                gas_wanted?: number;
                gas_used?: number;
                events?: ReturnType<typeof Event.prototype.toObject>[];
                codespace?: string;
            } = {};
            if (this.code != null) {
                data.code = this.code;
            }
            if (this.data != null) {
                data.data = this.data;
            }
            if (this.log != null) {
                data.log = this.log;
            }
            if (this.info != null) {
                data.info = this.info;
            }
            if (this.gas_wanted != null) {
                data.gas_wanted = this.gas_wanted;
            }
            if (this.gas_used != null) {
                data.gas_used = this.gas_used;
            }
            if (this.events != null) {
                data.events = this.events.map((item: Event) => item.toObject());
            }
            if (this.codespace != null) {
                data.codespace = this.codespace;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.code != 0)
                writer.writeUint32(1, this.code);
            if (this.data.length)
                writer.writeBytes(2, this.data);
            if (this.log.length)
                writer.writeString(3, this.log);
            if (this.info.length)
                writer.writeString(4, this.info);
            if (this.gas_wanted != 0)
                writer.writeInt64(5, this.gas_wanted);
            if (this.gas_used != 0)
                writer.writeInt64(6, this.gas_used);
            if (this.events.length)
                writer.writeRepeatedMessage(7, this.events, (item: Event) => item.serialize(writer));
            if (this.codespace.length)
                writer.writeString(8, this.codespace);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseCheckTx {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseCheckTx();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.code = reader.readUint32();
                        break;
                    case 2:
                        message.data = reader.readBytes();
                        break;
                    case 3:
                        message.log = reader.readString();
                        break;
                    case 4:
                        message.info = reader.readString();
                        break;
                    case 5:
                        message.gas_wanted = reader.readInt64();
                        break;
                    case 6:
                        message.gas_used = reader.readInt64();
                        break;
                    case 7:
                        reader.readMessage(message.events, () => pb_1.Message.addToRepeatedWrapperField(message, 7, Event.deserialize(reader), Event));
                        break;
                    case 8:
                        message.codespace = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseCheckTx {
            return ResponseCheckTx.deserialize(bytes);
        }
    }
    export class ResponseCommit extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            retain_height?: number;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("retain_height" in data && data.retain_height != undefined) {
                    this.retain_height = data.retain_height;
                }
            }
        }
        get retain_height() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set retain_height(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            retain_height?: number;
        }): ResponseCommit {
            const message = new ResponseCommit({});
            if (data.retain_height != null) {
                message.retain_height = data.retain_height;
            }
            return message;
        }
        toObject() {
            const data: {
                retain_height?: number;
            } = {};
            if (this.retain_height != null) {
                data.retain_height = this.retain_height;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.retain_height != 0)
                writer.writeInt64(3, this.retain_height);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseCommit {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseCommit();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 3:
                        message.retain_height = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseCommit {
            return ResponseCommit.deserialize(bytes);
        }
    }
    export class ResponseListSnapshots extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            snapshots?: Snapshot[];
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("snapshots" in data && data.snapshots != undefined) {
                    this.snapshots = data.snapshots;
                }
            }
        }
        get snapshots() {
            return pb_1.Message.getRepeatedWrapperField(this, Snapshot, 1) as Snapshot[];
        }
        set snapshots(value: Snapshot[]) {
            pb_1.Message.setRepeatedWrapperField(this, 1, value);
        }
        static fromObject(data: {
            snapshots?: ReturnType<typeof Snapshot.prototype.toObject>[];
        }): ResponseListSnapshots {
            const message = new ResponseListSnapshots({});
            if (data.snapshots != null) {
                message.snapshots = data.snapshots.map(item => Snapshot.fromObject(item));
            }
            return message;
        }
        toObject() {
            const data: {
                snapshots?: ReturnType<typeof Snapshot.prototype.toObject>[];
            } = {};
            if (this.snapshots != null) {
                data.snapshots = this.snapshots.map((item: Snapshot) => item.toObject());
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.snapshots.length)
                writer.writeRepeatedMessage(1, this.snapshots, (item: Snapshot) => item.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseListSnapshots {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseListSnapshots();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.snapshots, () => pb_1.Message.addToRepeatedWrapperField(message, 1, Snapshot.deserialize(reader), Snapshot));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseListSnapshots {
            return ResponseListSnapshots.deserialize(bytes);
        }
    }
    export class ResponseOfferSnapshot extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            result?: ResponseOfferSnapshot.Result;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("result" in data && data.result != undefined) {
                    this.result = data.result;
                }
            }
        }
        get result() {
            return pb_1.Message.getFieldWithDefault(this, 1, ResponseOfferSnapshot.Result.UNKNOWN) as ResponseOfferSnapshot.Result;
        }
        set result(value: ResponseOfferSnapshot.Result) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            result?: ResponseOfferSnapshot.Result;
        }): ResponseOfferSnapshot {
            const message = new ResponseOfferSnapshot({});
            if (data.result != null) {
                message.result = data.result;
            }
            return message;
        }
        toObject() {
            const data: {
                result?: ResponseOfferSnapshot.Result;
            } = {};
            if (this.result != null) {
                data.result = this.result;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.result != ResponseOfferSnapshot.Result.UNKNOWN)
                writer.writeEnum(1, this.result);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseOfferSnapshot {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseOfferSnapshot();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.result = reader.readEnum();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseOfferSnapshot {
            return ResponseOfferSnapshot.deserialize(bytes);
        }
    }
    export namespace ResponseOfferSnapshot {
        export enum Result {
            UNKNOWN = 0,
            ACCEPT = 1,
            ABORT = 2,
            REJECT = 3,
            REJECT_FORMAT = 4,
            REJECT_SENDER = 5
        }
    }
    export class ResponseLoadSnapshotChunk extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            chunk?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("chunk" in data && data.chunk != undefined) {
                    this.chunk = data.chunk;
                }
            }
        }
        get chunk() {
            return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
        }
        set chunk(value: Uint8Array) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            chunk?: Uint8Array;
        }): ResponseLoadSnapshotChunk {
            const message = new ResponseLoadSnapshotChunk({});
            if (data.chunk != null) {
                message.chunk = data.chunk;
            }
            return message;
        }
        toObject() {
            const data: {
                chunk?: Uint8Array;
            } = {};
            if (this.chunk != null) {
                data.chunk = this.chunk;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.chunk.length)
                writer.writeBytes(1, this.chunk);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseLoadSnapshotChunk {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseLoadSnapshotChunk();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.chunk = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseLoadSnapshotChunk {
            return ResponseLoadSnapshotChunk.deserialize(bytes);
        }
    }
    export class ResponseApplySnapshotChunk extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            result?: ResponseApplySnapshotChunk.Result;
            refetch_chunks?: number[];
            reject_senders?: string[];
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 3], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("result" in data && data.result != undefined) {
                    this.result = data.result;
                }
                if ("refetch_chunks" in data && data.refetch_chunks != undefined) {
                    this.refetch_chunks = data.refetch_chunks;
                }
                if ("reject_senders" in data && data.reject_senders != undefined) {
                    this.reject_senders = data.reject_senders;
                }
            }
        }
        get result() {
            return pb_1.Message.getFieldWithDefault(this, 1, ResponseApplySnapshotChunk.Result.UNKNOWN) as ResponseApplySnapshotChunk.Result;
        }
        set result(value: ResponseApplySnapshotChunk.Result) {
            pb_1.Message.setField(this, 1, value);
        }
        get refetch_chunks() {
            return pb_1.Message.getFieldWithDefault(this, 2, []) as number[];
        }
        set refetch_chunks(value: number[]) {
            pb_1.Message.setField(this, 2, value);
        }
        get reject_senders() {
            return pb_1.Message.getFieldWithDefault(this, 3, []) as string[];
        }
        set reject_senders(value: string[]) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            result?: ResponseApplySnapshotChunk.Result;
            refetch_chunks?: number[];
            reject_senders?: string[];
        }): ResponseApplySnapshotChunk {
            const message = new ResponseApplySnapshotChunk({});
            if (data.result != null) {
                message.result = data.result;
            }
            if (data.refetch_chunks != null) {
                message.refetch_chunks = data.refetch_chunks;
            }
            if (data.reject_senders != null) {
                message.reject_senders = data.reject_senders;
            }
            return message;
        }
        toObject() {
            const data: {
                result?: ResponseApplySnapshotChunk.Result;
                refetch_chunks?: number[];
                reject_senders?: string[];
            } = {};
            if (this.result != null) {
                data.result = this.result;
            }
            if (this.refetch_chunks != null) {
                data.refetch_chunks = this.refetch_chunks;
            }
            if (this.reject_senders != null) {
                data.reject_senders = this.reject_senders;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.result != ResponseApplySnapshotChunk.Result.UNKNOWN)
                writer.writeEnum(1, this.result);
            if (this.refetch_chunks.length)
                writer.writePackedUint32(2, this.refetch_chunks);
            if (this.reject_senders.length)
                writer.writeRepeatedString(3, this.reject_senders);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseApplySnapshotChunk {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseApplySnapshotChunk();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.result = reader.readEnum();
                        break;
                    case 2:
                        message.refetch_chunks = reader.readPackedUint32();
                        break;
                    case 3:
                        pb_1.Message.addToRepeatedField(message, 3, reader.readString());
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseApplySnapshotChunk {
            return ResponseApplySnapshotChunk.deserialize(bytes);
        }
    }
    export namespace ResponseApplySnapshotChunk {
        export enum Result {
            UNKNOWN = 0,
            ACCEPT = 1,
            ABORT = 2,
            RETRY = 3,
            RETRY_SNAPSHOT = 4,
            REJECT_SNAPSHOT = 5
        }
    }
    export class ResponsePrepareProposal extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            txs?: Uint8Array[];
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("txs" in data && data.txs != undefined) {
                    this.txs = data.txs;
                }
            }
        }
        get txs() {
            return pb_1.Message.getFieldWithDefault(this, 1, []) as Uint8Array[];
        }
        set txs(value: Uint8Array[]) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            txs?: Uint8Array[];
        }): ResponsePrepareProposal {
            const message = new ResponsePrepareProposal({});
            if (data.txs != null) {
                message.txs = data.txs;
            }
            return message;
        }
        toObject() {
            const data: {
                txs?: Uint8Array[];
            } = {};
            if (this.txs != null) {
                data.txs = this.txs;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.txs.length)
                writer.writeRepeatedBytes(1, this.txs);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponsePrepareProposal {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponsePrepareProposal();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        pb_1.Message.addToRepeatedField(message, 1, reader.readBytes());
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponsePrepareProposal {
            return ResponsePrepareProposal.deserialize(bytes);
        }
    }
    export class ResponseProcessProposal extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            status?: ResponseProcessProposal.ProposalStatus;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("status" in data && data.status != undefined) {
                    this.status = data.status;
                }
            }
        }
        get status() {
            return pb_1.Message.getFieldWithDefault(this, 1, ResponseProcessProposal.ProposalStatus.UNKNOWN) as ResponseProcessProposal.ProposalStatus;
        }
        set status(value: ResponseProcessProposal.ProposalStatus) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            status?: ResponseProcessProposal.ProposalStatus;
        }): ResponseProcessProposal {
            const message = new ResponseProcessProposal({});
            if (data.status != null) {
                message.status = data.status;
            }
            return message;
        }
        toObject() {
            const data: {
                status?: ResponseProcessProposal.ProposalStatus;
            } = {};
            if (this.status != null) {
                data.status = this.status;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.status != ResponseProcessProposal.ProposalStatus.UNKNOWN)
                writer.writeEnum(1, this.status);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseProcessProposal {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseProcessProposal();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.status = reader.readEnum();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseProcessProposal {
            return ResponseProcessProposal.deserialize(bytes);
        }
    }
    export namespace ResponseProcessProposal {
        export enum ProposalStatus {
            UNKNOWN = 0,
            ACCEPT = 1,
            REJECT = 2
        }
    }
    export class ResponseExtendVote extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            vote_extension?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("vote_extension" in data && data.vote_extension != undefined) {
                    this.vote_extension = data.vote_extension;
                }
            }
        }
        get vote_extension() {
            return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
        }
        set vote_extension(value: Uint8Array) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            vote_extension?: Uint8Array;
        }): ResponseExtendVote {
            const message = new ResponseExtendVote({});
            if (data.vote_extension != null) {
                message.vote_extension = data.vote_extension;
            }
            return message;
        }
        toObject() {
            const data: {
                vote_extension?: Uint8Array;
            } = {};
            if (this.vote_extension != null) {
                data.vote_extension = this.vote_extension;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.vote_extension.length)
                writer.writeBytes(1, this.vote_extension);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseExtendVote {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseExtendVote();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.vote_extension = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseExtendVote {
            return ResponseExtendVote.deserialize(bytes);
        }
    }
    export class ResponseVerifyVoteExtension extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            status?: ResponseVerifyVoteExtension.VerifyStatus;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("status" in data && data.status != undefined) {
                    this.status = data.status;
                }
            }
        }
        get status() {
            return pb_1.Message.getFieldWithDefault(this, 1, ResponseVerifyVoteExtension.VerifyStatus.UNKNOWN) as ResponseVerifyVoteExtension.VerifyStatus;
        }
        set status(value: ResponseVerifyVoteExtension.VerifyStatus) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            status?: ResponseVerifyVoteExtension.VerifyStatus;
        }): ResponseVerifyVoteExtension {
            const message = new ResponseVerifyVoteExtension({});
            if (data.status != null) {
                message.status = data.status;
            }
            return message;
        }
        toObject() {
            const data: {
                status?: ResponseVerifyVoteExtension.VerifyStatus;
            } = {};
            if (this.status != null) {
                data.status = this.status;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.status != ResponseVerifyVoteExtension.VerifyStatus.UNKNOWN)
                writer.writeEnum(1, this.status);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseVerifyVoteExtension {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseVerifyVoteExtension();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.status = reader.readEnum();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseVerifyVoteExtension {
            return ResponseVerifyVoteExtension.deserialize(bytes);
        }
    }
    export namespace ResponseVerifyVoteExtension {
        export enum VerifyStatus {
            UNKNOWN = 0,
            ACCEPT = 1,
            REJECT = 2
        }
    }
    export class ResponseFinalizeBlock extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            events?: Event[];
            tx_results?: ExecTxResult[];
            validator_updates?: ValidatorUpdate[];
            consensus_param_updates?: dependency_3.tendermint.types.ConsensusParams;
            app_hash?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 2, 3], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("events" in data && data.events != undefined) {
                    this.events = data.events;
                }
                if ("tx_results" in data && data.tx_results != undefined) {
                    this.tx_results = data.tx_results;
                }
                if ("validator_updates" in data && data.validator_updates != undefined) {
                    this.validator_updates = data.validator_updates;
                }
                if ("consensus_param_updates" in data && data.consensus_param_updates != undefined) {
                    this.consensus_param_updates = data.consensus_param_updates;
                }
                if ("app_hash" in data && data.app_hash != undefined) {
                    this.app_hash = data.app_hash;
                }
            }
        }
        get events() {
            return pb_1.Message.getRepeatedWrapperField(this, Event, 1) as Event[];
        }
        set events(value: Event[]) {
            pb_1.Message.setRepeatedWrapperField(this, 1, value);
        }
        get tx_results() {
            return pb_1.Message.getRepeatedWrapperField(this, ExecTxResult, 2) as ExecTxResult[];
        }
        set tx_results(value: ExecTxResult[]) {
            pb_1.Message.setRepeatedWrapperField(this, 2, value);
        }
        get validator_updates() {
            return pb_1.Message.getRepeatedWrapperField(this, ValidatorUpdate, 3) as ValidatorUpdate[];
        }
        set validator_updates(value: ValidatorUpdate[]) {
            pb_1.Message.setRepeatedWrapperField(this, 3, value);
        }
        get consensus_param_updates() {
            return pb_1.Message.getWrapperField(this, dependency_3.tendermint.types.ConsensusParams, 4) as dependency_3.tendermint.types.ConsensusParams;
        }
        set consensus_param_updates(value: dependency_3.tendermint.types.ConsensusParams) {
            pb_1.Message.setWrapperField(this, 4, value);
        }
        get has_consensus_param_updates() {
            return pb_1.Message.getField(this, 4) != null;
        }
        get app_hash() {
            return pb_1.Message.getFieldWithDefault(this, 5, new Uint8Array(0)) as Uint8Array;
        }
        set app_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 5, value);
        }
        static fromObject(data: {
            events?: ReturnType<typeof Event.prototype.toObject>[];
            tx_results?: ReturnType<typeof ExecTxResult.prototype.toObject>[];
            validator_updates?: ReturnType<typeof ValidatorUpdate.prototype.toObject>[];
            consensus_param_updates?: ReturnType<typeof dependency_3.tendermint.types.ConsensusParams.prototype.toObject>;
            app_hash?: Uint8Array;
        }): ResponseFinalizeBlock {
            const message = new ResponseFinalizeBlock({});
            if (data.events != null) {
                message.events = data.events.map(item => Event.fromObject(item));
            }
            if (data.tx_results != null) {
                message.tx_results = data.tx_results.map(item => ExecTxResult.fromObject(item));
            }
            if (data.validator_updates != null) {
                message.validator_updates = data.validator_updates.map(item => ValidatorUpdate.fromObject(item));
            }
            if (data.consensus_param_updates != null) {
                message.consensus_param_updates = dependency_3.tendermint.types.ConsensusParams.fromObject(data.consensus_param_updates);
            }
            if (data.app_hash != null) {
                message.app_hash = data.app_hash;
            }
            return message;
        }
        toObject() {
            const data: {
                events?: ReturnType<typeof Event.prototype.toObject>[];
                tx_results?: ReturnType<typeof ExecTxResult.prototype.toObject>[];
                validator_updates?: ReturnType<typeof ValidatorUpdate.prototype.toObject>[];
                consensus_param_updates?: ReturnType<typeof dependency_3.tendermint.types.ConsensusParams.prototype.toObject>;
                app_hash?: Uint8Array;
            } = {};
            if (this.events != null) {
                data.events = this.events.map((item: Event) => item.toObject());
            }
            if (this.tx_results != null) {
                data.tx_results = this.tx_results.map((item: ExecTxResult) => item.toObject());
            }
            if (this.validator_updates != null) {
                data.validator_updates = this.validator_updates.map((item: ValidatorUpdate) => item.toObject());
            }
            if (this.consensus_param_updates != null) {
                data.consensus_param_updates = this.consensus_param_updates.toObject();
            }
            if (this.app_hash != null) {
                data.app_hash = this.app_hash;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.events.length)
                writer.writeRepeatedMessage(1, this.events, (item: Event) => item.serialize(writer));
            if (this.tx_results.length)
                writer.writeRepeatedMessage(2, this.tx_results, (item: ExecTxResult) => item.serialize(writer));
            if (this.validator_updates.length)
                writer.writeRepeatedMessage(3, this.validator_updates, (item: ValidatorUpdate) => item.serialize(writer));
            if (this.has_consensus_param_updates)
                writer.writeMessage(4, this.consensus_param_updates, () => this.consensus_param_updates.serialize(writer));
            if (this.app_hash.length)
                writer.writeBytes(5, this.app_hash);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResponseFinalizeBlock {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResponseFinalizeBlock();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.events, () => pb_1.Message.addToRepeatedWrapperField(message, 1, Event.deserialize(reader), Event));
                        break;
                    case 2:
                        reader.readMessage(message.tx_results, () => pb_1.Message.addToRepeatedWrapperField(message, 2, ExecTxResult.deserialize(reader), ExecTxResult));
                        break;
                    case 3:
                        reader.readMessage(message.validator_updates, () => pb_1.Message.addToRepeatedWrapperField(message, 3, ValidatorUpdate.deserialize(reader), ValidatorUpdate));
                        break;
                    case 4:
                        reader.readMessage(message.consensus_param_updates, () => message.consensus_param_updates = dependency_3.tendermint.types.ConsensusParams.deserialize(reader));
                        break;
                    case 5:
                        message.app_hash = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ResponseFinalizeBlock {
            return ResponseFinalizeBlock.deserialize(bytes);
        }
    }
    export class CommitInfo extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            round?: number;
            votes?: VoteInfo[];
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("round" in data && data.round != undefined) {
                    this.round = data.round;
                }
                if ("votes" in data && data.votes != undefined) {
                    this.votes = data.votes;
                }
            }
        }
        get round() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set round(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get votes() {
            return pb_1.Message.getRepeatedWrapperField(this, VoteInfo, 2) as VoteInfo[];
        }
        set votes(value: VoteInfo[]) {
            pb_1.Message.setRepeatedWrapperField(this, 2, value);
        }
        static fromObject(data: {
            round?: number;
            votes?: ReturnType<typeof VoteInfo.prototype.toObject>[];
        }): CommitInfo {
            const message = new CommitInfo({});
            if (data.round != null) {
                message.round = data.round;
            }
            if (data.votes != null) {
                message.votes = data.votes.map(item => VoteInfo.fromObject(item));
            }
            return message;
        }
        toObject() {
            const data: {
                round?: number;
                votes?: ReturnType<typeof VoteInfo.prototype.toObject>[];
            } = {};
            if (this.round != null) {
                data.round = this.round;
            }
            if (this.votes != null) {
                data.votes = this.votes.map((item: VoteInfo) => item.toObject());
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.round != 0)
                writer.writeInt32(1, this.round);
            if (this.votes.length)
                writer.writeRepeatedMessage(2, this.votes, (item: VoteInfo) => item.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): CommitInfo {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new CommitInfo();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.round = reader.readInt32();
                        break;
                    case 2:
                        reader.readMessage(message.votes, () => pb_1.Message.addToRepeatedWrapperField(message, 2, VoteInfo.deserialize(reader), VoteInfo));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): CommitInfo {
            return CommitInfo.deserialize(bytes);
        }
    }
    export class ExtendedCommitInfo extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            round?: number;
            votes?: ExtendedVoteInfo[];
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("round" in data && data.round != undefined) {
                    this.round = data.round;
                }
                if ("votes" in data && data.votes != undefined) {
                    this.votes = data.votes;
                }
            }
        }
        get round() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set round(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get votes() {
            return pb_1.Message.getRepeatedWrapperField(this, ExtendedVoteInfo, 2) as ExtendedVoteInfo[];
        }
        set votes(value: ExtendedVoteInfo[]) {
            pb_1.Message.setRepeatedWrapperField(this, 2, value);
        }
        static fromObject(data: {
            round?: number;
            votes?: ReturnType<typeof ExtendedVoteInfo.prototype.toObject>[];
        }): ExtendedCommitInfo {
            const message = new ExtendedCommitInfo({});
            if (data.round != null) {
                message.round = data.round;
            }
            if (data.votes != null) {
                message.votes = data.votes.map(item => ExtendedVoteInfo.fromObject(item));
            }
            return message;
        }
        toObject() {
            const data: {
                round?: number;
                votes?: ReturnType<typeof ExtendedVoteInfo.prototype.toObject>[];
            } = {};
            if (this.round != null) {
                data.round = this.round;
            }
            if (this.votes != null) {
                data.votes = this.votes.map((item: ExtendedVoteInfo) => item.toObject());
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.round != 0)
                writer.writeInt32(1, this.round);
            if (this.votes.length)
                writer.writeRepeatedMessage(2, this.votes, (item: ExtendedVoteInfo) => item.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExtendedCommitInfo {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExtendedCommitInfo();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.round = reader.readInt32();
                        break;
                    case 2:
                        reader.readMessage(message.votes, () => pb_1.Message.addToRepeatedWrapperField(message, 2, ExtendedVoteInfo.deserialize(reader), ExtendedVoteInfo));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ExtendedCommitInfo {
            return ExtendedCommitInfo.deserialize(bytes);
        }
    }
    export class Event extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            type?: string;
            attributes?: EventAttribute[];
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("type" in data && data.type != undefined) {
                    this.type = data.type;
                }
                if ("attributes" in data && data.attributes != undefined) {
                    this.attributes = data.attributes;
                }
            }
        }
        get type() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set type(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        get attributes() {
            return pb_1.Message.getRepeatedWrapperField(this, EventAttribute, 2) as EventAttribute[];
        }
        set attributes(value: EventAttribute[]) {
            pb_1.Message.setRepeatedWrapperField(this, 2, value);
        }
        static fromObject(data: {
            type?: string;
            attributes?: ReturnType<typeof EventAttribute.prototype.toObject>[];
        }): Event {
            const message = new Event({});
            if (data.type != null) {
                message.type = data.type;
            }
            if (data.attributes != null) {
                message.attributes = data.attributes.map(item => EventAttribute.fromObject(item));
            }
            return message;
        }
        toObject() {
            const data: {
                type?: string;
                attributes?: ReturnType<typeof EventAttribute.prototype.toObject>[];
            } = {};
            if (this.type != null) {
                data.type = this.type;
            }
            if (this.attributes != null) {
                data.attributes = this.attributes.map((item: EventAttribute) => item.toObject());
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.type.length)
                writer.writeString(1, this.type);
            if (this.attributes.length)
                writer.writeRepeatedMessage(2, this.attributes, (item: EventAttribute) => item.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Event {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Event();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.type = reader.readString();
                        break;
                    case 2:
                        reader.readMessage(message.attributes, () => pb_1.Message.addToRepeatedWrapperField(message, 2, EventAttribute.deserialize(reader), EventAttribute));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Event {
            return Event.deserialize(bytes);
        }
    }
    export class EventAttribute extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            key?: string;
            value?: string;
            index?: boolean;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("key" in data && data.key != undefined) {
                    this.key = data.key;
                }
                if ("value" in data && data.value != undefined) {
                    this.value = data.value;
                }
                if ("index" in data && data.index != undefined) {
                    this.index = data.index;
                }
            }
        }
        get key() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set key(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        get value() {
            return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
        }
        set value(value: string) {
            pb_1.Message.setField(this, 2, value);
        }
        get index() {
            return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean;
        }
        set index(value: boolean) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            key?: string;
            value?: string;
            index?: boolean;
        }): EventAttribute {
            const message = new EventAttribute({});
            if (data.key != null) {
                message.key = data.key;
            }
            if (data.value != null) {
                message.value = data.value;
            }
            if (data.index != null) {
                message.index = data.index;
            }
            return message;
        }
        toObject() {
            const data: {
                key?: string;
                value?: string;
                index?: boolean;
            } = {};
            if (this.key != null) {
                data.key = this.key;
            }
            if (this.value != null) {
                data.value = this.value;
            }
            if (this.index != null) {
                data.index = this.index;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.key.length)
                writer.writeString(1, this.key);
            if (this.value.length)
                writer.writeString(2, this.value);
            if (this.index != false)
                writer.writeBool(3, this.index);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): EventAttribute {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new EventAttribute();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.key = reader.readString();
                        break;
                    case 2:
                        message.value = reader.readString();
                        break;
                    case 3:
                        message.index = reader.readBool();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): EventAttribute {
            return EventAttribute.deserialize(bytes);
        }
    }
    export class ExecTxResult extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            code?: number;
            data?: Uint8Array;
            log?: string;
            info?: string;
            gas_wanted?: number;
            gas_used?: number;
            events?: Event[];
            codespace?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [7], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("code" in data && data.code != undefined) {
                    this.code = data.code;
                }
                if ("data" in data && data.data != undefined) {
                    this.data = data.data;
                }
                if ("log" in data && data.log != undefined) {
                    this.log = data.log;
                }
                if ("info" in data && data.info != undefined) {
                    this.info = data.info;
                }
                if ("gas_wanted" in data && data.gas_wanted != undefined) {
                    this.gas_wanted = data.gas_wanted;
                }
                if ("gas_used" in data && data.gas_used != undefined) {
                    this.gas_used = data.gas_used;
                }
                if ("events" in data && data.events != undefined) {
                    this.events = data.events;
                }
                if ("codespace" in data && data.codespace != undefined) {
                    this.codespace = data.codespace;
                }
            }
        }
        get code() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set code(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get data() {
            return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
        }
        set data(value: Uint8Array) {
            pb_1.Message.setField(this, 2, value);
        }
        get log() {
            return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
        }
        set log(value: string) {
            pb_1.Message.setField(this, 3, value);
        }
        get info() {
            return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
        }
        set info(value: string) {
            pb_1.Message.setField(this, 4, value);
        }
        get gas_wanted() {
            return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
        }
        set gas_wanted(value: number) {
            pb_1.Message.setField(this, 5, value);
        }
        get gas_used() {
            return pb_1.Message.getFieldWithDefault(this, 6, 0) as number;
        }
        set gas_used(value: number) {
            pb_1.Message.setField(this, 6, value);
        }
        get events() {
            return pb_1.Message.getRepeatedWrapperField(this, Event, 7) as Event[];
        }
        set events(value: Event[]) {
            pb_1.Message.setRepeatedWrapperField(this, 7, value);
        }
        get codespace() {
            return pb_1.Message.getFieldWithDefault(this, 8, "") as string;
        }
        set codespace(value: string) {
            pb_1.Message.setField(this, 8, value);
        }
        static fromObject(data: {
            code?: number;
            data?: Uint8Array;
            log?: string;
            info?: string;
            gas_wanted?: number;
            gas_used?: number;
            events?: ReturnType<typeof Event.prototype.toObject>[];
            codespace?: string;
        }): ExecTxResult {
            const message = new ExecTxResult({});
            if (data.code != null) {
                message.code = data.code;
            }
            if (data.data != null) {
                message.data = data.data;
            }
            if (data.log != null) {
                message.log = data.log;
            }
            if (data.info != null) {
                message.info = data.info;
            }
            if (data.gas_wanted != null) {
                message.gas_wanted = data.gas_wanted;
            }
            if (data.gas_used != null) {
                message.gas_used = data.gas_used;
            }
            if (data.events != null) {
                message.events = data.events.map(item => Event.fromObject(item));
            }
            if (data.codespace != null) {
                message.codespace = data.codespace;
            }
            return message;
        }
        toObject() {
            const data: {
                code?: number;
                data?: Uint8Array;
                log?: string;
                info?: string;
                gas_wanted?: number;
                gas_used?: number;
                events?: ReturnType<typeof Event.prototype.toObject>[];
                codespace?: string;
            } = {};
            if (this.code != null) {
                data.code = this.code;
            }
            if (this.data != null) {
                data.data = this.data;
            }
            if (this.log != null) {
                data.log = this.log;
            }
            if (this.info != null) {
                data.info = this.info;
            }
            if (this.gas_wanted != null) {
                data.gas_wanted = this.gas_wanted;
            }
            if (this.gas_used != null) {
                data.gas_used = this.gas_used;
            }
            if (this.events != null) {
                data.events = this.events.map((item: Event) => item.toObject());
            }
            if (this.codespace != null) {
                data.codespace = this.codespace;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.code != 0)
                writer.writeUint32(1, this.code);
            if (this.data.length)
                writer.writeBytes(2, this.data);
            if (this.log.length)
                writer.writeString(3, this.log);
            if (this.info.length)
                writer.writeString(4, this.info);
            if (this.gas_wanted != 0)
                writer.writeInt64(5, this.gas_wanted);
            if (this.gas_used != 0)
                writer.writeInt64(6, this.gas_used);
            if (this.events.length)
                writer.writeRepeatedMessage(7, this.events, (item: Event) => item.serialize(writer));
            if (this.codespace.length)
                writer.writeString(8, this.codespace);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExecTxResult {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExecTxResult();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.code = reader.readUint32();
                        break;
                    case 2:
                        message.data = reader.readBytes();
                        break;
                    case 3:
                        message.log = reader.readString();
                        break;
                    case 4:
                        message.info = reader.readString();
                        break;
                    case 5:
                        message.gas_wanted = reader.readInt64();
                        break;
                    case 6:
                        message.gas_used = reader.readInt64();
                        break;
                    case 7:
                        reader.readMessage(message.events, () => pb_1.Message.addToRepeatedWrapperField(message, 7, Event.deserialize(reader), Event));
                        break;
                    case 8:
                        message.codespace = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ExecTxResult {
            return ExecTxResult.deserialize(bytes);
        }
    }
    export class TxResult extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            height?: number;
            index?: number;
            tx?: Uint8Array;
            result?: ExecTxResult;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("index" in data && data.index != undefined) {
                    this.index = data.index;
                }
                if ("tx" in data && data.tx != undefined) {
                    this.tx = data.tx;
                }
                if ("result" in data && data.result != undefined) {
                    this.result = data.result;
                }
            }
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get index() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set index(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        get tx() {
            return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array(0)) as Uint8Array;
        }
        set tx(value: Uint8Array) {
            pb_1.Message.setField(this, 3, value);
        }
        get result() {
            return pb_1.Message.getWrapperField(this, ExecTxResult, 4) as ExecTxResult;
        }
        set result(value: ExecTxResult) {
            pb_1.Message.setWrapperField(this, 4, value);
        }
        get has_result() {
            return pb_1.Message.getField(this, 4) != null;
        }
        static fromObject(data: {
            height?: number;
            index?: number;
            tx?: Uint8Array;
            result?: ReturnType<typeof ExecTxResult.prototype.toObject>;
        }): TxResult {
            const message = new TxResult({});
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.index != null) {
                message.index = data.index;
            }
            if (data.tx != null) {
                message.tx = data.tx;
            }
            if (data.result != null) {
                message.result = ExecTxResult.fromObject(data.result);
            }
            return message;
        }
        toObject() {
            const data: {
                height?: number;
                index?: number;
                tx?: Uint8Array;
                result?: ReturnType<typeof ExecTxResult.prototype.toObject>;
            } = {};
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.index != null) {
                data.index = this.index;
            }
            if (this.tx != null) {
                data.tx = this.tx;
            }
            if (this.result != null) {
                data.result = this.result.toObject();
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.height != 0)
                writer.writeInt64(1, this.height);
            if (this.index != 0)
                writer.writeUint32(2, this.index);
            if (this.tx.length)
                writer.writeBytes(3, this.tx);
            if (this.has_result)
                writer.writeMessage(4, this.result, () => this.result.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): TxResult {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new TxResult();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.height = reader.readInt64();
                        break;
                    case 2:
                        message.index = reader.readUint32();
                        break;
                    case 3:
                        message.tx = reader.readBytes();
                        break;
                    case 4:
                        reader.readMessage(message.result, () => message.result = ExecTxResult.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): TxResult {
            return TxResult.deserialize(bytes);
        }
    }
    export class Validator extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            address?: Uint8Array;
            power?: number;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("address" in data && data.address != undefined) {
                    this.address = data.address;
                }
                if ("power" in data && data.power != undefined) {
                    this.power = data.power;
                }
            }
        }
        get address() {
            return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
        }
        set address(value: Uint8Array) {
            pb_1.Message.setField(this, 1, value);
        }
        get power() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set power(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            address?: Uint8Array;
            power?: number;
        }): Validator {
            const message = new Validator({});
            if (data.address != null) {
                message.address = data.address;
            }
            if (data.power != null) {
                message.power = data.power;
            }
            return message;
        }
        toObject() {
            const data: {
                address?: Uint8Array;
                power?: number;
            } = {};
            if (this.address != null) {
                data.address = this.address;
            }
            if (this.power != null) {
                data.power = this.power;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.address.length)
                writer.writeBytes(1, this.address);
            if (this.power != 0)
                writer.writeInt64(3, this.power);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Validator {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Validator();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.address = reader.readBytes();
                        break;
                    case 3:
                        message.power = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Validator {
            return Validator.deserialize(bytes);
        }
    }
    export class ValidatorUpdate extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            pub_key?: dependency_2.tendermint.crypto.PublicKey;
            power?: number;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("pub_key" in data && data.pub_key != undefined) {
                    this.pub_key = data.pub_key;
                }
                if ("power" in data && data.power != undefined) {
                    this.power = data.power;
                }
            }
        }
        get pub_key() {
            return pb_1.Message.getWrapperField(this, dependency_2.tendermint.crypto.PublicKey, 1) as dependency_2.tendermint.crypto.PublicKey;
        }
        set pub_key(value: dependency_2.tendermint.crypto.PublicKey) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_pub_key() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get power() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set power(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        static fromObject(data: {
            pub_key?: ReturnType<typeof dependency_2.tendermint.crypto.PublicKey.prototype.toObject>;
            power?: number;
        }): ValidatorUpdate {
            const message = new ValidatorUpdate({});
            if (data.pub_key != null) {
                message.pub_key = dependency_2.tendermint.crypto.PublicKey.fromObject(data.pub_key);
            }
            if (data.power != null) {
                message.power = data.power;
            }
            return message;
        }
        toObject() {
            const data: {
                pub_key?: ReturnType<typeof dependency_2.tendermint.crypto.PublicKey.prototype.toObject>;
                power?: number;
            } = {};
            if (this.pub_key != null) {
                data.pub_key = this.pub_key.toObject();
            }
            if (this.power != null) {
                data.power = this.power;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.has_pub_key)
                writer.writeMessage(1, this.pub_key, () => this.pub_key.serialize(writer));
            if (this.power != 0)
                writer.writeInt64(2, this.power);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ValidatorUpdate {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ValidatorUpdate();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.pub_key, () => message.pub_key = dependency_2.tendermint.crypto.PublicKey.deserialize(reader));
                        break;
                    case 2:
                        message.power = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ValidatorUpdate {
            return ValidatorUpdate.deserialize(bytes);
        }
    }
    export class VoteInfo extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            validator?: Validator;
            block_id_flag?: dependency_4.tendermint.types.BlockIDFlag;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("validator" in data && data.validator != undefined) {
                    this.validator = data.validator;
                }
                if ("block_id_flag" in data && data.block_id_flag != undefined) {
                    this.block_id_flag = data.block_id_flag;
                }
            }
        }
        get validator() {
            return pb_1.Message.getWrapperField(this, Validator, 1) as Validator;
        }
        set validator(value: Validator) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_validator() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get block_id_flag() {
            return pb_1.Message.getFieldWithDefault(this, 3, dependency_4.tendermint.types.BlockIDFlag.BLOCK_ID_FLAG_UNKNOWN) as dependency_4.tendermint.types.BlockIDFlag;
        }
        set block_id_flag(value: dependency_4.tendermint.types.BlockIDFlag) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            validator?: ReturnType<typeof Validator.prototype.toObject>;
            block_id_flag?: dependency_4.tendermint.types.BlockIDFlag;
        }): VoteInfo {
            const message = new VoteInfo({});
            if (data.validator != null) {
                message.validator = Validator.fromObject(data.validator);
            }
            if (data.block_id_flag != null) {
                message.block_id_flag = data.block_id_flag;
            }
            return message;
        }
        toObject() {
            const data: {
                validator?: ReturnType<typeof Validator.prototype.toObject>;
                block_id_flag?: dependency_4.tendermint.types.BlockIDFlag;
            } = {};
            if (this.validator != null) {
                data.validator = this.validator.toObject();
            }
            if (this.block_id_flag != null) {
                data.block_id_flag = this.block_id_flag;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.has_validator)
                writer.writeMessage(1, this.validator, () => this.validator.serialize(writer));
            if (this.block_id_flag != dependency_4.tendermint.types.BlockIDFlag.BLOCK_ID_FLAG_UNKNOWN)
                writer.writeEnum(3, this.block_id_flag);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): VoteInfo {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new VoteInfo();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.validator, () => message.validator = Validator.deserialize(reader));
                        break;
                    case 3:
                        message.block_id_flag = reader.readEnum();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): VoteInfo {
            return VoteInfo.deserialize(bytes);
        }
    }
    export class ExtendedVoteInfo extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            validator?: Validator;
            vote_extension?: Uint8Array;
            extension_signature?: Uint8Array;
            block_id_flag?: dependency_4.tendermint.types.BlockIDFlag;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("validator" in data && data.validator != undefined) {
                    this.validator = data.validator;
                }
                if ("vote_extension" in data && data.vote_extension != undefined) {
                    this.vote_extension = data.vote_extension;
                }
                if ("extension_signature" in data && data.extension_signature != undefined) {
                    this.extension_signature = data.extension_signature;
                }
                if ("block_id_flag" in data && data.block_id_flag != undefined) {
                    this.block_id_flag = data.block_id_flag;
                }
            }
        }
        get validator() {
            return pb_1.Message.getWrapperField(this, Validator, 1) as Validator;
        }
        set validator(value: Validator) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_validator() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get vote_extension() {
            return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array(0)) as Uint8Array;
        }
        set vote_extension(value: Uint8Array) {
            pb_1.Message.setField(this, 3, value);
        }
        get extension_signature() {
            return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
        }
        set extension_signature(value: Uint8Array) {
            pb_1.Message.setField(this, 4, value);
        }
        get block_id_flag() {
            return pb_1.Message.getFieldWithDefault(this, 5, dependency_4.tendermint.types.BlockIDFlag.BLOCK_ID_FLAG_UNKNOWN) as dependency_4.tendermint.types.BlockIDFlag;
        }
        set block_id_flag(value: dependency_4.tendermint.types.BlockIDFlag) {
            pb_1.Message.setField(this, 5, value);
        }
        static fromObject(data: {
            validator?: ReturnType<typeof Validator.prototype.toObject>;
            vote_extension?: Uint8Array;
            extension_signature?: Uint8Array;
            block_id_flag?: dependency_4.tendermint.types.BlockIDFlag;
        }): ExtendedVoteInfo {
            const message = new ExtendedVoteInfo({});
            if (data.validator != null) {
                message.validator = Validator.fromObject(data.validator);
            }
            if (data.vote_extension != null) {
                message.vote_extension = data.vote_extension;
            }
            if (data.extension_signature != null) {
                message.extension_signature = data.extension_signature;
            }
            if (data.block_id_flag != null) {
                message.block_id_flag = data.block_id_flag;
            }
            return message;
        }
        toObject() {
            const data: {
                validator?: ReturnType<typeof Validator.prototype.toObject>;
                vote_extension?: Uint8Array;
                extension_signature?: Uint8Array;
                block_id_flag?: dependency_4.tendermint.types.BlockIDFlag;
            } = {};
            if (this.validator != null) {
                data.validator = this.validator.toObject();
            }
            if (this.vote_extension != null) {
                data.vote_extension = this.vote_extension;
            }
            if (this.extension_signature != null) {
                data.extension_signature = this.extension_signature;
            }
            if (this.block_id_flag != null) {
                data.block_id_flag = this.block_id_flag;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.has_validator)
                writer.writeMessage(1, this.validator, () => this.validator.serialize(writer));
            if (this.vote_extension.length)
                writer.writeBytes(3, this.vote_extension);
            if (this.extension_signature.length)
                writer.writeBytes(4, this.extension_signature);
            if (this.block_id_flag != dependency_4.tendermint.types.BlockIDFlag.BLOCK_ID_FLAG_UNKNOWN)
                writer.writeEnum(5, this.block_id_flag);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExtendedVoteInfo {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExtendedVoteInfo();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.validator, () => message.validator = Validator.deserialize(reader));
                        break;
                    case 3:
                        message.vote_extension = reader.readBytes();
                        break;
                    case 4:
                        message.extension_signature = reader.readBytes();
                        break;
                    case 5:
                        message.block_id_flag = reader.readEnum();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ExtendedVoteInfo {
            return ExtendedVoteInfo.deserialize(bytes);
        }
    }
    export class Misbehavior extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            type?: MisbehaviorType;
            validator?: Validator;
            height?: number;
            time?: dependency_5.google.protobuf.Timestamp;
            total_voting_power?: number;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("type" in data && data.type != undefined) {
                    this.type = data.type;
                }
                if ("validator" in data && data.validator != undefined) {
                    this.validator = data.validator;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("time" in data && data.time != undefined) {
                    this.time = data.time;
                }
                if ("total_voting_power" in data && data.total_voting_power != undefined) {
                    this.total_voting_power = data.total_voting_power;
                }
            }
        }
        get type() {
            return pb_1.Message.getFieldWithDefault(this, 1, MisbehaviorType.UNKNOWN) as MisbehaviorType;
        }
        set type(value: MisbehaviorType) {
            pb_1.Message.setField(this, 1, value);
        }
        get validator() {
            return pb_1.Message.getWrapperField(this, Validator, 2) as Validator;
        }
        set validator(value: Validator) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_validator() {
            return pb_1.Message.getField(this, 2) != null;
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get time() {
            return pb_1.Message.getWrapperField(this, dependency_5.google.protobuf.Timestamp, 4) as dependency_5.google.protobuf.Timestamp;
        }
        set time(value: dependency_5.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 4, value);
        }
        get has_time() {
            return pb_1.Message.getField(this, 4) != null;
        }
        get total_voting_power() {
            return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
        }
        set total_voting_power(value: number) {
            pb_1.Message.setField(this, 5, value);
        }
        static fromObject(data: {
            type?: MisbehaviorType;
            validator?: ReturnType<typeof Validator.prototype.toObject>;
            height?: number;
            time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
            total_voting_power?: number;
        }): Misbehavior {
            const message = new Misbehavior({});
            if (data.type != null) {
                message.type = data.type;
            }
            if (data.validator != null) {
                message.validator = Validator.fromObject(data.validator);
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.time != null) {
                message.time = dependency_5.google.protobuf.Timestamp.fromObject(data.time);
            }
            if (data.total_voting_power != null) {
                message.total_voting_power = data.total_voting_power;
            }
            return message;
        }
        toObject() {
            const data: {
                type?: MisbehaviorType;
                validator?: ReturnType<typeof Validator.prototype.toObject>;
                height?: number;
                time?: ReturnType<typeof dependency_5.google.protobuf.Timestamp.prototype.toObject>;
                total_voting_power?: number;
            } = {};
            if (this.type != null) {
                data.type = this.type;
            }
            if (this.validator != null) {
                data.validator = this.validator.toObject();
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.time != null) {
                data.time = this.time.toObject();
            }
            if (this.total_voting_power != null) {
                data.total_voting_power = this.total_voting_power;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.type != MisbehaviorType.UNKNOWN)
                writer.writeEnum(1, this.type);
            if (this.has_validator)
                writer.writeMessage(2, this.validator, () => this.validator.serialize(writer));
            if (this.height != 0)
                writer.writeInt64(3, this.height);
            if (this.has_time)
                writer.writeMessage(4, this.time, () => this.time.serialize(writer));
            if (this.total_voting_power != 0)
                writer.writeInt64(5, this.total_voting_power);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Misbehavior {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Misbehavior();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.type = reader.readEnum();
                        break;
                    case 2:
                        reader.readMessage(message.validator, () => message.validator = Validator.deserialize(reader));
                        break;
                    case 3:
                        message.height = reader.readInt64();
                        break;
                    case 4:
                        reader.readMessage(message.time, () => message.time = dependency_5.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 5:
                        message.total_voting_power = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Misbehavior {
            return Misbehavior.deserialize(bytes);
        }
    }
    export class Snapshot extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            height?: number;
            format?: number;
            chunks?: number;
            hash?: Uint8Array;
            metadata?: Uint8Array;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("format" in data && data.format != undefined) {
                    this.format = data.format;
                }
                if ("chunks" in data && data.chunks != undefined) {
                    this.chunks = data.chunks;
                }
                if ("hash" in data && data.hash != undefined) {
                    this.hash = data.hash;
                }
                if ("metadata" in data && data.metadata != undefined) {
                    this.metadata = data.metadata;
                }
            }
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get format() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set format(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        get chunks() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set chunks(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get hash() {
            return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
        }
        set hash(value: Uint8Array) {
            pb_1.Message.setField(this, 4, value);
        }
        get metadata() {
            return pb_1.Message.getFieldWithDefault(this, 5, new Uint8Array(0)) as Uint8Array;
        }
        set metadata(value: Uint8Array) {
            pb_1.Message.setField(this, 5, value);
        }
        static fromObject(data: {
            height?: number;
            format?: number;
            chunks?: number;
            hash?: Uint8Array;
            metadata?: Uint8Array;
        }): Snapshot {
            const message = new Snapshot({});
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.format != null) {
                message.format = data.format;
            }
            if (data.chunks != null) {
                message.chunks = data.chunks;
            }
            if (data.hash != null) {
                message.hash = data.hash;
            }
            if (data.metadata != null) {
                message.metadata = data.metadata;
            }
            return message;
        }
        toObject() {
            const data: {
                height?: number;
                format?: number;
                chunks?: number;
                hash?: Uint8Array;
                metadata?: Uint8Array;
            } = {};
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.format != null) {
                data.format = this.format;
            }
            if (this.chunks != null) {
                data.chunks = this.chunks;
            }
            if (this.hash != null) {
                data.hash = this.hash;
            }
            if (this.metadata != null) {
                data.metadata = this.metadata;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.height != 0)
                writer.writeUint64(1, this.height);
            if (this.format != 0)
                writer.writeUint32(2, this.format);
            if (this.chunks != 0)
                writer.writeUint32(3, this.chunks);
            if (this.hash.length)
                writer.writeBytes(4, this.hash);
            if (this.metadata.length)
                writer.writeBytes(5, this.metadata);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Snapshot {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Snapshot();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.height = reader.readUint64();
                        break;
                    case 2:
                        message.format = reader.readUint32();
                        break;
                    case 3:
                        message.chunks = reader.readUint32();
                        break;
                    case 4:
                        message.hash = reader.readBytes();
                        break;
                    case 5:
                        message.metadata = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Snapshot {
            return Snapshot.deserialize(bytes);
        }
    }
    interface GrpcUnaryServiceInterface<P, R> {
        (message: P, metadata: grpc_1.Metadata, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
        (message: P, metadata: grpc_1.Metadata, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
        (message: P, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
        (message: P, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
    }
    interface GrpcStreamServiceInterface<P, R> {
        (message: P, metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<R>;
        (message: P, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<R>;
    }
    interface GrpWritableServiceInterface<P, R> {
        (metadata: grpc_1.Metadata, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
        (metadata: grpc_1.Metadata, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
        (options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
        (callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
    }
    interface GrpcChunkServiceInterface<P, R> {
        (metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): grpc_1.ClientDuplexStream<P, R>;
        (options?: grpc_1.CallOptions): grpc_1.ClientDuplexStream<P, R>;
    }
    interface GrpcPromiseServiceInterface<P, R> {
        (message: P, metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): Promise<R>;
        (message: P, options?: grpc_1.CallOptions): Promise<R>;
    }
    export abstract class UnimplementedABCIService {
        static definition = {
            Echo: {
                path: "/tendermint.abci.ABCI/Echo",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestEcho) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestEcho.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseEcho) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseEcho.deserialize(new Uint8Array(bytes))
            },
            Flush: {
                path: "/tendermint.abci.ABCI/Flush",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestFlush) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestFlush.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseFlush) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseFlush.deserialize(new Uint8Array(bytes))
            },
            Info: {
                path: "/tendermint.abci.ABCI/Info",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestInfo) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestInfo.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseInfo) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseInfo.deserialize(new Uint8Array(bytes))
            },
            CheckTx: {
                path: "/tendermint.abci.ABCI/CheckTx",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestCheckTx) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestCheckTx.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseCheckTx) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseCheckTx.deserialize(new Uint8Array(bytes))
            },
            Query: {
                path: "/tendermint.abci.ABCI/Query",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestQuery) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestQuery.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseQuery) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseQuery.deserialize(new Uint8Array(bytes))
            },
            Commit: {
                path: "/tendermint.abci.ABCI/Commit",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestCommit) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestCommit.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseCommit) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseCommit.deserialize(new Uint8Array(bytes))
            },
            InitChain: {
                path: "/tendermint.abci.ABCI/InitChain",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestInitChain) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestInitChain.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseInitChain) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseInitChain.deserialize(new Uint8Array(bytes))
            },
            ListSnapshots: {
                path: "/tendermint.abci.ABCI/ListSnapshots",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestListSnapshots) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestListSnapshots.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseListSnapshots) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseListSnapshots.deserialize(new Uint8Array(bytes))
            },
            OfferSnapshot: {
                path: "/tendermint.abci.ABCI/OfferSnapshot",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestOfferSnapshot) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestOfferSnapshot.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseOfferSnapshot) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseOfferSnapshot.deserialize(new Uint8Array(bytes))
            },
            LoadSnapshotChunk: {
                path: "/tendermint.abci.ABCI/LoadSnapshotChunk",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestLoadSnapshotChunk) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestLoadSnapshotChunk.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseLoadSnapshotChunk) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseLoadSnapshotChunk.deserialize(new Uint8Array(bytes))
            },
            ApplySnapshotChunk: {
                path: "/tendermint.abci.ABCI/ApplySnapshotChunk",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestApplySnapshotChunk) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestApplySnapshotChunk.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseApplySnapshotChunk) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseApplySnapshotChunk.deserialize(new Uint8Array(bytes))
            },
            PrepareProposal: {
                path: "/tendermint.abci.ABCI/PrepareProposal",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestPrepareProposal) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestPrepareProposal.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponsePrepareProposal) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponsePrepareProposal.deserialize(new Uint8Array(bytes))
            },
            ProcessProposal: {
                path: "/tendermint.abci.ABCI/ProcessProposal",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestProcessProposal) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestProcessProposal.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseProcessProposal) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseProcessProposal.deserialize(new Uint8Array(bytes))
            },
            ExtendVote: {
                path: "/tendermint.abci.ABCI/ExtendVote",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestExtendVote) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestExtendVote.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseExtendVote) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseExtendVote.deserialize(new Uint8Array(bytes))
            },
            VerifyVoteExtension: {
                path: "/tendermint.abci.ABCI/VerifyVoteExtension",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestVerifyVoteExtension) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestVerifyVoteExtension.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseVerifyVoteExtension) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseVerifyVoteExtension.deserialize(new Uint8Array(bytes))
            },
            FinalizeBlock: {
                path: "/tendermint.abci.ABCI/FinalizeBlock",
                requestStream: false,
                responseStream: false,
                requestSerialize: (message: RequestFinalizeBlock) => Buffer.from(message.serialize()),
                requestDeserialize: (bytes: Buffer) => RequestFinalizeBlock.deserialize(new Uint8Array(bytes)),
                responseSerialize: (message: ResponseFinalizeBlock) => Buffer.from(message.serialize()),
                responseDeserialize: (bytes: Buffer) => ResponseFinalizeBlock.deserialize(new Uint8Array(bytes))
            }
        };
        [method: string]: grpc_1.UntypedHandleCall;
        abstract Echo(call: grpc_1.ServerUnaryCall<RequestEcho, ResponseEcho>, callback: grpc_1.sendUnaryData<ResponseEcho>): void;
        abstract Flush(call: grpc_1.ServerUnaryCall<RequestFlush, ResponseFlush>, callback: grpc_1.sendUnaryData<ResponseFlush>): void;
        abstract Info(call: grpc_1.ServerUnaryCall<RequestInfo, ResponseInfo>, callback: grpc_1.sendUnaryData<ResponseInfo>): void;
        abstract CheckTx(call: grpc_1.ServerUnaryCall<RequestCheckTx, ResponseCheckTx>, callback: grpc_1.sendUnaryData<ResponseCheckTx>): void;
        abstract Query(call: grpc_1.ServerUnaryCall<RequestQuery, ResponseQuery>, callback: grpc_1.sendUnaryData<ResponseQuery>): void;
        abstract Commit(call: grpc_1.ServerUnaryCall<RequestCommit, ResponseCommit>, callback: grpc_1.sendUnaryData<ResponseCommit>): void;
        abstract InitChain(call: grpc_1.ServerUnaryCall<RequestInitChain, ResponseInitChain>, callback: grpc_1.sendUnaryData<ResponseInitChain>): void;
        abstract ListSnapshots(call: grpc_1.ServerUnaryCall<RequestListSnapshots, ResponseListSnapshots>, callback: grpc_1.sendUnaryData<ResponseListSnapshots>): void;
        abstract OfferSnapshot(call: grpc_1.ServerUnaryCall<RequestOfferSnapshot, ResponseOfferSnapshot>, callback: grpc_1.sendUnaryData<ResponseOfferSnapshot>): void;
        abstract LoadSnapshotChunk(call: grpc_1.ServerUnaryCall<RequestLoadSnapshotChunk, ResponseLoadSnapshotChunk>, callback: grpc_1.sendUnaryData<ResponseLoadSnapshotChunk>): void;
        abstract ApplySnapshotChunk(call: grpc_1.ServerUnaryCall<RequestApplySnapshotChunk, ResponseApplySnapshotChunk>, callback: grpc_1.sendUnaryData<ResponseApplySnapshotChunk>): void;
        abstract PrepareProposal(call: grpc_1.ServerUnaryCall<RequestPrepareProposal, ResponsePrepareProposal>, callback: grpc_1.sendUnaryData<ResponsePrepareProposal>): void;
        abstract ProcessProposal(call: grpc_1.ServerUnaryCall<RequestProcessProposal, ResponseProcessProposal>, callback: grpc_1.sendUnaryData<ResponseProcessProposal>): void;
        abstract ExtendVote(call: grpc_1.ServerUnaryCall<RequestExtendVote, ResponseExtendVote>, callback: grpc_1.sendUnaryData<ResponseExtendVote>): void;
        abstract VerifyVoteExtension(call: grpc_1.ServerUnaryCall<RequestVerifyVoteExtension, ResponseVerifyVoteExtension>, callback: grpc_1.sendUnaryData<ResponseVerifyVoteExtension>): void;
        abstract FinalizeBlock(call: grpc_1.ServerUnaryCall<RequestFinalizeBlock, ResponseFinalizeBlock>, callback: grpc_1.sendUnaryData<ResponseFinalizeBlock>): void;
    }
    export class ABCIClient extends grpc_1.makeGenericClientConstructor(UnimplementedABCIService.definition, "ABCI", {}) {
        constructor(address: string, credentials: grpc_1.ChannelCredentials, options?: Partial<grpc_1.ChannelOptions>) {
            super(address, credentials, options);
        }
        Echo: GrpcUnaryServiceInterface<RequestEcho, ResponseEcho> = (message: RequestEcho, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseEcho>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseEcho>, callback?: grpc_1.requestCallback<ResponseEcho>): grpc_1.ClientUnaryCall => {
            return super.Echo(message, metadata, options, callback);
        };
        Flush: GrpcUnaryServiceInterface<RequestFlush, ResponseFlush> = (message: RequestFlush, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseFlush>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseFlush>, callback?: grpc_1.requestCallback<ResponseFlush>): grpc_1.ClientUnaryCall => {
            return super.Flush(message, metadata, options, callback);
        };
        Info: GrpcUnaryServiceInterface<RequestInfo, ResponseInfo> = (message: RequestInfo, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseInfo>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseInfo>, callback?: grpc_1.requestCallback<ResponseInfo>): grpc_1.ClientUnaryCall => {
            return super.Info(message, metadata, options, callback);
        };
        CheckTx: GrpcUnaryServiceInterface<RequestCheckTx, ResponseCheckTx> = (message: RequestCheckTx, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseCheckTx>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseCheckTx>, callback?: grpc_1.requestCallback<ResponseCheckTx>): grpc_1.ClientUnaryCall => {
            return super.CheckTx(message, metadata, options, callback);
        };
        Query: GrpcUnaryServiceInterface<RequestQuery, ResponseQuery> = (message: RequestQuery, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseQuery>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseQuery>, callback?: grpc_1.requestCallback<ResponseQuery>): grpc_1.ClientUnaryCall => {
            return super.Query(message, metadata, options, callback);
        };
        Commit: GrpcUnaryServiceInterface<RequestCommit, ResponseCommit> = (message: RequestCommit, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseCommit>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseCommit>, callback?: grpc_1.requestCallback<ResponseCommit>): grpc_1.ClientUnaryCall => {
            return super.Commit(message, metadata, options, callback);
        };
        InitChain: GrpcUnaryServiceInterface<RequestInitChain, ResponseInitChain> = (message: RequestInitChain, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseInitChain>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseInitChain>, callback?: grpc_1.requestCallback<ResponseInitChain>): grpc_1.ClientUnaryCall => {
            return super.InitChain(message, metadata, options, callback);
        };
        ListSnapshots: GrpcUnaryServiceInterface<RequestListSnapshots, ResponseListSnapshots> = (message: RequestListSnapshots, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseListSnapshots>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseListSnapshots>, callback?: grpc_1.requestCallback<ResponseListSnapshots>): grpc_1.ClientUnaryCall => {
            return super.ListSnapshots(message, metadata, options, callback);
        };
        OfferSnapshot: GrpcUnaryServiceInterface<RequestOfferSnapshot, ResponseOfferSnapshot> = (message: RequestOfferSnapshot, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseOfferSnapshot>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseOfferSnapshot>, callback?: grpc_1.requestCallback<ResponseOfferSnapshot>): grpc_1.ClientUnaryCall => {
            return super.OfferSnapshot(message, metadata, options, callback);
        };
        LoadSnapshotChunk: GrpcUnaryServiceInterface<RequestLoadSnapshotChunk, ResponseLoadSnapshotChunk> = (message: RequestLoadSnapshotChunk, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseLoadSnapshotChunk>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseLoadSnapshotChunk>, callback?: grpc_1.requestCallback<ResponseLoadSnapshotChunk>): grpc_1.ClientUnaryCall => {
            return super.LoadSnapshotChunk(message, metadata, options, callback);
        };
        ApplySnapshotChunk: GrpcUnaryServiceInterface<RequestApplySnapshotChunk, ResponseApplySnapshotChunk> = (message: RequestApplySnapshotChunk, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseApplySnapshotChunk>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseApplySnapshotChunk>, callback?: grpc_1.requestCallback<ResponseApplySnapshotChunk>): grpc_1.ClientUnaryCall => {
            return super.ApplySnapshotChunk(message, metadata, options, callback);
        };
        PrepareProposal: GrpcUnaryServiceInterface<RequestPrepareProposal, ResponsePrepareProposal> = (message: RequestPrepareProposal, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponsePrepareProposal>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponsePrepareProposal>, callback?: grpc_1.requestCallback<ResponsePrepareProposal>): grpc_1.ClientUnaryCall => {
            return super.PrepareProposal(message, metadata, options, callback);
        };
        ProcessProposal: GrpcUnaryServiceInterface<RequestProcessProposal, ResponseProcessProposal> = (message: RequestProcessProposal, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseProcessProposal>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseProcessProposal>, callback?: grpc_1.requestCallback<ResponseProcessProposal>): grpc_1.ClientUnaryCall => {
            return super.ProcessProposal(message, metadata, options, callback);
        };
        ExtendVote: GrpcUnaryServiceInterface<RequestExtendVote, ResponseExtendVote> = (message: RequestExtendVote, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseExtendVote>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseExtendVote>, callback?: grpc_1.requestCallback<ResponseExtendVote>): grpc_1.ClientUnaryCall => {
            return super.ExtendVote(message, metadata, options, callback);
        };
        VerifyVoteExtension: GrpcUnaryServiceInterface<RequestVerifyVoteExtension, ResponseVerifyVoteExtension> = (message: RequestVerifyVoteExtension, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseVerifyVoteExtension>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseVerifyVoteExtension>, callback?: grpc_1.requestCallback<ResponseVerifyVoteExtension>): grpc_1.ClientUnaryCall => {
            return super.VerifyVoteExtension(message, metadata, options, callback);
        };
        FinalizeBlock: GrpcUnaryServiceInterface<RequestFinalizeBlock, ResponseFinalizeBlock> = (message: RequestFinalizeBlock, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ResponseFinalizeBlock>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ResponseFinalizeBlock>, callback?: grpc_1.requestCallback<ResponseFinalizeBlock>): grpc_1.ClientUnaryCall => {
            return super.FinalizeBlock(message, metadata, options, callback);
        };
    }
}
