/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.20.3
 * source: ibc/core/channel/v1/upgrade.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../../../../gogoproto/gogo";
import * as dependency_2 from "./channel";
import * as pb_1 from "google-protobuf";
export namespace ibc.core.channel.v1 {
    export class Upgrade extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            fields?: UpgradeFields;
            timeout?: dependency_2.ibc.core.channel.v1.Timeout;
            next_sequence_send?: 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 ("fields" in data && data.fields != undefined) {
                    this.fields = data.fields;
                }
                if ("timeout" in data && data.timeout != undefined) {
                    this.timeout = data.timeout;
                }
                if ("next_sequence_send" in data && data.next_sequence_send != undefined) {
                    this.next_sequence_send = data.next_sequence_send;
                }
            }
        }
        get fields() {
            return pb_1.Message.getWrapperField(this, UpgradeFields, 1) as UpgradeFields;
        }
        set fields(value: UpgradeFields) {
            pb_1.Message.setWrapperField(this, 1, value);
        }
        get has_fields() {
            return pb_1.Message.getField(this, 1) != null;
        }
        get timeout() {
            return pb_1.Message.getWrapperField(this, dependency_2.ibc.core.channel.v1.Timeout, 2) as dependency_2.ibc.core.channel.v1.Timeout;
        }
        set timeout(value: dependency_2.ibc.core.channel.v1.Timeout) {
            pb_1.Message.setWrapperField(this, 2, value);
        }
        get has_timeout() {
            return pb_1.Message.getField(this, 2) != null;
        }
        get next_sequence_send() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set next_sequence_send(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            fields?: ReturnType<typeof UpgradeFields.prototype.toObject>;
            timeout?: ReturnType<typeof dependency_2.ibc.core.channel.v1.Timeout.prototype.toObject>;
            next_sequence_send?: number;
        }): Upgrade {
            const message = new Upgrade({});
            if (data.fields != null) {
                message.fields = UpgradeFields.fromObject(data.fields);
            }
            if (data.timeout != null) {
                message.timeout = dependency_2.ibc.core.channel.v1.Timeout.fromObject(data.timeout);
            }
            if (data.next_sequence_send != null) {
                message.next_sequence_send = data.next_sequence_send;
            }
            return message;
        }
        toObject() {
            const data: {
                fields?: ReturnType<typeof UpgradeFields.prototype.toObject>;
                timeout?: ReturnType<typeof dependency_2.ibc.core.channel.v1.Timeout.prototype.toObject>;
                next_sequence_send?: number;
            } = {};
            if (this.fields != null) {
                data.fields = this.fields.toObject();
            }
            if (this.timeout != null) {
                data.timeout = this.timeout.toObject();
            }
            if (this.next_sequence_send != null) {
                data.next_sequence_send = this.next_sequence_send;
            }
            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_fields)
                writer.writeMessage(1, this.fields, () => this.fields.serialize(writer));
            if (this.has_timeout)
                writer.writeMessage(2, this.timeout, () => this.timeout.serialize(writer));
            if (this.next_sequence_send != 0)
                writer.writeUint64(3, this.next_sequence_send);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Upgrade {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Upgrade();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.fields, () => message.fields = UpgradeFields.deserialize(reader));
                        break;
                    case 2:
                        reader.readMessage(message.timeout, () => message.timeout = dependency_2.ibc.core.channel.v1.Timeout.deserialize(reader));
                        break;
                    case 3:
                        message.next_sequence_send = reader.readUint64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): Upgrade {
            return Upgrade.deserialize(bytes);
        }
    }
    export class UpgradeFields extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            ordering?: dependency_2.ibc.core.channel.v1.Order;
            connection_hops?: string[];
            version?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("ordering" in data && data.ordering != undefined) {
                    this.ordering = data.ordering;
                }
                if ("connection_hops" in data && data.connection_hops != undefined) {
                    this.connection_hops = data.connection_hops;
                }
                if ("version" in data && data.version != undefined) {
                    this.version = data.version;
                }
            }
        }
        get ordering() {
            return pb_1.Message.getFieldWithDefault(this, 1, dependency_2.ibc.core.channel.v1.Order.ORDER_NONE_UNSPECIFIED) as dependency_2.ibc.core.channel.v1.Order;
        }
        set ordering(value: dependency_2.ibc.core.channel.v1.Order) {
            pb_1.Message.setField(this, 1, value);
        }
        get connection_hops() {
            return pb_1.Message.getFieldWithDefault(this, 2, []) as string[];
        }
        set connection_hops(value: string[]) {
            pb_1.Message.setField(this, 2, value);
        }
        get version() {
            return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
        }
        set version(value: string) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            ordering?: dependency_2.ibc.core.channel.v1.Order;
            connection_hops?: string[];
            version?: string;
        }): UpgradeFields {
            const message = new UpgradeFields({});
            if (data.ordering != null) {
                message.ordering = data.ordering;
            }
            if (data.connection_hops != null) {
                message.connection_hops = data.connection_hops;
            }
            if (data.version != null) {
                message.version = data.version;
            }
            return message;
        }
        toObject() {
            const data: {
                ordering?: dependency_2.ibc.core.channel.v1.Order;
                connection_hops?: string[];
                version?: string;
            } = {};
            if (this.ordering != null) {
                data.ordering = this.ordering;
            }
            if (this.connection_hops != null) {
                data.connection_hops = this.connection_hops;
            }
            if (this.version != null) {
                data.version = this.version;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.ordering != dependency_2.ibc.core.channel.v1.Order.ORDER_NONE_UNSPECIFIED)
                writer.writeEnum(1, this.ordering);
            if (this.connection_hops.length)
                writer.writeRepeatedString(2, this.connection_hops);
            if (this.version.length)
                writer.writeString(3, this.version);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): UpgradeFields {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new UpgradeFields();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.ordering = reader.readEnum();
                        break;
                    case 2:
                        pb_1.Message.addToRepeatedField(message, 2, reader.readString());
                        break;
                    case 3:
                        message.version = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): UpgradeFields {
            return UpgradeFields.deserialize(bytes);
        }
    }
    export class ErrorReceipt extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            sequence?: number;
            message?: string;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("sequence" in data && data.sequence != undefined) {
                    this.sequence = data.sequence;
                }
                if ("message" in data && data.message != undefined) {
                    this.message = data.message;
                }
            }
        }
        get sequence() {
            return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
        }
        set sequence(value: number) {
            pb_1.Message.setField(this, 1, value);
        }
        get message() {
            return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
        }
        set message(value: string) {
            pb_1.Message.setField(this, 2, value);
        }
        static fromObject(data: {
            sequence?: number;
            message?: string;
        }): ErrorReceipt {
            const message = new ErrorReceipt({});
            if (data.sequence != null) {
                message.sequence = data.sequence;
            }
            if (data.message != null) {
                message.message = data.message;
            }
            return message;
        }
        toObject() {
            const data: {
                sequence?: number;
                message?: string;
            } = {};
            if (this.sequence != null) {
                data.sequence = this.sequence;
            }
            if (this.message != null) {
                data.message = this.message;
            }
            return data;
        }
        serialize(): Uint8Array;
        serialize(w: pb_1.BinaryWriter): void;
        serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
            const writer = w || new pb_1.BinaryWriter();
            if (this.sequence != 0)
                writer.writeUint64(1, this.sequence);
            if (this.message.length)
                writer.writeString(2, this.message);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ErrorReceipt {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ErrorReceipt();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.sequence = reader.readUint64();
                        break;
                    case 2:
                        message.message = reader.readString();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): ErrorReceipt {
            return ErrorReceipt.deserialize(bytes);
        }
    }
}
