/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.20.3
 * source: tendermint/types/params.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../../gogoproto/gogo";
import * as dependency_2 from "./../../google/protobuf/duration";
import * as pb_1 from "google-protobuf";
export namespace tendermint.types {
    export class ConsensusParams extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            block?: BlockParams;
            evidence?: EvidenceParams;
            validator?: ValidatorParams;
            version?: VersionParams;
            abci?: ABCIParams;
        }) {
            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" in data && data.block != undefined) {
                    this.block = data.block;
                }
                if ("evidence" in data && data.evidence != undefined) {
                    this.evidence = data.evidence;
                }
                if ("validator" in data && data.validator != undefined) {
                    this.validator = data.validator;
                }
                if ("version" in data && data.version != undefined) {
                    this.version = data.version;
                }
                if ("abci" in data && data.abci != undefined) {
                    this.abci = data.abci;
                }
            }
        }
        get block() {
            return pb_1.Message.getWrapperField(this, BlockParams, 1) as BlockParams;
        }
        set block(value: BlockParams) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_block() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get evidence() {
            return pb_1.Message.getWrapperField(this, EvidenceParams, 2) as EvidenceParams;
        }
        set evidence(value: EvidenceParams) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_evidence() {
            return pb_1.Message.getField(this, 2) != null;
        }
        get validator() {
            return pb_1.Message.getWrapperField(this, ValidatorParams, 3) as ValidatorParams;
        }
        set validator(value: ValidatorParams) {
            pb_1.Message.setWrapperField(this, 3, value);
        }
        get has_validator() {
            return pb_1.Message.getField(this, 3) != null;
        }
        get version() {
            return pb_1.Message.getWrapperField(this, VersionParams, 4) as VersionParams;
        }
        set version(value: VersionParams) {
            pb_1.Message.setWrapperField(this, 4, value);
        }
        get has_version() {
            return pb_1.Message.getField(this, 4) != null;
        }
        get abci() {
            return pb_1.Message.getWrapperField(this, ABCIParams, 5) as ABCIParams;
        }
        set abci(value: ABCIParams) {
            pb_1.Message.setWrapperField(this, 5, value);
        }
        get has_abci() {
            return pb_1.Message.getField(this, 5) != null;
        }
        static fromObject(data: {
            block?: ReturnType<typeof BlockParams.prototype.toObject>;
            evidence?: ReturnType<typeof EvidenceParams.prototype.toObject>;
            validator?: ReturnType<typeof ValidatorParams.prototype.toObject>;
            version?: ReturnType<typeof VersionParams.prototype.toObject>;
            abci?: ReturnType<typeof ABCIParams.prototype.toObject>;
        }): ConsensusParams {
            const message = new ConsensusParams({});
            if (data.block != null) {
                message.block = BlockParams.fromObject(data.block);
            }
            if (data.evidence != null) {
                message.evidence = EvidenceParams.fromObject(data.evidence);
            }
            if (data.validator != null) {
                message.validator = ValidatorParams.fromObject(data.validator);
            }
            if (data.version != null) {
                message.version = VersionParams.fromObject(data.version);
            }
            if (data.abci != null) {
                message.abci = ABCIParams.fromObject(data.abci);
            }
            return message;
        }
        toObject() {
            const data: {
                block?: ReturnType<typeof BlockParams.prototype.toObject>;
                evidence?: ReturnType<typeof EvidenceParams.prototype.toObject>;
                validator?: ReturnType<typeof ValidatorParams.prototype.toObject>;
                version?: ReturnType<typeof VersionParams.prototype.toObject>;
                abci?: ReturnType<typeof ABCIParams.prototype.toObject>;
            } = {};
            if (this.block != null) {
                data.block = this.block.toObject();
            }
            if (this.evidence != null) {
                data.evidence = this.evidence.toObject();
            }
            if (this.validator != null) {
                data.validator = this.validator.toObject();
            }
            if (this.version != null) {
                data.version = this.version.toObject();
            }
            if (this.abci != null) {
                data.abci = this.abci.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_block)
                writer.writeMessage(1, this.block, () => this.block.serialize(writer));
            if (this.has_evidence)
                writer.writeMessage(2, this.evidence, () => this.evidence.serialize(writer));
            if (this.has_validator)
                writer.writeMessage(3, this.validator, () => this.validator.serialize(writer));
            if (this.has_version)
                writer.writeMessage(4, this.version, () => this.version.serialize(writer));
            if (this.has_abci)
                writer.writeMessage(5, this.abci, () => this.abci.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ConsensusParams {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ConsensusParams();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.block, () => message.block = BlockParams.deserialize(reader));
                        break;
                    case 2:
                        reader.readMessage(message.evidence, () => message.evidence = EvidenceParams.deserialize(reader));
                        break;
                    case 3:
                        reader.readMessage(message.validator, () => message.validator = ValidatorParams.deserialize(reader));
                        break;
                    case 4:
                        reader.readMessage(message.version, () => message.version = VersionParams.deserialize(reader));
                        break;
                    case 5:
                        reader.readMessage(message.abci, () => message.abci = ABCIParams.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ConsensusParams {
            return ConsensusParams.deserialize(bytes);
        }
    }
    export class BlockParams extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            max_bytes?: number;
            max_gas?: 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 ("max_bytes" in data && data.max_bytes != undefined) {
                    this.max_bytes = data.max_bytes;
                }
                if ("max_gas" in data && data.max_gas != undefined) {
                    this.max_gas = data.max_gas;
                }
            }
        }
        get max_bytes() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set max_bytes(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get max_gas() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set max_gas(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        static fromObject(data: {
            max_bytes?: number;
            max_gas?: number;
        }): BlockParams {
            const message = new BlockParams({});
            if (data.max_bytes != null) {
                message.max_bytes = data.max_bytes;
            }
            if (data.max_gas != null) {
                message.max_gas = data.max_gas;
            }
            return message;
        }
        toObject() {
            const data: {
                max_bytes?: number;
                max_gas?: number;
            } = {};
            if (this.max_bytes != null) {
                data.max_bytes = this.max_bytes;
            }
            if (this.max_gas != null) {
                data.max_gas = this.max_gas;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.max_bytes != 0)
                writer.writeInt64(1, this.max_bytes);
            if (this.max_gas != 0)
                writer.writeInt64(2, this.max_gas);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BlockParams {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BlockParams();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.max_bytes = reader.readInt64();
                        break;
                    case 2:
                        message.max_gas = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): BlockParams {
            return BlockParams.deserialize(bytes);
        }
    }
    export class EvidenceParams extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            max_age_num_blocks?: number;
            max_age_duration?: dependency_2.google.protobuf.Duration;
            max_bytes?: 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 ("max_age_num_blocks" in data && data.max_age_num_blocks != undefined) {
                    this.max_age_num_blocks = data.max_age_num_blocks;
                }
                if ("max_age_duration" in data && data.max_age_duration != undefined) {
                    this.max_age_duration = data.max_age_duration;
                }
                if ("max_bytes" in data && data.max_bytes != undefined) {
                    this.max_bytes = data.max_bytes;
                }
            }
        }
        get max_age_num_blocks() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set max_age_num_blocks(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get max_age_duration() {
            return pb_1.Message.getWrapperField(this, dependency_2.google.protobuf.Duration, 2) as dependency_2.google.protobuf.Duration;
        }
        set max_age_duration(value: dependency_2.google.protobuf.Duration) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_max_age_duration() {
            return pb_1.Message.getField(this, 2) != null;
        }
        get max_bytes() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set max_bytes(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            max_age_num_blocks?: number;
            max_age_duration?: ReturnType<typeof dependency_2.google.protobuf.Duration.prototype.toObject>;
            max_bytes?: number;
        }): EvidenceParams {
            const message = new EvidenceParams({});
            if (data.max_age_num_blocks != null) {
                message.max_age_num_blocks = data.max_age_num_blocks;
            }
            if (data.max_age_duration != null) {
                message.max_age_duration = dependency_2.google.protobuf.Duration.fromObject(data.max_age_duration);
            }
            if (data.max_bytes != null) {
                message.max_bytes = data.max_bytes;
            }
            return message;
        }
        toObject() {
            const data: {
                max_age_num_blocks?: number;
                max_age_duration?: ReturnType<typeof dependency_2.google.protobuf.Duration.prototype.toObject>;
                max_bytes?: number;
            } = {};
            if (this.max_age_num_blocks != null) {
                data.max_age_num_blocks = this.max_age_num_blocks;
            }
            if (this.max_age_duration != null) {
                data.max_age_duration = this.max_age_duration.toObject();
            }
            if (this.max_bytes != null) {
                data.max_bytes = this.max_bytes;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.max_age_num_blocks != 0)
                writer.writeInt64(1, this.max_age_num_blocks);
            if (this.has_max_age_duration)
                writer.writeMessage(2, this.max_age_duration, () => this.max_age_duration.serialize(writer));
            if (this.max_bytes != 0)
                writer.writeInt64(3, this.max_bytes);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): EvidenceParams {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new EvidenceParams();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.max_age_num_blocks = reader.readInt64();
                        break;
                    case 2:
                        reader.readMessage(message.max_age_duration, () => message.max_age_duration = dependency_2.google.protobuf.Duration.deserialize(reader));
                        break;
                    case 3:
                        message.max_bytes = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): EvidenceParams {
            return EvidenceParams.deserialize(bytes);
        }
    }
    export class ValidatorParams extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            pub_key_types?: string[];
        }) {
            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 ("pub_key_types" in data && data.pub_key_types != undefined) {
                    this.pub_key_types = data.pub_key_types;
                }
            }
        }
        get pub_key_types() {
            return pb_1.Message.getFieldWithDefault(this, 1, []) as string[];
        }
        set pub_key_types(value: string[]) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            pub_key_types?: string[];
        }): ValidatorParams {
            const message = new ValidatorParams({});
            if (data.pub_key_types != null) {
                message.pub_key_types = data.pub_key_types;
            }
            return message;
        }
        toObject() {
            const data: {
                pub_key_types?: string[];
            } = {};
            if (this.pub_key_types != null) {
                data.pub_key_types = this.pub_key_types;
            }
            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.pub_key_types.length)
                writer.writeRepeatedString(1, this.pub_key_types);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ValidatorParams {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ValidatorParams();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        pb_1.Message.addToRepeatedField(message, 1, reader.readString());
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ValidatorParams {
            return ValidatorParams.deserialize(bytes);
        }
    }
    export class VersionParams extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            app?: 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 ("app" in data && data.app != undefined) {
                    this.app = data.app;
                }
            }
        }
        get app() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set app(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            app?: number;
        }): VersionParams {
            const message = new VersionParams({});
            if (data.app != null) {
                message.app = data.app;
            }
            return message;
        }
        toObject() {
            const data: {
                app?: number;
            } = {};
            if (this.app != null) {
                data.app = this.app;
            }
            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.app != 0)
                writer.writeUint64(1, this.app);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): VersionParams {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new VersionParams();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.app = reader.readUint64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): VersionParams {
            return VersionParams.deserialize(bytes);
        }
    }
    export class HashedParams extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            block_max_bytes?: number;
            block_max_gas?: 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_max_bytes" in data && data.block_max_bytes != undefined) {
                    this.block_max_bytes = data.block_max_bytes;
                }
                if ("block_max_gas" in data && data.block_max_gas != undefined) {
                    this.block_max_gas = data.block_max_gas;
                }
            }
        }
        get block_max_bytes() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set block_max_bytes(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get block_max_gas() {
            return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
        }
        set block_max_gas(value: number) {
            pb_1.Message.setField(this, 2, value);
        }
        static fromObject(data: {
            block_max_bytes?: number;
            block_max_gas?: number;
        }): HashedParams {
            const message = new HashedParams({});
            if (data.block_max_bytes != null) {
                message.block_max_bytes = data.block_max_bytes;
            }
            if (data.block_max_gas != null) {
                message.block_max_gas = data.block_max_gas;
            }
            return message;
        }
        toObject() {
            const data: {
                block_max_bytes?: number;
                block_max_gas?: number;
            } = {};
            if (this.block_max_bytes != null) {
                data.block_max_bytes = this.block_max_bytes;
            }
            if (this.block_max_gas != null) {
                data.block_max_gas = this.block_max_gas;
            }
            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_max_bytes != 0)
                writer.writeInt64(1, this.block_max_bytes);
            if (this.block_max_gas != 0)
                writer.writeInt64(2, this.block_max_gas);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): HashedParams {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new HashedParams();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.block_max_bytes = reader.readInt64();
                        break;
                    case 2:
                        message.block_max_gas = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): HashedParams {
            return HashedParams.deserialize(bytes);
        }
    }
    export class ABCIParams extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            vote_extensions_enable_height?: number;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("vote_extensions_enable_height" in data && data.vote_extensions_enable_height != undefined) {
                    this.vote_extensions_enable_height = data.vote_extensions_enable_height;
                }
            }
        }
        get vote_extensions_enable_height() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set vote_extensions_enable_height(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        static fromObject(data: {
            vote_extensions_enable_height?: number;
        }): ABCIParams {
            const message = new ABCIParams({});
            if (data.vote_extensions_enable_height != null) {
                message.vote_extensions_enable_height = data.vote_extensions_enable_height;
            }
            return message;
        }
        toObject() {
            const data: {
                vote_extensions_enable_height?: number;
            } = {};
            if (this.vote_extensions_enable_height != null) {
                data.vote_extensions_enable_height = this.vote_extensions_enable_height;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.vote_extensions_enable_height != 0)
                writer.writeInt64(1, this.vote_extensions_enable_height);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ABCIParams {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ABCIParams();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.vote_extensions_enable_height = reader.readInt64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ABCIParams {
            return ABCIParams.deserialize(bytes);
        }
    }
}
