// package: ibc.core.connection.v1
// file: ibc/core/connection/v1/connection.proto

/* tslint:disable */
/* eslint-disable */

import * as jspb from "google-protobuf";
import * as gogoproto_gogo_pb from "../../../../gogoproto/gogo_pb";
import * as ibc_core_commitment_v1_commitment_pb from "../../../../ibc/core/commitment/v1/commitment_pb";

export class ConnectionEnd extends jspb.Message { 
    getClientId(): string;
    setClientId(value: string): ConnectionEnd;
    clearVersionsList(): void;
    getVersionsList(): Array<Version>;
    setVersionsList(value: Array<Version>): ConnectionEnd;
    addVersions(value?: Version, index?: number): Version;
    getState(): State;
    setState(value: State): ConnectionEnd;

    hasCounterparty(): boolean;
    clearCounterparty(): void;
    getCounterparty(): Counterparty | undefined;
    setCounterparty(value?: Counterparty): ConnectionEnd;
    getDelayPeriod(): number;
    setDelayPeriod(value: number): ConnectionEnd;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): ConnectionEnd.AsObject;
    static toObject(includeInstance: boolean, msg: ConnectionEnd): ConnectionEnd.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: ConnectionEnd, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): ConnectionEnd;
    static deserializeBinaryFromReader(message: ConnectionEnd, reader: jspb.BinaryReader): ConnectionEnd;
}

export namespace ConnectionEnd {
    export type AsObject = {
        clientId: string,
        versionsList: Array<Version.AsObject>,
        state: State,
        counterparty?: Counterparty.AsObject,
        delayPeriod: number,
    }
}

export class IdentifiedConnection extends jspb.Message { 
    getId(): string;
    setId(value: string): IdentifiedConnection;
    getClientId(): string;
    setClientId(value: string): IdentifiedConnection;
    clearVersionsList(): void;
    getVersionsList(): Array<Version>;
    setVersionsList(value: Array<Version>): IdentifiedConnection;
    addVersions(value?: Version, index?: number): Version;
    getState(): State;
    setState(value: State): IdentifiedConnection;

    hasCounterparty(): boolean;
    clearCounterparty(): void;
    getCounterparty(): Counterparty | undefined;
    setCounterparty(value?: Counterparty): IdentifiedConnection;
    getDelayPeriod(): number;
    setDelayPeriod(value: number): IdentifiedConnection;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): IdentifiedConnection.AsObject;
    static toObject(includeInstance: boolean, msg: IdentifiedConnection): IdentifiedConnection.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: IdentifiedConnection, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): IdentifiedConnection;
    static deserializeBinaryFromReader(message: IdentifiedConnection, reader: jspb.BinaryReader): IdentifiedConnection;
}

export namespace IdentifiedConnection {
    export type AsObject = {
        id: string,
        clientId: string,
        versionsList: Array<Version.AsObject>,
        state: State,
        counterparty?: Counterparty.AsObject,
        delayPeriod: number,
    }
}

export class Counterparty extends jspb.Message { 
    getClientId(): string;
    setClientId(value: string): Counterparty;
    getConnectionId(): string;
    setConnectionId(value: string): Counterparty;

    hasPrefix(): boolean;
    clearPrefix(): void;
    getPrefix(): ibc_core_commitment_v1_commitment_pb.MerklePrefix | undefined;
    setPrefix(value?: ibc_core_commitment_v1_commitment_pb.MerklePrefix): Counterparty;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Counterparty.AsObject;
    static toObject(includeInstance: boolean, msg: Counterparty): Counterparty.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: Counterparty, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): Counterparty;
    static deserializeBinaryFromReader(message: Counterparty, reader: jspb.BinaryReader): Counterparty;
}

export namespace Counterparty {
    export type AsObject = {
        clientId: string,
        connectionId: string,
        prefix?: ibc_core_commitment_v1_commitment_pb.MerklePrefix.AsObject,
    }
}

export class ClientPaths extends jspb.Message { 
    clearPathsList(): void;
    getPathsList(): Array<string>;
    setPathsList(value: Array<string>): ClientPaths;
    addPaths(value: string, index?: number): string;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): ClientPaths.AsObject;
    static toObject(includeInstance: boolean, msg: ClientPaths): ClientPaths.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: ClientPaths, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): ClientPaths;
    static deserializeBinaryFromReader(message: ClientPaths, reader: jspb.BinaryReader): ClientPaths;
}

export namespace ClientPaths {
    export type AsObject = {
        pathsList: Array<string>,
    }
}

export class ConnectionPaths extends jspb.Message { 
    getClientId(): string;
    setClientId(value: string): ConnectionPaths;
    clearPathsList(): void;
    getPathsList(): Array<string>;
    setPathsList(value: Array<string>): ConnectionPaths;
    addPaths(value: string, index?: number): string;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): ConnectionPaths.AsObject;
    static toObject(includeInstance: boolean, msg: ConnectionPaths): ConnectionPaths.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: ConnectionPaths, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): ConnectionPaths;
    static deserializeBinaryFromReader(message: ConnectionPaths, reader: jspb.BinaryReader): ConnectionPaths;
}

export namespace ConnectionPaths {
    export type AsObject = {
        clientId: string,
        pathsList: Array<string>,
    }
}

export class Version extends jspb.Message { 
    getIdentifier(): string;
    setIdentifier(value: string): Version;
    clearFeaturesList(): void;
    getFeaturesList(): Array<string>;
    setFeaturesList(value: Array<string>): Version;
    addFeatures(value: string, index?: number): string;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Version.AsObject;
    static toObject(includeInstance: boolean, msg: Version): Version.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: Version, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): Version;
    static deserializeBinaryFromReader(message: Version, reader: jspb.BinaryReader): Version;
}

export namespace Version {
    export type AsObject = {
        identifier: string,
        featuresList: Array<string>,
    }
}

export class Params extends jspb.Message { 
    getMaxExpectedTimePerBlock(): number;
    setMaxExpectedTimePerBlock(value: number): Params;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Params.AsObject;
    static toObject(includeInstance: boolean, msg: Params): Params.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: Params, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): Params;
    static deserializeBinaryFromReader(message: Params, reader: jspb.BinaryReader): Params;
}

export namespace Params {
    export type AsObject = {
        maxExpectedTimePerBlock: number,
    }
}

export enum State {
    STATE_UNINITIALIZED_UNSPECIFIED = 0,
    STATE_INIT = 1,
    STATE_TRYOPEN = 2,
    STATE_OPEN = 3,
}
