/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.20.3
 * source: tendermint/types/types.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../../gogoproto/gogo";
import * as dependency_2 from "./../../google/protobuf/timestamp";
import * as dependency_3 from "./../crypto/proof";
import * as dependency_4 from "./../version/types";
import * as dependency_5 from "./validator";
import * as pb_1 from "google-protobuf";
export namespace tendermint.types {
    export enum SignedMsgType {
        SIGNED_MSG_TYPE_UNKNOWN = 0,
        SIGNED_MSG_TYPE_PREVOTE = 1,
        SIGNED_MSG_TYPE_PRECOMMIT = 2,
        SIGNED_MSG_TYPE_PROPOSAL = 32
    }
    export class PartSetHeader extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            total?: number;
            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 ("total" in data && data.total != undefined) {
                    this.total = data.total;
                }
                if ("hash" in data && data.hash != undefined) {
                    this.hash = data.hash;
                }
            }
        }
        get total() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set total(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get hash() {
            return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
        }
        set hash(value: Uint8Array) {
            pb_1.Message.setField(this, 2, value);
        }
        static fromObject(data: {
            total?: number;
            hash?: Uint8Array;
        }): PartSetHeader {
            const message = new PartSetHeader({});
            if (data.total != null) {
                message.total = data.total;
            }
            if (data.hash != null) {
                message.hash = data.hash;
            }
            return message;
        }
        toObject() {
            const data: {
                total?: number;
                hash?: Uint8Array;
            } = {};
            if (this.total != null) {
                data.total = this.total;
            }
            if (this.hash != null) {
                data.hash = this.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.total != 0)
                writer.writeUint32(1, this.total);
            if (this.hash.length)
                writer.writeBytes(2, this.hash);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PartSetHeader {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PartSetHeader();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.total = reader.readUint32();
                        break;
                    case 2:
                        message.hash = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): PartSetHeader {
            return PartSetHeader.deserialize(bytes);
        }
    }
    export class Part extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            index?: number;
            bytes?: Uint8Array;
            proof?: dependency_3.tendermint.crypto.Proof;
        }) {
            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 ("bytes" in data && data.bytes != undefined) {
                    this.bytes = data.bytes;
                }
                if ("proof" in data && data.proof != undefined) {
                    this.proof = data.proof;
                }
            }
        }
        get index() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set index(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get bytes() {
            return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
        }
        set bytes(value: Uint8Array) {
            pb_1.Message.setField(this, 2, value);
        }
        get proof() {
            return pb_1.Message.getWrapperField(this, dependency_3.tendermint.crypto.Proof, 3) as dependency_3.tendermint.crypto.Proof;
        }
        set proof(value: dependency_3.tendermint.crypto.Proof) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_proof() {
            return pb_1.Message.getField(this, 3) != null;
        }
        static fromObject(data: {
            index?: number;
            bytes?: Uint8Array;
            proof?: ReturnType<typeof dependency_3.tendermint.crypto.Proof.prototype.toObject>;
        }): Part {
            const message = new Part({});
            if (data.index != null) {
                message.index = data.index;
            }
            if (data.bytes != null) {
                message.bytes = data.bytes;
            }
            if (data.proof != null) {
                message.proof = dependency_3.tendermint.crypto.Proof.fromObject(data.proof);
            }
            return message;
        }
        toObject() {
            const data: {
                index?: number;
                bytes?: Uint8Array;
                proof?: ReturnType<typeof dependency_3.tendermint.crypto.Proof.prototype.toObject>;
            } = {};
            if (this.index != null) {
                data.index = this.index;
            }
            if (this.bytes != null) {
                data.bytes = this.bytes;
            }
            if (this.proof != null) {
                data.proof = this.proof.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.index != 0)
                writer.writeUint32(1, this.index);
            if (this.bytes.length)
                writer.writeBytes(2, this.bytes);
            if (this.has_proof)
                writer.writeMessage(3, this.proof, () => this.proof.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Part {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Part();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.index = reader.readUint32();
                        break;
                    case 2:
                        message.bytes = reader.readBytes();
                        break;
                    case 3:
                        reader.readMessage(message.proof, () => message.proof = dependency_3.tendermint.crypto.Proof.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Part {
            return Part.deserialize(bytes);
        }
    }
    export class BlockID extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            hash?: Uint8Array;
            part_set_header?: PartSetHeader;
        }) {
            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 ("part_set_header" in data && data.part_set_header != undefined) {
                    this.part_set_header = data.part_set_header;
                }
            }
        }
        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 part_set_header() {
            return pb_1.Message.getWrapperField(this, PartSetHeader, 2) as PartSetHeader;
        }
        set part_set_header(value: PartSetHeader) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_part_set_header() {
            return pb_1.Message.getField(this, 2) != null;
        }
        static fromObject(data: {
            hash?: Uint8Array;
            part_set_header?: ReturnType<typeof PartSetHeader.prototype.toObject>;
        }): BlockID {
            const message = new BlockID({});
            if (data.hash != null) {
                message.hash = data.hash;
            }
            if (data.part_set_header != null) {
                message.part_set_header = PartSetHeader.fromObject(data.part_set_header);
            }
            return message;
        }
        toObject() {
            const data: {
                hash?: Uint8Array;
                part_set_header?: ReturnType<typeof PartSetHeader.prototype.toObject>;
            } = {};
            if (this.hash != null) {
                data.hash = this.hash;
            }
            if (this.part_set_header != null) {
                data.part_set_header = this.part_set_header.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.hash.length)
                writer.writeBytes(1, this.hash);
            if (this.has_part_set_header)
                writer.writeMessage(2, this.part_set_header, () => this.part_set_header.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BlockID {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BlockID();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.hash = reader.readBytes();
                        break;
                    case 2:
                        reader.readMessage(message.part_set_header, () => message.part_set_header = PartSetHeader.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): BlockID {
            return BlockID.deserialize(bytes);
        }
    }
    export class Header extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            version?: dependency_4.tendermint.version.Consensus;
            chain_id?: string;
            height?: number;
            time?: dependency_2.google.protobuf.Timestamp;
            last_block_id?: BlockID;
            last_commit_hash?: Uint8Array;
            data_hash?: Uint8Array;
            validators_hash?: Uint8Array;
            next_validators_hash?: Uint8Array;
            consensus_hash?: Uint8Array;
            app_hash?: Uint8Array;
            last_results_hash?: Uint8Array;
            evidence_hash?: Uint8Array;
            proposer_address?: 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 ("version" in data && data.version != undefined) {
                    this.version = data.version;
                }
                if ("chain_id" in data && data.chain_id != undefined) {
                    this.chain_id = data.chain_id;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("time" in data && data.time != undefined) {
                    this.time = data.time;
                }
                if ("last_block_id" in data && data.last_block_id != undefined) {
                    this.last_block_id = data.last_block_id;
                }
                if ("last_commit_hash" in data && data.last_commit_hash != undefined) {
                    this.last_commit_hash = data.last_commit_hash;
                }
                if ("data_hash" in data && data.data_hash != undefined) {
                    this.data_hash = data.data_hash;
                }
                if ("validators_hash" in data && data.validators_hash != undefined) {
                    this.validators_hash = data.validators_hash;
                }
                if ("next_validators_hash" in data && data.next_validators_hash != undefined) {
                    this.next_validators_hash = data.next_validators_hash;
                }
                if ("consensus_hash" in data && data.consensus_hash != undefined) {
                    this.consensus_hash = data.consensus_hash;
                }
                if ("app_hash" in data && data.app_hash != undefined) {
                    this.app_hash = data.app_hash;
                }
                if ("last_results_hash" in data && data.last_results_hash != undefined) {
                    this.last_results_hash = data.last_results_hash;
                }
                if ("evidence_hash" in data && data.evidence_hash != undefined) {
                    this.evidence_hash = data.evidence_hash;
                }
                if ("proposer_address" in data && data.proposer_address != undefined) {
                    this.proposer_address = data.proposer_address;
                }
            }
        }
        get version() {
            return pb_1.Message.getWrapperField(this, dependency_4.tendermint.version.Consensus, 1) as dependency_4.tendermint.version.Consensus;
        }
        set version(value: dependency_4.tendermint.version.Consensus) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_version() {
            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 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_2.google.protobuf.Timestamp, 4) as dependency_2.google.protobuf.Timestamp;
        }
        set time(value: dependency_2.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 4, value);
        }
        get has_time() {
            return pb_1.Message.getField(this, 4) != null;
        }
        get last_block_id() {
            return pb_1.Message.getWrapperField(this, BlockID, 5) as BlockID;
        }
        set last_block_id(value: BlockID) {
            pb_1.Message.setWrapperField(this, 5, value);
        }
        get has_last_block_id() {
            return pb_1.Message.getField(this, 5) != null;
        }
        get last_commit_hash() {
            return pb_1.Message.getFieldWithDefault(this, 6, new Uint8Array(0)) as Uint8Array;
        }
        set last_commit_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 6, value);
        }
        get data_hash() {
            return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array(0)) as Uint8Array;
        }
        set data_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 7, value);
        }
        get validators_hash() {
            return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array(0)) as Uint8Array;
        }
        set validators_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 8, value);
        }
        get next_validators_hash() {
            return pb_1.Message.getFieldWithDefault(this, 9, new Uint8Array(0)) as Uint8Array;
        }
        set next_validators_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 9, value);
        }
        get consensus_hash() {
            return pb_1.Message.getFieldWithDefault(this, 10, new Uint8Array(0)) as Uint8Array;
        }
        set consensus_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 10, value);
        }
        get app_hash() {
            return pb_1.Message.getFieldWithDefault(this, 11, new Uint8Array(0)) as Uint8Array;
        }
        set app_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 11, value);
        }
        get last_results_hash() {
            return pb_1.Message.getFieldWithDefault(this, 12, new Uint8Array(0)) as Uint8Array;
        }
        set last_results_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 12, value);
        }
        get evidence_hash() {
            return pb_1.Message.getFieldWithDefault(this, 13, new Uint8Array(0)) as Uint8Array;
        }
        set evidence_hash(value: Uint8Array) {
            pb_1.Message.setField(this, 13, value);
        }
        get proposer_address() {
            return pb_1.Message.getFieldWithDefault(this, 14, new Uint8Array(0)) as Uint8Array;
        }
        set proposer_address(value: Uint8Array) {
            pb_1.Message.setField(this, 14, value);
        }
        static fromObject(data: {
            version?: ReturnType<typeof dependency_4.tendermint.version.Consensus.prototype.toObject>;
            chain_id?: string;
            height?: number;
            time?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
            last_block_id?: ReturnType<typeof BlockID.prototype.toObject>;
            last_commit_hash?: Uint8Array;
            data_hash?: Uint8Array;
            validators_hash?: Uint8Array;
            next_validators_hash?: Uint8Array;
            consensus_hash?: Uint8Array;
            app_hash?: Uint8Array;
            last_results_hash?: Uint8Array;
            evidence_hash?: Uint8Array;
            proposer_address?: Uint8Array;
        }): Header {
            const message = new Header({});
            if (data.version != null) {
                message.version = dependency_4.tendermint.version.Consensus.fromObject(data.version);
            }
            if (data.chain_id != null) {
                message.chain_id = data.chain_id;
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.time != null) {
                message.time = dependency_2.google.protobuf.Timestamp.fromObject(data.time);
            }
            if (data.last_block_id != null) {
                message.last_block_id = BlockID.fromObject(data.last_block_id);
            }
            if (data.last_commit_hash != null) {
                message.last_commit_hash = data.last_commit_hash;
            }
            if (data.data_hash != null) {
                message.data_hash = data.data_hash;
            }
            if (data.validators_hash != null) {
                message.validators_hash = data.validators_hash;
            }
            if (data.next_validators_hash != null) {
                message.next_validators_hash = data.next_validators_hash;
            }
            if (data.consensus_hash != null) {
                message.consensus_hash = data.consensus_hash;
            }
            if (data.app_hash != null) {
                message.app_hash = data.app_hash;
            }
            if (data.last_results_hash != null) {
                message.last_results_hash = data.last_results_hash;
            }
            if (data.evidence_hash != null) {
                message.evidence_hash = data.evidence_hash;
            }
            if (data.proposer_address != null) {
                message.proposer_address = data.proposer_address;
            }
            return message;
        }
        toObject() {
            const data: {
                version?: ReturnType<typeof dependency_4.tendermint.version.Consensus.prototype.toObject>;
                chain_id?: string;
                height?: number;
                time?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
                last_block_id?: ReturnType<typeof BlockID.prototype.toObject>;
                last_commit_hash?: Uint8Array;
                data_hash?: Uint8Array;
                validators_hash?: Uint8Array;
                next_validators_hash?: Uint8Array;
                consensus_hash?: Uint8Array;
                app_hash?: Uint8Array;
                last_results_hash?: Uint8Array;
                evidence_hash?: Uint8Array;
                proposer_address?: Uint8Array;
            } = {};
            if (this.version != null) {
                data.version = this.version.toObject();
            }
            if (this.chain_id != null) {
                data.chain_id = this.chain_id;
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.time != null) {
                data.time = this.time.toObject();
            }
            if (this.last_block_id != null) {
                data.last_block_id = this.last_block_id.toObject();
            }
            if (this.last_commit_hash != null) {
                data.last_commit_hash = this.last_commit_hash;
            }
            if (this.data_hash != null) {
                data.data_hash = this.data_hash;
            }
            if (this.validators_hash != null) {
                data.validators_hash = this.validators_hash;
            }
            if (this.next_validators_hash != null) {
                data.next_validators_hash = this.next_validators_hash;
            }
            if (this.consensus_hash != null) {
                data.consensus_hash = this.consensus_hash;
            }
            if (this.app_hash != null) {
                data.app_hash = this.app_hash;
            }
            if (this.last_results_hash != null) {
                data.last_results_hash = this.last_results_hash;
            }
            if (this.evidence_hash != null) {
                data.evidence_hash = this.evidence_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.has_version)
                writer.writeMessage(1, this.version, () => this.version.serialize(writer));
            if (this.chain_id.length)
                writer.writeString(2, this.chain_id);
            if (this.height != 0)
                writer.writeInt64(3, this.height);
            if (this.has_time)
                writer.writeMessage(4, this.time, () => this.time.serialize(writer));
            if (this.has_last_block_id)
                writer.writeMessage(5, this.last_block_id, () => this.last_block_id.serialize(writer));
            if (this.last_commit_hash.length)
                writer.writeBytes(6, this.last_commit_hash);
            if (this.data_hash.length)
                writer.writeBytes(7, this.data_hash);
            if (this.validators_hash.length)
                writer.writeBytes(8, this.validators_hash);
            if (this.next_validators_hash.length)
                writer.writeBytes(9, this.next_validators_hash);
            if (this.consensus_hash.length)
                writer.writeBytes(10, this.consensus_hash);
            if (this.app_hash.length)
                writer.writeBytes(11, this.app_hash);
            if (this.last_results_hash.length)
                writer.writeBytes(12, this.last_results_hash);
            if (this.evidence_hash.length)
                writer.writeBytes(13, this.evidence_hash);
            if (this.proposer_address.length)
                writer.writeBytes(14, this.proposer_address);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Header {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Header();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.version, () => message.version = dependency_4.tendermint.version.Consensus.deserialize(reader));
                        break;
                    case 2:
                        message.chain_id = reader.readString();
                        break;
                    case 3:
                        message.height = reader.readInt64();
                        break;
                    case 4:
                        reader.readMessage(message.time, () => message.time = dependency_2.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 5:
                        reader.readMessage(message.last_block_id, () => message.last_block_id = BlockID.deserialize(reader));
                        break;
                    case 6:
                        message.last_commit_hash = reader.readBytes();
                        break;
                    case 7:
                        message.data_hash = reader.readBytes();
                        break;
                    case 8:
                        message.validators_hash = reader.readBytes();
                        break;
                    case 9:
                        message.next_validators_hash = reader.readBytes();
                        break;
                    case 10:
                        message.consensus_hash = reader.readBytes();
                        break;
                    case 11:
                        message.app_hash = reader.readBytes();
                        break;
                    case 12:
                        message.last_results_hash = reader.readBytes();
                        break;
                    case 13:
                        message.evidence_hash = reader.readBytes();
                        break;
                    case 14:
                        message.proposer_address = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Header {
            return Header.deserialize(bytes);
        }
    }
    export class Data 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[];
        }): Data {
            const message = new Data({});
            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): Data {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Data();
            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): Data {
            return Data.deserialize(bytes);
        }
    }
    export class Vote extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            type?: SignedMsgType;
            height?: number;
            round?: number;
            block_id?: BlockID;
            timestamp?: dependency_2.google.protobuf.Timestamp;
            validator_address?: Uint8Array;
            validator_index?: number;
            signature?: Uint8Array;
            extension?: Uint8Array;
            extension_signature?: 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 ("type" in data && data.type != undefined) {
                    this.type = data.type;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("round" in data && data.round != undefined) {
                    this.round = data.round;
                }
                if ("block_id" in data && data.block_id != undefined) {
                    this.block_id = data.block_id;
                }
                if ("timestamp" in data && data.timestamp != undefined) {
                    this.timestamp = data.timestamp;
                }
                if ("validator_address" in data && data.validator_address != undefined) {
                    this.validator_address = data.validator_address;
                }
                if ("validator_index" in data && data.validator_index != undefined) {
                    this.validator_index = data.validator_index;
                }
                if ("signature" in data && data.signature != undefined) {
                    this.signature = data.signature;
                }
                if ("extension" in data && data.extension != undefined) {
                    this.extension = data.extension;
                }
                if ("extension_signature" in data && data.extension_signature != undefined) {
                    this.extension_signature = data.extension_signature;
                }
            }
        }
        get type() {
            return pb_1.Message.getFieldWithDefault(this, 1, SignedMsgType.SIGNED_MSG_TYPE_UNKNOWN) as SignedMsgType;
        }
        set type(value: SignedMsgType) {
            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 round() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set round(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get block_id() {
            return pb_1.Message.getWrapperField(this, BlockID, 4) as BlockID;
        }
        set block_id(value: BlockID) {
            pb_1.Message.setWrapperField(this, 4, value);
        }
        get has_block_id() {
            return pb_1.Message.getField(this, 4) != null;
        }
        get timestamp() {
            return pb_1.Message.getWrapperField(this, dependency_2.google.protobuf.Timestamp, 5) as dependency_2.google.protobuf.Timestamp;
        }
        set timestamp(value: dependency_2.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 5, value);
        }
        get has_timestamp() {
            return pb_1.Message.getField(this, 5) != null;
        }
        get validator_address() {
            return pb_1.Message.getFieldWithDefault(this, 6, new Uint8Array(0)) as Uint8Array;
        }
        set validator_address(value: Uint8Array) {
            pb_1.Message.setField(this, 6, value);
        }
        get validator_index() {
            return pb_1.Message.getFieldWithDefault(this, 7, 0) as number;
        }
        set validator_index(value: number) {
            pb_1.Message.setField(this, 7, value);
        }
        get signature() {
            return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array(0)) as Uint8Array;
        }
        set signature(value: Uint8Array) {
            pb_1.Message.setField(this, 8, value);
        }
        get extension() {
            return pb_1.Message.getFieldWithDefault(this, 9, new Uint8Array(0)) as Uint8Array;
        }
        set extension(value: Uint8Array) {
            pb_1.Message.setField(this, 9, value);
        }
        get extension_signature() {
            return pb_1.Message.getFieldWithDefault(this, 10, new Uint8Array(0)) as Uint8Array;
        }
        set extension_signature(value: Uint8Array) {
            pb_1.Message.setField(this, 10, value);
        }
        static fromObject(data: {
            type?: SignedMsgType;
            height?: number;
            round?: number;
            block_id?: ReturnType<typeof BlockID.prototype.toObject>;
            timestamp?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
            validator_address?: Uint8Array;
            validator_index?: number;
            signature?: Uint8Array;
            extension?: Uint8Array;
            extension_signature?: Uint8Array;
        }): Vote {
            const message = new Vote({});
            if (data.type != null) {
                message.type = data.type;
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.round != null) {
                message.round = data.round;
            }
            if (data.block_id != null) {
                message.block_id = BlockID.fromObject(data.block_id);
            }
            if (data.timestamp != null) {
                message.timestamp = dependency_2.google.protobuf.Timestamp.fromObject(data.timestamp);
            }
            if (data.validator_address != null) {
                message.validator_address = data.validator_address;
            }
            if (data.validator_index != null) {
                message.validator_index = data.validator_index;
            }
            if (data.signature != null) {
                message.signature = data.signature;
            }
            if (data.extension != null) {
                message.extension = data.extension;
            }
            if (data.extension_signature != null) {
                message.extension_signature = data.extension_signature;
            }
            return message;
        }
        toObject() {
            const data: {
                type?: SignedMsgType;
                height?: number;
                round?: number;
                block_id?: ReturnType<typeof BlockID.prototype.toObject>;
                timestamp?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
                validator_address?: Uint8Array;
                validator_index?: number;
                signature?: Uint8Array;
                extension?: Uint8Array;
                extension_signature?: Uint8Array;
            } = {};
            if (this.type != null) {
                data.type = this.type;
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.round != null) {
                data.round = this.round;
            }
            if (this.block_id != null) {
                data.block_id = this.block_id.toObject();
            }
            if (this.timestamp != null) {
                data.timestamp = this.timestamp.toObject();
            }
            if (this.validator_address != null) {
                data.validator_address = this.validator_address;
            }
            if (this.validator_index != null) {
                data.validator_index = this.validator_index;
            }
            if (this.signature != null) {
                data.signature = this.signature;
            }
            if (this.extension != null) {
                data.extension = this.extension;
            }
            if (this.extension_signature != null) {
                data.extension_signature = this.extension_signature;
            }
            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 != SignedMsgType.SIGNED_MSG_TYPE_UNKNOWN)
                writer.writeEnum(1, this.type);
            if (this.height != 0)
                writer.writeInt64(2, this.height);
            if (this.round != 0)
                writer.writeInt32(3, this.round);
            if (this.has_block_id)
                writer.writeMessage(4, this.block_id, () => this.block_id.serialize(writer));
            if (this.has_timestamp)
                writer.writeMessage(5, this.timestamp, () => this.timestamp.serialize(writer));
            if (this.validator_address.length)
                writer.writeBytes(6, this.validator_address);
            if (this.validator_index != 0)
                writer.writeInt32(7, this.validator_index);
            if (this.signature.length)
                writer.writeBytes(8, this.signature);
            if (this.extension.length)
                writer.writeBytes(9, this.extension);
            if (this.extension_signature.length)
                writer.writeBytes(10, this.extension_signature);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Vote {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Vote();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.type = reader.readEnum();
                        break;
                    case 2:
                        message.height = reader.readInt64();
                        break;
                    case 3:
                        message.round = reader.readInt32();
                        break;
                    case 4:
                        reader.readMessage(message.block_id, () => message.block_id = BlockID.deserialize(reader));
                        break;
                    case 5:
                        reader.readMessage(message.timestamp, () => message.timestamp = dependency_2.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 6:
                        message.validator_address = reader.readBytes();
                        break;
                    case 7:
                        message.validator_index = reader.readInt32();
                        break;
                    case 8:
                        message.signature = reader.readBytes();
                        break;
                    case 9:
                        message.extension = reader.readBytes();
                        break;
                    case 10:
                        message.extension_signature = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Vote {
            return Vote.deserialize(bytes);
        }
    }
    export class Commit extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            height?: number;
            round?: number;
            block_id?: BlockID;
            signatures?: CommitSig[];
        }) {
            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 ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("round" in data && data.round != undefined) {
                    this.round = data.round;
                }
                if ("block_id" in data && data.block_id != undefined) {
                    this.block_id = data.block_id;
                }
                if ("signatures" in data && data.signatures != undefined) {
                    this.signatures = data.signatures;
                }
            }
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get round() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set round(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        get block_id() {
            return pb_1.Message.getWrapperField(this, BlockID, 3) as BlockID;
        }
        set block_id(value: BlockID) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_block_id() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get signatures() {
            return pb_1.Message.getRepeatedWrapperField(this, CommitSig, 4) as CommitSig[];
        }
        set signatures(value: CommitSig[]) {
            pb_1.Message.setRepeatedWrapperField(this, 4, value);
        }
        static fromObject(data: {
            height?: number;
            round?: number;
            block_id?: ReturnType<typeof BlockID.prototype.toObject>;
            signatures?: ReturnType<typeof CommitSig.prototype.toObject>[];
        }): Commit {
            const message = new Commit({});
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.round != null) {
                message.round = data.round;
            }
            if (data.block_id != null) {
                message.block_id = BlockID.fromObject(data.block_id);
            }
            if (data.signatures != null) {
                message.signatures = data.signatures.map(item => CommitSig.fromObject(item));
            }
            return message;
        }
        toObject() {
            const data: {
                height?: number;
                round?: number;
                block_id?: ReturnType<typeof BlockID.prototype.toObject>;
                signatures?: ReturnType<typeof CommitSig.prototype.toObject>[];
            } = {};
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.round != null) {
                data.round = this.round;
            }
            if (this.block_id != null) {
                data.block_id = this.block_id.toObject();
            }
            if (this.signatures != null) {
                data.signatures = this.signatures.map((item: CommitSig) => 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.height != 0)
                writer.writeInt64(1, this.height);
            if (this.round != 0)
                writer.writeInt32(2, this.round);
            if (this.has_block_id)
                writer.writeMessage(3, this.block_id, () => this.block_id.serialize(writer));
            if (this.signatures.length)
                writer.writeRepeatedMessage(4, this.signatures, (item: CommitSig) => item.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Commit {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Commit();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.height = reader.readInt64();
                        break;
                    case 2:
                        message.round = reader.readInt32();
                        break;
                    case 3:
                        reader.readMessage(message.block_id, () => message.block_id = BlockID.deserialize(reader));
                        break;
                    case 4:
                        reader.readMessage(message.signatures, () => pb_1.Message.addToRepeatedWrapperField(message, 4, CommitSig.deserialize(reader), CommitSig));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Commit {
            return Commit.deserialize(bytes);
        }
    }
    export class CommitSig extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            block_id_flag?: dependency_5.tendermint.types.BlockIDFlag;
            validator_address?: Uint8Array;
            timestamp?: dependency_2.google.protobuf.Timestamp;
            signature?: 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 ("block_id_flag" in data && data.block_id_flag != undefined) {
                    this.block_id_flag = data.block_id_flag;
                }
                if ("validator_address" in data && data.validator_address != undefined) {
                    this.validator_address = data.validator_address;
                }
                if ("timestamp" in data && data.timestamp != undefined) {
                    this.timestamp = data.timestamp;
                }
                if ("signature" in data && data.signature != undefined) {
                    this.signature = data.signature;
                }
            }
        }
        get block_id_flag() {
            return pb_1.Message.getFieldWithDefault(this, 1, dependency_5.tendermint.types.BlockIDFlag.BLOCK_ID_FLAG_UNKNOWN) as dependency_5.tendermint.types.BlockIDFlag;
        }
        set block_id_flag(value: dependency_5.tendermint.types.BlockIDFlag) {
            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 timestamp() {
            return pb_1.Message.getWrapperField(this, dependency_2.google.protobuf.Timestamp, 3) as dependency_2.google.protobuf.Timestamp;
        }
        set timestamp(value: dependency_2.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_timestamp() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get signature() {
            return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
        }
        set signature(value: Uint8Array) {
            pb_1.Message.setField(this, 4, value);
        }
        static fromObject(data: {
            block_id_flag?: dependency_5.tendermint.types.BlockIDFlag;
            validator_address?: Uint8Array;
            timestamp?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
            signature?: Uint8Array;
        }): CommitSig {
            const message = new CommitSig({});
            if (data.block_id_flag != null) {
                message.block_id_flag = data.block_id_flag;
            }
            if (data.validator_address != null) {
                message.validator_address = data.validator_address;
            }
            if (data.timestamp != null) {
                message.timestamp = dependency_2.google.protobuf.Timestamp.fromObject(data.timestamp);
            }
            if (data.signature != null) {
                message.signature = data.signature;
            }
            return message;
        }
        toObject() {
            const data: {
                block_id_flag?: dependency_5.tendermint.types.BlockIDFlag;
                validator_address?: Uint8Array;
                timestamp?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
                signature?: Uint8Array;
            } = {};
            if (this.block_id_flag != null) {
                data.block_id_flag = this.block_id_flag;
            }
            if (this.validator_address != null) {
                data.validator_address = this.validator_address;
            }
            if (this.timestamp != null) {
                data.timestamp = this.timestamp.toObject();
            }
            if (this.signature != null) {
                data.signature = this.signature;
            }
            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.block_id_flag != dependency_5.tendermint.types.BlockIDFlag.BLOCK_ID_FLAG_UNKNOWN)
                writer.writeEnum(1, this.block_id_flag);
            if (this.validator_address.length)
                writer.writeBytes(2, this.validator_address);
            if (this.has_timestamp)
                writer.writeMessage(3, this.timestamp, () => this.timestamp.serialize(writer));
            if (this.signature.length)
                writer.writeBytes(4, this.signature);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): CommitSig {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new CommitSig();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.block_id_flag = reader.readEnum();
                        break;
                    case 2:
                        message.validator_address = reader.readBytes();
                        break;
                    case 3:
                        reader.readMessage(message.timestamp, () => message.timestamp = dependency_2.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 4:
                        message.signature = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): CommitSig {
            return CommitSig.deserialize(bytes);
        }
    }
    export class ExtendedCommit extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            height?: number;
            round?: number;
            block_id?: BlockID;
            extended_signatures?: ExtendedCommitSig[];
        }) {
            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 ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("round" in data && data.round != undefined) {
                    this.round = data.round;
                }
                if ("block_id" in data && data.block_id != undefined) {
                    this.block_id = data.block_id;
                }
                if ("extended_signatures" in data && data.extended_signatures != undefined) {
                    this.extended_signatures = data.extended_signatures;
                }
            }
        }
        get height() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set height(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get round() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set round(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        get block_id() {
            return pb_1.Message.getWrapperField(this, BlockID, 3) as BlockID;
        }
        set block_id(value: BlockID) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_block_id() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get extended_signatures() {
            return pb_1.Message.getRepeatedWrapperField(this, ExtendedCommitSig, 4) as ExtendedCommitSig[];
        }
        set extended_signatures(value: ExtendedCommitSig[]) {
            pb_1.Message.setRepeatedWrapperField(this, 4, value);
        }
        static fromObject(data: {
            height?: number;
            round?: number;
            block_id?: ReturnType<typeof BlockID.prototype.toObject>;
            extended_signatures?: ReturnType<typeof ExtendedCommitSig.prototype.toObject>[];
        }): ExtendedCommit {
            const message = new ExtendedCommit({});
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.round != null) {
                message.round = data.round;
            }
            if (data.block_id != null) {
                message.block_id = BlockID.fromObject(data.block_id);
            }
            if (data.extended_signatures != null) {
                message.extended_signatures = data.extended_signatures.map(item => ExtendedCommitSig.fromObject(item));
            }
            return message;
        }
        toObject() {
            const data: {
                height?: number;
                round?: number;
                block_id?: ReturnType<typeof BlockID.prototype.toObject>;
                extended_signatures?: ReturnType<typeof ExtendedCommitSig.prototype.toObject>[];
            } = {};
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.round != null) {
                data.round = this.round;
            }
            if (this.block_id != null) {
                data.block_id = this.block_id.toObject();
            }
            if (this.extended_signatures != null) {
                data.extended_signatures = this.extended_signatures.map((item: ExtendedCommitSig) => 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.height != 0)
                writer.writeInt64(1, this.height);
            if (this.round != 0)
                writer.writeInt32(2, this.round);
            if (this.has_block_id)
                writer.writeMessage(3, this.block_id, () => this.block_id.serialize(writer));
            if (this.extended_signatures.length)
                writer.writeRepeatedMessage(4, this.extended_signatures, (item: ExtendedCommitSig) => item.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExtendedCommit {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExtendedCommit();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.height = reader.readInt64();
                        break;
                    case 2:
                        message.round = reader.readInt32();
                        break;
                    case 3:
                        reader.readMessage(message.block_id, () => message.block_id = BlockID.deserialize(reader));
                        break;
                    case 4:
                        reader.readMessage(message.extended_signatures, () => pb_1.Message.addToRepeatedWrapperField(message, 4, ExtendedCommitSig.deserialize(reader), ExtendedCommitSig));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ExtendedCommit {
            return ExtendedCommit.deserialize(bytes);
        }
    }
    export class ExtendedCommitSig extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            block_id_flag?: dependency_5.tendermint.types.BlockIDFlag;
            validator_address?: Uint8Array;
            timestamp?: dependency_2.google.protobuf.Timestamp;
            signature?: Uint8Array;
            extension?: Uint8Array;
            extension_signature?: 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 ("block_id_flag" in data && data.block_id_flag != undefined) {
                    this.block_id_flag = data.block_id_flag;
                }
                if ("validator_address" in data && data.validator_address != undefined) {
                    this.validator_address = data.validator_address;
                }
                if ("timestamp" in data && data.timestamp != undefined) {
                    this.timestamp = data.timestamp;
                }
                if ("signature" in data && data.signature != undefined) {
                    this.signature = data.signature;
                }
                if ("extension" in data && data.extension != undefined) {
                    this.extension = data.extension;
                }
                if ("extension_signature" in data && data.extension_signature != undefined) {
                    this.extension_signature = data.extension_signature;
                }
            }
        }
        get block_id_flag() {
            return pb_1.Message.getFieldWithDefault(this, 1, dependency_5.tendermint.types.BlockIDFlag.BLOCK_ID_FLAG_UNKNOWN) as dependency_5.tendermint.types.BlockIDFlag;
        }
        set block_id_flag(value: dependency_5.tendermint.types.BlockIDFlag) {
            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 timestamp() {
            return pb_1.Message.getWrapperField(this, dependency_2.google.protobuf.Timestamp, 3) as dependency_2.google.protobuf.Timestamp;
        }
        set timestamp(value: dependency_2.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_timestamp() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get signature() {
            return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
        }
        set signature(value: Uint8Array) {
            pb_1.Message.setField(this, 4, value);
        }
        get extension() {
            return pb_1.Message.getFieldWithDefault(this, 5, new Uint8Array(0)) as Uint8Array;
        }
        set extension(value: Uint8Array) {
            pb_1.Message.setField(this, 5, value);
        }
        get extension_signature() {
            return pb_1.Message.getFieldWithDefault(this, 6, new Uint8Array(0)) as Uint8Array;
        }
        set extension_signature(value: Uint8Array) {
            pb_1.Message.setField(this, 6, value);
        }
        static fromObject(data: {
            block_id_flag?: dependency_5.tendermint.types.BlockIDFlag;
            validator_address?: Uint8Array;
            timestamp?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
            signature?: Uint8Array;
            extension?: Uint8Array;
            extension_signature?: Uint8Array;
        }): ExtendedCommitSig {
            const message = new ExtendedCommitSig({});
            if (data.block_id_flag != null) {
                message.block_id_flag = data.block_id_flag;
            }
            if (data.validator_address != null) {
                message.validator_address = data.validator_address;
            }
            if (data.timestamp != null) {
                message.timestamp = dependency_2.google.protobuf.Timestamp.fromObject(data.timestamp);
            }
            if (data.signature != null) {
                message.signature = data.signature;
            }
            if (data.extension != null) {
                message.extension = data.extension;
            }
            if (data.extension_signature != null) {
                message.extension_signature = data.extension_signature;
            }
            return message;
        }
        toObject() {
            const data: {
                block_id_flag?: dependency_5.tendermint.types.BlockIDFlag;
                validator_address?: Uint8Array;
                timestamp?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
                signature?: Uint8Array;
                extension?: Uint8Array;
                extension_signature?: Uint8Array;
            } = {};
            if (this.block_id_flag != null) {
                data.block_id_flag = this.block_id_flag;
            }
            if (this.validator_address != null) {
                data.validator_address = this.validator_address;
            }
            if (this.timestamp != null) {
                data.timestamp = this.timestamp.toObject();
            }
            if (this.signature != null) {
                data.signature = this.signature;
            }
            if (this.extension != null) {
                data.extension = this.extension;
            }
            if (this.extension_signature != null) {
                data.extension_signature = this.extension_signature;
            }
            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.block_id_flag != dependency_5.tendermint.types.BlockIDFlag.BLOCK_ID_FLAG_UNKNOWN)
                writer.writeEnum(1, this.block_id_flag);
            if (this.validator_address.length)
                writer.writeBytes(2, this.validator_address);
            if (this.has_timestamp)
                writer.writeMessage(3, this.timestamp, () => this.timestamp.serialize(writer));
            if (this.signature.length)
                writer.writeBytes(4, this.signature);
            if (this.extension.length)
                writer.writeBytes(5, this.extension);
            if (this.extension_signature.length)
                writer.writeBytes(6, this.extension_signature);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExtendedCommitSig {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExtendedCommitSig();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.block_id_flag = reader.readEnum();
                        break;
                    case 2:
                        message.validator_address = reader.readBytes();
                        break;
                    case 3:
                        reader.readMessage(message.timestamp, () => message.timestamp = dependency_2.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 4:
                        message.signature = reader.readBytes();
                        break;
                    case 5:
                        message.extension = reader.readBytes();
                        break;
                    case 6:
                        message.extension_signature = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ExtendedCommitSig {
            return ExtendedCommitSig.deserialize(bytes);
        }
    }
    export class Proposal extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            type?: SignedMsgType;
            height?: number;
            round?: number;
            pol_round?: number;
            block_id?: BlockID;
            timestamp?: dependency_2.google.protobuf.Timestamp;
            signature?: 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 ("type" in data && data.type != undefined) {
                    this.type = data.type;
                }
                if ("height" in data && data.height != undefined) {
                    this.height = data.height;
                }
                if ("round" in data && data.round != undefined) {
                    this.round = data.round;
                }
                if ("pol_round" in data && data.pol_round != undefined) {
                    this.pol_round = data.pol_round;
                }
                if ("block_id" in data && data.block_id != undefined) {
                    this.block_id = data.block_id;
                }
                if ("timestamp" in data && data.timestamp != undefined) {
                    this.timestamp = data.timestamp;
                }
                if ("signature" in data && data.signature != undefined) {
                    this.signature = data.signature;
                }
            }
        }
        get type() {
            return pb_1.Message.getFieldWithDefault(this, 1, SignedMsgType.SIGNED_MSG_TYPE_UNKNOWN) as SignedMsgType;
        }
        set type(value: SignedMsgType) {
            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 round() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set round(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get pol_round() {
            return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
        }
        set pol_round(value: number) {
            pb_1.Message.setField(this, 4, value);
        }
        get block_id() {
            return pb_1.Message.getWrapperField(this, BlockID, 5) as BlockID;
        }
        set block_id(value: BlockID) {
            pb_1.Message.setWrapperField(this, 5, value);
        }
        get has_block_id() {
            return pb_1.Message.getField(this, 5) != null;
        }
        get timestamp() {
            return pb_1.Message.getWrapperField(this, dependency_2.google.protobuf.Timestamp, 6) as dependency_2.google.protobuf.Timestamp;
        }
        set timestamp(value: dependency_2.google.protobuf.Timestamp) {
            pb_1.Message.setWrapperField(this, 6, value);
        }
        get has_timestamp() {
            return pb_1.Message.getField(this, 6) != null;
        }
        get signature() {
            return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array(0)) as Uint8Array;
        }
        set signature(value: Uint8Array) {
            pb_1.Message.setField(this, 7, value);
        }
        static fromObject(data: {
            type?: SignedMsgType;
            height?: number;
            round?: number;
            pol_round?: number;
            block_id?: ReturnType<typeof BlockID.prototype.toObject>;
            timestamp?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
            signature?: Uint8Array;
        }): Proposal {
            const message = new Proposal({});
            if (data.type != null) {
                message.type = data.type;
            }
            if (data.height != null) {
                message.height = data.height;
            }
            if (data.round != null) {
                message.round = data.round;
            }
            if (data.pol_round != null) {
                message.pol_round = data.pol_round;
            }
            if (data.block_id != null) {
                message.block_id = BlockID.fromObject(data.block_id);
            }
            if (data.timestamp != null) {
                message.timestamp = dependency_2.google.protobuf.Timestamp.fromObject(data.timestamp);
            }
            if (data.signature != null) {
                message.signature = data.signature;
            }
            return message;
        }
        toObject() {
            const data: {
                type?: SignedMsgType;
                height?: number;
                round?: number;
                pol_round?: number;
                block_id?: ReturnType<typeof BlockID.prototype.toObject>;
                timestamp?: ReturnType<typeof dependency_2.google.protobuf.Timestamp.prototype.toObject>;
                signature?: Uint8Array;
            } = {};
            if (this.type != null) {
                data.type = this.type;
            }
            if (this.height != null) {
                data.height = this.height;
            }
            if (this.round != null) {
                data.round = this.round;
            }
            if (this.pol_round != null) {
                data.pol_round = this.pol_round;
            }
            if (this.block_id != null) {
                data.block_id = this.block_id.toObject();
            }
            if (this.timestamp != null) {
                data.timestamp = this.timestamp.toObject();
            }
            if (this.signature != null) {
                data.signature = this.signature;
            }
            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 != SignedMsgType.SIGNED_MSG_TYPE_UNKNOWN)
                writer.writeEnum(1, this.type);
            if (this.height != 0)
                writer.writeInt64(2, this.height);
            if (this.round != 0)
                writer.writeInt32(3, this.round);
            if (this.pol_round != 0)
                writer.writeInt32(4, this.pol_round);
            if (this.has_block_id)
                writer.writeMessage(5, this.block_id, () => this.block_id.serialize(writer));
            if (this.has_timestamp)
                writer.writeMessage(6, this.timestamp, () => this.timestamp.serialize(writer));
            if (this.signature.length)
                writer.writeBytes(7, this.signature);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Proposal {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Proposal();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.type = reader.readEnum();
                        break;
                    case 2:
                        message.height = reader.readInt64();
                        break;
                    case 3:
                        message.round = reader.readInt32();
                        break;
                    case 4:
                        message.pol_round = reader.readInt32();
                        break;
                    case 5:
                        reader.readMessage(message.block_id, () => message.block_id = BlockID.deserialize(reader));
                        break;
                    case 6:
                        reader.readMessage(message.timestamp, () => message.timestamp = dependency_2.google.protobuf.Timestamp.deserialize(reader));
                        break;
                    case 7:
                        message.signature = reader.readBytes();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Proposal {
            return Proposal.deserialize(bytes);
        }
    }
    export class SignedHeader extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            header?: Header;
            commit?: Commit;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("header" in data && data.header != undefined) {
                    this.header = data.header;
                }
                if ("commit" in data && data.commit != undefined) {
                    this.commit = data.commit;
                }
            }
        }
        get header() {
            return pb_1.Message.getWrapperField(this, Header, 1) as Header;
        }
        set header(value: Header) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_header() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get commit() {
            return pb_1.Message.getWrapperField(this, Commit, 2) as Commit;
        }
        set commit(value: Commit) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_commit() {
            return pb_1.Message.getField(this, 2) != null;
        }
        static fromObject(data: {
            header?: ReturnType<typeof Header.prototype.toObject>;
            commit?: ReturnType<typeof Commit.prototype.toObject>;
        }): SignedHeader {
            const message = new SignedHeader({});
            if (data.header != null) {
                message.header = Header.fromObject(data.header);
            }
            if (data.commit != null) {
                message.commit = Commit.fromObject(data.commit);
            }
            return message;
        }
        toObject() {
            const data: {
                header?: ReturnType<typeof Header.prototype.toObject>;
                commit?: ReturnType<typeof Commit.prototype.toObject>;
            } = {};
            if (this.header != null) {
                data.header = this.header.toObject();
            }
            if (this.commit != null) {
                data.commit = this.commit.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_header)
                writer.writeMessage(1, this.header, () => this.header.serialize(writer));
            if (this.has_commit)
                writer.writeMessage(2, this.commit, () => this.commit.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): SignedHeader {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new SignedHeader();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.header, () => message.header = Header.deserialize(reader));
                        break;
                    case 2:
                        reader.readMessage(message.commit, () => message.commit = Commit.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): SignedHeader {
            return SignedHeader.deserialize(bytes);
        }
    }
    export class LightBlock extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            signed_header?: SignedHeader;
            validator_set?: dependency_5.tendermint.types.ValidatorSet;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("signed_header" in data && data.signed_header != undefined) {
                    this.signed_header = data.signed_header;
                }
                if ("validator_set" in data && data.validator_set != undefined) {
                    this.validator_set = data.validator_set;
                }
            }
        }
        get signed_header() {
            return pb_1.Message.getWrapperField(this, SignedHeader, 1) as SignedHeader;
        }
        set signed_header(value: SignedHeader) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_signed_header() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get validator_set() {
            return pb_1.Message.getWrapperField(this, dependency_5.tendermint.types.ValidatorSet, 2) as dependency_5.tendermint.types.ValidatorSet;
        }
        set validator_set(value: dependency_5.tendermint.types.ValidatorSet) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_validator_set() {
            return pb_1.Message.getField(this, 2) != null;
        }
        static fromObject(data: {
            signed_header?: ReturnType<typeof SignedHeader.prototype.toObject>;
            validator_set?: ReturnType<typeof dependency_5.tendermint.types.ValidatorSet.prototype.toObject>;
        }): LightBlock {
            const message = new LightBlock({});
            if (data.signed_header != null) {
                message.signed_header = SignedHeader.fromObject(data.signed_header);
            }
            if (data.validator_set != null) {
                message.validator_set = dependency_5.tendermint.types.ValidatorSet.fromObject(data.validator_set);
            }
            return message;
        }
        toObject() {
            const data: {
                signed_header?: ReturnType<typeof SignedHeader.prototype.toObject>;
                validator_set?: ReturnType<typeof dependency_5.tendermint.types.ValidatorSet.prototype.toObject>;
            } = {};
            if (this.signed_header != null) {
                data.signed_header = this.signed_header.toObject();
            }
            if (this.validator_set != null) {
                data.validator_set = this.validator_set.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_signed_header)
                writer.writeMessage(1, this.signed_header, () => this.signed_header.serialize(writer));
            if (this.has_validator_set)
                writer.writeMessage(2, this.validator_set, () => this.validator_set.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): LightBlock {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new LightBlock();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.signed_header, () => message.signed_header = SignedHeader.deserialize(reader));
                        break;
                    case 2:
                        reader.readMessage(message.validator_set, () => message.validator_set = dependency_5.tendermint.types.ValidatorSet.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): LightBlock {
            return LightBlock.deserialize(bytes);
        }
    }
    export class BlockMeta extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            block_id?: BlockID;
            block_size?: number;
            header?: Header;
            num_txs?: 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 ("block_id" in data && data.block_id != undefined) {
                    this.block_id = data.block_id;
                }
                if ("block_size" in data && data.block_size != undefined) {
                    this.block_size = data.block_size;
                }
                if ("header" in data && data.header != undefined) {
                    this.header = data.header;
                }
                if ("num_txs" in data && data.num_txs != undefined) {
                    this.num_txs = data.num_txs;
                }
            }
        }
        get block_id() {
            return pb_1.Message.getWrapperField(this, BlockID, 1) as BlockID;
        }
        set block_id(value: BlockID) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_block_id() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get block_size() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set block_size(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        get header() {
            return pb_1.Message.getWrapperField(this, Header, 3) as Header;
        }
        set header(value: Header) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_header() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get num_txs() {
            return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
        }
        set num_txs(value: number) {
            pb_1.Message.setField(this, 4, value);
        }
        static fromObject(data: {
            block_id?: ReturnType<typeof BlockID.prototype.toObject>;
            block_size?: number;
            header?: ReturnType<typeof Header.prototype.toObject>;
            num_txs?: number;
        }): BlockMeta {
            const message = new BlockMeta({});
            if (data.block_id != null) {
                message.block_id = BlockID.fromObject(data.block_id);
            }
            if (data.block_size != null) {
                message.block_size = data.block_size;
            }
            if (data.header != null) {
                message.header = Header.fromObject(data.header);
            }
            if (data.num_txs != null) {
                message.num_txs = data.num_txs;
            }
            return message;
        }
        toObject() {
            const data: {
                block_id?: ReturnType<typeof BlockID.prototype.toObject>;
                block_size?: number;
                header?: ReturnType<typeof Header.prototype.toObject>;
                num_txs?: number;
            } = {};
            if (this.block_id != null) {
                data.block_id = this.block_id.toObject();
            }
            if (this.block_size != null) {
                data.block_size = this.block_size;
            }
            if (this.header != null) {
                data.header = this.header.toObject();
            }
            if (this.num_txs != null) {
                data.num_txs = this.num_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.has_block_id)
                writer.writeMessage(1, this.block_id, () => this.block_id.serialize(writer));
            if (this.block_size != 0)
                writer.writeInt64(2, this.block_size);
            if (this.has_header)
                writer.writeMessage(3, this.header, () => this.header.serialize(writer));
            if (this.num_txs != 0)
                writer.writeInt64(4, this.num_txs);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BlockMeta {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BlockMeta();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.block_id, () => message.block_id = BlockID.deserialize(reader));
                        break;
                    case 2:
                        message.block_size = reader.readInt64();
                        break;
                    case 3:
                        reader.readMessage(message.header, () => message.header = Header.deserialize(reader));
                        break;
                    case 4:
                        message.num_txs = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): BlockMeta {
            return BlockMeta.deserialize(bytes);
        }
    }
    export class TxProof extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            root_hash?: Uint8Array;
            data?: Uint8Array;
            proof?: dependency_3.tendermint.crypto.Proof;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("root_hash" in data && data.root_hash != undefined) {
                    this.root_hash = data.root_hash;
                }
                if ("data" in data && data.data != undefined) {
                    this.data = data.data;
                }
                if ("proof" in data && data.proof != undefined) {
                    this.proof = data.proof;
                }
            }
        }
        get root_hash() {
            return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
        }
        set root_hash(value: Uint8Array) {
            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 proof() {
            return pb_1.Message.getWrapperField(this, dependency_3.tendermint.crypto.Proof, 3) as dependency_3.tendermint.crypto.Proof;
        }
        set proof(value: dependency_3.tendermint.crypto.Proof) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_proof() {
            return pb_1.Message.getField(this, 3) != null;
        }
        static fromObject(data: {
            root_hash?: Uint8Array;
            data?: Uint8Array;
            proof?: ReturnType<typeof dependency_3.tendermint.crypto.Proof.prototype.toObject>;
        }): TxProof {
            const message = new TxProof({});
            if (data.root_hash != null) {
                message.root_hash = data.root_hash;
            }
            if (data.data != null) {
                message.data = data.data;
            }
            if (data.proof != null) {
                message.proof = dependency_3.tendermint.crypto.Proof.fromObject(data.proof);
            }
            return message;
        }
        toObject() {
            const data: {
                root_hash?: Uint8Array;
                data?: Uint8Array;
                proof?: ReturnType<typeof dependency_3.tendermint.crypto.Proof.prototype.toObject>;
            } = {};
            if (this.root_hash != null) {
                data.root_hash = this.root_hash;
            }
            if (this.data != null) {
                data.data = this.data;
            }
            if (this.proof != null) {
                data.proof = this.proof.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.root_hash.length)
                writer.writeBytes(1, this.root_hash);
            if (this.data.length)
                writer.writeBytes(2, this.data);
            if (this.has_proof)
                writer.writeMessage(3, this.proof, () => this.proof.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): TxProof {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new TxProof();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.root_hash = reader.readBytes();
                        break;
                    case 2:
                        message.data = reader.readBytes();
                        break;
                    case 3:
                        reader.readMessage(message.proof, () => message.proof = dependency_3.tendermint.crypto.Proof.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): TxProof {
            return TxProof.deserialize(bytes);
        }
    }
}
