/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.20.3
 * source: ibc/core/channel/v1/genesis.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 GenesisState extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            channels?: dependency_2.ibc.core.channel.v1.IdentifiedChannel[];
            acknowledgements?: dependency_2.ibc.core.channel.v1.PacketState[];
            commitments?: dependency_2.ibc.core.channel.v1.PacketState[];
            receipts?: dependency_2.ibc.core.channel.v1.PacketState[];
            send_sequences?: PacketSequence[];
            recv_sequences?: PacketSequence[];
            ack_sequences?: PacketSequence[];
            next_channel_sequence?: number;
            params?: dependency_2.ibc.core.channel.v1.Params;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 2, 3, 4, 5, 6, 7], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("channels" in data && data.channels != undefined) {
                    this.channels = data.channels;
                }
                if ("acknowledgements" in data && data.acknowledgements != undefined) {
                    this.acknowledgements = data.acknowledgements;
                }
                if ("commitments" in data && data.commitments != undefined) {
                    this.commitments = data.commitments;
                }
                if ("receipts" in data && data.receipts != undefined) {
                    this.receipts = data.receipts;
                }
                if ("send_sequences" in data && data.send_sequences != undefined) {
                    this.send_sequences = data.send_sequences;
                }
                if ("recv_sequences" in data && data.recv_sequences != undefined) {
                    this.recv_sequences = data.recv_sequences;
                }
                if ("ack_sequences" in data && data.ack_sequences != undefined) {
                    this.ack_sequences = data.ack_sequences;
                }
                if ("next_channel_sequence" in data && data.next_channel_sequence != undefined) {
                    this.next_channel_sequence = data.next_channel_sequence;
                }
                if ("params" in data && data.params != undefined) {
                    this.params = data.params;
                }
            }
        }
        get channels() {
            return pb_1.Message.getRepeatedWrapperField(this, dependency_2.ibc.core.channel.v1.IdentifiedChannel, 1) as dependency_2.ibc.core.channel.v1.IdentifiedChannel[];
        }
        set channels(value: dependency_2.ibc.core.channel.v1.IdentifiedChannel[]) {
            pb_1.Message.setRepeatedWrapperField(this, 1, value);
        }
        get acknowledgements() {
            return pb_1.Message.getRepeatedWrapperField(this, dependency_2.ibc.core.channel.v1.PacketState, 2) as dependency_2.ibc.core.channel.v1.PacketState[];
        }
        set acknowledgements(value: dependency_2.ibc.core.channel.v1.PacketState[]) {
            pb_1.Message.setRepeatedWrapperField(this, 2, value);
        }
        get commitments() {
            return pb_1.Message.getRepeatedWrapperField(this, dependency_2.ibc.core.channel.v1.PacketState, 3) as dependency_2.ibc.core.channel.v1.PacketState[];
        }
        set commitments(value: dependency_2.ibc.core.channel.v1.PacketState[]) {
            pb_1.Message.setRepeatedWrapperField(this, 3, value);
        }
        get receipts() {
            return pb_1.Message.getRepeatedWrapperField(this, dependency_2.ibc.core.channel.v1.PacketState, 4) as dependency_2.ibc.core.channel.v1.PacketState[];
        }
        set receipts(value: dependency_2.ibc.core.channel.v1.PacketState[]) {
            pb_1.Message.setRepeatedWrapperField(this, 4, value);
        }
        get send_sequences() {
            return pb_1.Message.getRepeatedWrapperField(this, PacketSequence, 5) as PacketSequence[];
        }
        set send_sequences(value: PacketSequence[]) {
            pb_1.Message.setRepeatedWrapperField(this, 5, value);
        }
        get recv_sequences() {
            return pb_1.Message.getRepeatedWrapperField(this, PacketSequence, 6) as PacketSequence[];
        }
        set recv_sequences(value: PacketSequence[]) {
            pb_1.Message.setRepeatedWrapperField(this, 6, value);
        }
        get ack_sequences() {
            return pb_1.Message.getRepeatedWrapperField(this, PacketSequence, 7) as PacketSequence[];
        }
        set ack_sequences(value: PacketSequence[]) {
            pb_1.Message.setRepeatedWrapperField(this, 7, value);
        }
        get next_channel_sequence() {
            return pb_1.Message.getFieldWithDefault(this, 8, 0) as number;
        }
        set next_channel_sequence(value: number) {
            pb_1.Message.setField(this, 8, value);
        }
        get params() {
            return pb_1.Message.getWrapperField(this, dependency_2.ibc.core.channel.v1.Params, 9) as dependency_2.ibc.core.channel.v1.Params;
        }
        set params(value: dependency_2.ibc.core.channel.v1.Params) {
            pb_1.Message.setWrapperField(this, 9, value);
        }
        get has_params() {
            return pb_1.Message.getField(this, 9) != null;
        }
        static fromObject(data: {
            channels?: ReturnType<typeof dependency_2.ibc.core.channel.v1.IdentifiedChannel.prototype.toObject>[];
            acknowledgements?: ReturnType<typeof dependency_2.ibc.core.channel.v1.PacketState.prototype.toObject>[];
            commitments?: ReturnType<typeof dependency_2.ibc.core.channel.v1.PacketState.prototype.toObject>[];
            receipts?: ReturnType<typeof dependency_2.ibc.core.channel.v1.PacketState.prototype.toObject>[];
            send_sequences?: ReturnType<typeof PacketSequence.prototype.toObject>[];
            recv_sequences?: ReturnType<typeof PacketSequence.prototype.toObject>[];
            ack_sequences?: ReturnType<typeof PacketSequence.prototype.toObject>[];
            next_channel_sequence?: number;
            params?: ReturnType<typeof dependency_2.ibc.core.channel.v1.Params.prototype.toObject>;
        }): GenesisState {
            const message = new GenesisState({});
            if (data.channels != null) {
                message.channels = data.channels.map(item => dependency_2.ibc.core.channel.v1.IdentifiedChannel.fromObject(item));
            }
            if (data.acknowledgements != null) {
                message.acknowledgements = data.acknowledgements.map(item => dependency_2.ibc.core.channel.v1.PacketState.fromObject(item));
            }
            if (data.commitments != null) {
                message.commitments = data.commitments.map(item => dependency_2.ibc.core.channel.v1.PacketState.fromObject(item));
            }
            if (data.receipts != null) {
                message.receipts = data.receipts.map(item => dependency_2.ibc.core.channel.v1.PacketState.fromObject(item));
            }
            if (data.send_sequences != null) {
                message.send_sequences = data.send_sequences.map(item => PacketSequence.fromObject(item));
            }
            if (data.recv_sequences != null) {
                message.recv_sequences = data.recv_sequences.map(item => PacketSequence.fromObject(item));
            }
            if (data.ack_sequences != null) {
                message.ack_sequences = data.ack_sequences.map(item => PacketSequence.fromObject(item));
            }
            if (data.next_channel_sequence != null) {
                message.next_channel_sequence = data.next_channel_sequence;
            }
            if (data.params != null) {
                message.params = dependency_2.ibc.core.channel.v1.Params.fromObject(data.params);
            }
            return message;
        }
        toObject() {
            const data: {
                channels?: ReturnType<typeof dependency_2.ibc.core.channel.v1.IdentifiedChannel.prototype.toObject>[];
                acknowledgements?: ReturnType<typeof dependency_2.ibc.core.channel.v1.PacketState.prototype.toObject>[];
                commitments?: ReturnType<typeof dependency_2.ibc.core.channel.v1.PacketState.prototype.toObject>[];
                receipts?: ReturnType<typeof dependency_2.ibc.core.channel.v1.PacketState.prototype.toObject>[];
                send_sequences?: ReturnType<typeof PacketSequence.prototype.toObject>[];
                recv_sequences?: ReturnType<typeof PacketSequence.prototype.toObject>[];
                ack_sequences?: ReturnType<typeof PacketSequence.prototype.toObject>[];
                next_channel_sequence?: number;
                params?: ReturnType<typeof dependency_2.ibc.core.channel.v1.Params.prototype.toObject>;
            } = {};
            if (this.channels != null) {
                data.channels = this.channels.map((item: dependency_2.ibc.core.channel.v1.IdentifiedChannel) => item.toObject());
            }
            if (this.acknowledgements != null) {
                data.acknowledgements = this.acknowledgements.map((item: dependency_2.ibc.core.channel.v1.PacketState) => item.toObject());
            }
            if (this.commitments != null) {
                data.commitments = this.commitments.map((item: dependency_2.ibc.core.channel.v1.PacketState) => item.toObject());
            }
            if (this.receipts != null) {
                data.receipts = this.receipts.map((item: dependency_2.ibc.core.channel.v1.PacketState) => item.toObject());
            }
            if (this.send_sequences != null) {
                data.send_sequences = this.send_sequences.map((item: PacketSequence) => item.toObject());
            }
            if (this.recv_sequences != null) {
                data.recv_sequences = this.recv_sequences.map((item: PacketSequence) => item.toObject());
            }
            if (this.ack_sequences != null) {
                data.ack_sequences = this.ack_sequences.map((item: PacketSequence) => item.toObject());
            }
            if (this.next_channel_sequence != null) {
                data.next_channel_sequence = this.next_channel_sequence;
            }
            if (this.params != null) {
                data.params = this.params.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.channels.length)
                writer.writeRepeatedMessage(1, this.channels, (item: dependency_2.ibc.core.channel.v1.IdentifiedChannel) => item.serialize(writer));
            if (this.acknowledgements.length)
                writer.writeRepeatedMessage(2, this.acknowledgements, (item: dependency_2.ibc.core.channel.v1.PacketState) => item.serialize(writer));
            if (this.commitments.length)
                writer.writeRepeatedMessage(3, this.commitments, (item: dependency_2.ibc.core.channel.v1.PacketState) => item.serialize(writer));
            if (this.receipts.length)
                writer.writeRepeatedMessage(4, this.receipts, (item: dependency_2.ibc.core.channel.v1.PacketState) => item.serialize(writer));
            if (this.send_sequences.length)
                writer.writeRepeatedMessage(5, this.send_sequences, (item: PacketSequence) => item.serialize(writer));
            if (this.recv_sequences.length)
                writer.writeRepeatedMessage(6, this.recv_sequences, (item: PacketSequence) => item.serialize(writer));
            if (this.ack_sequences.length)
                writer.writeRepeatedMessage(7, this.ack_sequences, (item: PacketSequence) => item.serialize(writer));
            if (this.next_channel_sequence != 0)
                writer.writeUint64(8, this.next_channel_sequence);
            if (this.has_params)
                writer.writeMessage(9, this.params, () => this.params.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): GenesisState {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new GenesisState();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        reader.readMessage(message.channels, () => pb_1.Message.addToRepeatedWrapperField(message, 1, dependency_2.ibc.core.channel.v1.IdentifiedChannel.deserialize(reader), dependency_2.ibc.core.channel.v1.IdentifiedChannel));
                        break;
                    case 2:
                        reader.readMessage(message.acknowledgements, () => pb_1.Message.addToRepeatedWrapperField(message, 2, dependency_2.ibc.core.channel.v1.PacketState.deserialize(reader), dependency_2.ibc.core.channel.v1.PacketState));
                        break;
                    case 3:
                        reader.readMessage(message.commitments, () => pb_1.Message.addToRepeatedWrapperField(message, 3, dependency_2.ibc.core.channel.v1.PacketState.deserialize(reader), dependency_2.ibc.core.channel.v1.PacketState));
                        break;
                    case 4:
                        reader.readMessage(message.receipts, () => pb_1.Message.addToRepeatedWrapperField(message, 4, dependency_2.ibc.core.channel.v1.PacketState.deserialize(reader), dependency_2.ibc.core.channel.v1.PacketState));
                        break;
                    case 5:
                        reader.readMessage(message.send_sequences, () => pb_1.Message.addToRepeatedWrapperField(message, 5, PacketSequence.deserialize(reader), PacketSequence));
                        break;
                    case 6:
                        reader.readMessage(message.recv_sequences, () => pb_1.Message.addToRepeatedWrapperField(message, 6, PacketSequence.deserialize(reader), PacketSequence));
                        break;
                    case 7:
                        reader.readMessage(message.ack_sequences, () => pb_1.Message.addToRepeatedWrapperField(message, 7, PacketSequence.deserialize(reader), PacketSequence));
                        break;
                    case 8:
                        message.next_channel_sequence = reader.readUint64();
                        break;
                    case 9:
                        reader.readMessage(message.params, () => message.params = dependency_2.ibc.core.channel.v1.Params.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): GenesisState {
            return GenesisState.deserialize(bytes);
        }
    }
    export class PacketSequence extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            port_id?: string;
            channel_id?: string;
            sequence?: 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 ("port_id" in data && data.port_id != undefined) {
                    this.port_id = data.port_id;
                }
                if ("channel_id" in data && data.channel_id != undefined) {
                    this.channel_id = data.channel_id;
                }
                if ("sequence" in data && data.sequence != undefined) {
                    this.sequence = data.sequence;
                }
            }
        }
        get port_id() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set port_id(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        get channel_id() {
            return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
        }
        set channel_id(value: string) {
            pb_1.Message.setField(this, 2, value);
        }
        get sequence() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set sequence(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        static fromObject(data: {
            port_id?: string;
            channel_id?: string;
            sequence?: number;
        }): PacketSequence {
            const message = new PacketSequence({});
            if (data.port_id != null) {
                message.port_id = data.port_id;
            }
            if (data.channel_id != null) {
                message.channel_id = data.channel_id;
            }
            if (data.sequence != null) {
                message.sequence = data.sequence;
            }
            return message;
        }
        toObject() {
            const data: {
                port_id?: string;
                channel_id?: string;
                sequence?: number;
            } = {};
            if (this.port_id != null) {
                data.port_id = this.port_id;
            }
            if (this.channel_id != null) {
                data.channel_id = this.channel_id;
            }
            if (this.sequence != null) {
                data.sequence = this.sequence;
            }
            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.port_id.length)
                writer.writeString(1, this.port_id);
            if (this.channel_id.length)
                writer.writeString(2, this.channel_id);
            if (this.sequence != 0)
                writer.writeUint64(3, this.sequence);
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PacketSequence {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PacketSequence();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.port_id = reader.readString();
                        break;
                    case 2:
                        message.channel_id = reader.readString();
                        break;
                    case 3:
                        message.sequence = reader.readUint64();
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static deserializeBinary(bytes: Uint8Array): PacketSequence {
            return PacketSequence.deserialize(bytes);
        }
    }
}
