import { Any, AnyAmino } from "../../../../google/protobuf/any";
import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * ClientState defines a solo machine client that tracks the current consensus
 * state and if the client is frozen.
 * @name ClientState
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.ClientState
 */
export interface ClientState {
    /**
     * latest sequence of the client state
     */
    sequence: bigint;
    /**
     * frozen sequence of the solo machine
     */
    isFrozen: boolean;
    consensusState?: ConsensusState;
}
export interface ClientStateProtoMsg {
    typeUrl: "/ibc.lightclients.solomachine.v3.ClientState";
    value: Uint8Array;
}
/**
 * ClientState defines a solo machine client that tracks the current consensus
 * state and if the client is frozen.
 * @name ClientStateAmino
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.ClientState
 */
export interface ClientStateAmino {
    /**
     * latest sequence of the client state
     */
    sequence: string;
    /**
     * frozen sequence of the solo machine
     */
    is_frozen: boolean;
    consensus_state?: ConsensusStateAmino;
}
export interface ClientStateAminoMsg {
    type: "cosmos-sdk/ClientState";
    value: ClientStateAmino;
}
/**
 * ConsensusState defines a solo machine consensus state. The sequence of a
 * consensus state is contained in the "height" key used in storing the
 * consensus state.
 * @name ConsensusState
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.ConsensusState
 */
export interface ConsensusState {
    /**
     * public key of the solo machine
     */
    publicKey?: Any;
    /**
     * diversifier allows the same public key to be reused across different solo
     * machine clients (potentially on different chains) without being considered
     * misbehaviour.
     */
    diversifier: string;
    timestamp: bigint;
}
export interface ConsensusStateProtoMsg {
    typeUrl: "/ibc.lightclients.solomachine.v3.ConsensusState";
    value: Uint8Array;
}
/**
 * ConsensusState defines a solo machine consensus state. The sequence of a
 * consensus state is contained in the "height" key used in storing the
 * consensus state.
 * @name ConsensusStateAmino
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.ConsensusState
 */
export interface ConsensusStateAmino {
    /**
     * public key of the solo machine
     */
    public_key?: AnyAmino;
    /**
     * diversifier allows the same public key to be reused across different solo
     * machine clients (potentially on different chains) without being considered
     * misbehaviour.
     */
    diversifier: string;
    timestamp: string;
}
export interface ConsensusStateAminoMsg {
    type: "cosmos-sdk/ConsensusState";
    value: ConsensusStateAmino;
}
/**
 * Header defines a solo machine consensus header
 * @name Header
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.Header
 */
export interface Header {
    timestamp: bigint;
    signature: Uint8Array;
    newPublicKey?: Any;
    newDiversifier: string;
}
export interface HeaderProtoMsg {
    typeUrl: "/ibc.lightclients.solomachine.v3.Header";
    value: Uint8Array;
}
/**
 * Header defines a solo machine consensus header
 * @name HeaderAmino
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.Header
 */
export interface HeaderAmino {
    timestamp: string;
    signature: string;
    new_public_key?: AnyAmino;
    new_diversifier: string;
}
export interface HeaderAminoMsg {
    type: "cosmos-sdk/Header";
    value: HeaderAmino;
}
/**
 * Misbehaviour defines misbehaviour for a solo machine which consists
 * of a sequence and two signatures over different messages at that sequence.
 * @name Misbehaviour
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.Misbehaviour
 */
export interface Misbehaviour {
    sequence: bigint;
    signatureOne?: SignatureAndData;
    signatureTwo?: SignatureAndData;
}
export interface MisbehaviourProtoMsg {
    typeUrl: "/ibc.lightclients.solomachine.v3.Misbehaviour";
    value: Uint8Array;
}
/**
 * Misbehaviour defines misbehaviour for a solo machine which consists
 * of a sequence and two signatures over different messages at that sequence.
 * @name MisbehaviourAmino
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.Misbehaviour
 */
export interface MisbehaviourAmino {
    sequence: string;
    signature_one?: SignatureAndDataAmino;
    signature_two?: SignatureAndDataAmino;
}
export interface MisbehaviourAminoMsg {
    type: "cosmos-sdk/Misbehaviour";
    value: MisbehaviourAmino;
}
/**
 * SignatureAndData contains a signature and the data signed over to create that
 * signature.
 * @name SignatureAndData
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.SignatureAndData
 */
export interface SignatureAndData {
    signature: Uint8Array;
    path: Uint8Array;
    data: Uint8Array;
    timestamp: bigint;
}
export interface SignatureAndDataProtoMsg {
    typeUrl: "/ibc.lightclients.solomachine.v3.SignatureAndData";
    value: Uint8Array;
}
/**
 * SignatureAndData contains a signature and the data signed over to create that
 * signature.
 * @name SignatureAndDataAmino
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.SignatureAndData
 */
export interface SignatureAndDataAmino {
    signature: string;
    path: string;
    data: string;
    timestamp: string;
}
export interface SignatureAndDataAminoMsg {
    type: "cosmos-sdk/SignatureAndData";
    value: SignatureAndDataAmino;
}
/**
 * TimestampedSignatureData contains the signature data and the timestamp of the
 * signature.
 * @name TimestampedSignatureData
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.TimestampedSignatureData
 */
export interface TimestampedSignatureData {
    signatureData: Uint8Array;
    timestamp: bigint;
}
export interface TimestampedSignatureDataProtoMsg {
    typeUrl: "/ibc.lightclients.solomachine.v3.TimestampedSignatureData";
    value: Uint8Array;
}
/**
 * TimestampedSignatureData contains the signature data and the timestamp of the
 * signature.
 * @name TimestampedSignatureDataAmino
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.TimestampedSignatureData
 */
export interface TimestampedSignatureDataAmino {
    signature_data: string;
    timestamp: string;
}
export interface TimestampedSignatureDataAminoMsg {
    type: "cosmos-sdk/TimestampedSignatureData";
    value: TimestampedSignatureDataAmino;
}
/**
 * SignBytes defines the signed bytes used for signature verification.
 * @name SignBytes
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.SignBytes
 */
export interface SignBytes {
    /**
     * the sequence number
     */
    sequence: bigint;
    /**
     * the proof timestamp
     */
    timestamp: bigint;
    /**
     * the public key diversifier
     */
    diversifier: string;
    /**
     * the standardised path bytes
     */
    path: Uint8Array;
    /**
     * the marshaled data bytes
     */
    data: Uint8Array;
}
export interface SignBytesProtoMsg {
    typeUrl: "/ibc.lightclients.solomachine.v3.SignBytes";
    value: Uint8Array;
}
/**
 * SignBytes defines the signed bytes used for signature verification.
 * @name SignBytesAmino
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.SignBytes
 */
export interface SignBytesAmino {
    /**
     * the sequence number
     */
    sequence: string;
    /**
     * the proof timestamp
     */
    timestamp: string;
    /**
     * the public key diversifier
     */
    diversifier: string;
    /**
     * the standardised path bytes
     */
    path: string;
    /**
     * the marshaled data bytes
     */
    data: string;
}
export interface SignBytesAminoMsg {
    type: "cosmos-sdk/SignBytes";
    value: SignBytesAmino;
}
/**
 * HeaderData returns the SignBytes data for update verification.
 * @name HeaderData
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.HeaderData
 */
export interface HeaderData {
    /**
     * header public key
     */
    newPubKey?: Any;
    /**
     * header diversifier
     */
    newDiversifier: string;
}
export interface HeaderDataProtoMsg {
    typeUrl: "/ibc.lightclients.solomachine.v3.HeaderData";
    value: Uint8Array;
}
/**
 * HeaderData returns the SignBytes data for update verification.
 * @name HeaderDataAmino
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.HeaderData
 */
export interface HeaderDataAmino {
    /**
     * header public key
     */
    new_pub_key?: AnyAmino;
    /**
     * header diversifier
     */
    new_diversifier: string;
}
export interface HeaderDataAminoMsg {
    type: "cosmos-sdk/HeaderData";
    value: HeaderDataAmino;
}
/**
 * ClientState defines a solo machine client that tracks the current consensus
 * state and if the client is frozen.
 * @name ClientState
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.ClientState
 */
export declare const ClientState: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ClientState;
    isAmino(o: any): o is ClientStateAmino;
    encode(message: ClientState, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ClientState;
    fromPartial(object: DeepPartial<ClientState>): ClientState;
    fromAmino(object: ClientStateAmino): ClientState;
    toAmino(message: ClientState): ClientStateAmino;
    fromAminoMsg(object: ClientStateAminoMsg): ClientState;
    toAminoMsg(message: ClientState): ClientStateAminoMsg;
    fromProtoMsg(message: ClientStateProtoMsg): ClientState;
    toProto(message: ClientState): Uint8Array;
    toProtoMsg(message: ClientState): ClientStateProtoMsg;
    registerTypeUrl(): void;
};
/**
 * ConsensusState defines a solo machine consensus state. The sequence of a
 * consensus state is contained in the "height" key used in storing the
 * consensus state.
 * @name ConsensusState
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.ConsensusState
 */
export declare const ConsensusState: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ConsensusState;
    isAmino(o: any): o is ConsensusStateAmino;
    encode(message: ConsensusState, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ConsensusState;
    fromPartial(object: DeepPartial<ConsensusState>): ConsensusState;
    fromAmino(object: ConsensusStateAmino): ConsensusState;
    toAmino(message: ConsensusState): ConsensusStateAmino;
    fromAminoMsg(object: ConsensusStateAminoMsg): ConsensusState;
    toAminoMsg(message: ConsensusState): ConsensusStateAminoMsg;
    fromProtoMsg(message: ConsensusStateProtoMsg): ConsensusState;
    toProto(message: ConsensusState): Uint8Array;
    toProtoMsg(message: ConsensusState): ConsensusStateProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Header defines a solo machine consensus header
 * @name Header
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.Header
 */
export declare const Header: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Header;
    isAmino(o: any): o is HeaderAmino;
    encode(message: Header, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Header;
    fromPartial(object: DeepPartial<Header>): Header;
    fromAmino(object: HeaderAmino): Header;
    toAmino(message: Header): HeaderAmino;
    fromAminoMsg(object: HeaderAminoMsg): Header;
    toAminoMsg(message: Header): HeaderAminoMsg;
    fromProtoMsg(message: HeaderProtoMsg): Header;
    toProto(message: Header): Uint8Array;
    toProtoMsg(message: Header): HeaderProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Misbehaviour defines misbehaviour for a solo machine which consists
 * of a sequence and two signatures over different messages at that sequence.
 * @name Misbehaviour
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.Misbehaviour
 */
export declare const Misbehaviour: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Misbehaviour;
    isAmino(o: any): o is MisbehaviourAmino;
    encode(message: Misbehaviour, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Misbehaviour;
    fromPartial(object: DeepPartial<Misbehaviour>): Misbehaviour;
    fromAmino(object: MisbehaviourAmino): Misbehaviour;
    toAmino(message: Misbehaviour): MisbehaviourAmino;
    fromAminoMsg(object: MisbehaviourAminoMsg): Misbehaviour;
    toAminoMsg(message: Misbehaviour): MisbehaviourAminoMsg;
    fromProtoMsg(message: MisbehaviourProtoMsg): Misbehaviour;
    toProto(message: Misbehaviour): Uint8Array;
    toProtoMsg(message: Misbehaviour): MisbehaviourProtoMsg;
    registerTypeUrl(): void;
};
/**
 * SignatureAndData contains a signature and the data signed over to create that
 * signature.
 * @name SignatureAndData
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.SignatureAndData
 */
export declare const SignatureAndData: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is SignatureAndData;
    isAmino(o: any): o is SignatureAndDataAmino;
    encode(message: SignatureAndData, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): SignatureAndData;
    fromPartial(object: DeepPartial<SignatureAndData>): SignatureAndData;
    fromAmino(object: SignatureAndDataAmino): SignatureAndData;
    toAmino(message: SignatureAndData): SignatureAndDataAmino;
    fromAminoMsg(object: SignatureAndDataAminoMsg): SignatureAndData;
    toAminoMsg(message: SignatureAndData): SignatureAndDataAminoMsg;
    fromProtoMsg(message: SignatureAndDataProtoMsg): SignatureAndData;
    toProto(message: SignatureAndData): Uint8Array;
    toProtoMsg(message: SignatureAndData): SignatureAndDataProtoMsg;
    registerTypeUrl(): void;
};
/**
 * TimestampedSignatureData contains the signature data and the timestamp of the
 * signature.
 * @name TimestampedSignatureData
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.TimestampedSignatureData
 */
export declare const TimestampedSignatureData: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is TimestampedSignatureData;
    isAmino(o: any): o is TimestampedSignatureDataAmino;
    encode(message: TimestampedSignatureData, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): TimestampedSignatureData;
    fromPartial(object: DeepPartial<TimestampedSignatureData>): TimestampedSignatureData;
    fromAmino(object: TimestampedSignatureDataAmino): TimestampedSignatureData;
    toAmino(message: TimestampedSignatureData): TimestampedSignatureDataAmino;
    fromAminoMsg(object: TimestampedSignatureDataAminoMsg): TimestampedSignatureData;
    toAminoMsg(message: TimestampedSignatureData): TimestampedSignatureDataAminoMsg;
    fromProtoMsg(message: TimestampedSignatureDataProtoMsg): TimestampedSignatureData;
    toProto(message: TimestampedSignatureData): Uint8Array;
    toProtoMsg(message: TimestampedSignatureData): TimestampedSignatureDataProtoMsg;
    registerTypeUrl(): void;
};
/**
 * SignBytes defines the signed bytes used for signature verification.
 * @name SignBytes
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.SignBytes
 */
export declare const SignBytes: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is SignBytes;
    isAmino(o: any): o is SignBytesAmino;
    encode(message: SignBytes, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): SignBytes;
    fromPartial(object: DeepPartial<SignBytes>): SignBytes;
    fromAmino(object: SignBytesAmino): SignBytes;
    toAmino(message: SignBytes): SignBytesAmino;
    fromAminoMsg(object: SignBytesAminoMsg): SignBytes;
    toAminoMsg(message: SignBytes): SignBytesAminoMsg;
    fromProtoMsg(message: SignBytesProtoMsg): SignBytes;
    toProto(message: SignBytes): Uint8Array;
    toProtoMsg(message: SignBytes): SignBytesProtoMsg;
    registerTypeUrl(): void;
};
/**
 * HeaderData returns the SignBytes data for update verification.
 * @name HeaderData
 * @package ibc.lightclients.solomachine.v3
 * @see proto type: ibc.lightclients.solomachine.v3.HeaderData
 */
export declare const HeaderData: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is HeaderData;
    isAmino(o: any): o is HeaderDataAmino;
    encode(message: HeaderData, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): HeaderData;
    fromPartial(object: DeepPartial<HeaderData>): HeaderData;
    fromAmino(object: HeaderDataAmino): HeaderData;
    toAmino(message: HeaderData): HeaderDataAmino;
    fromAminoMsg(object: HeaderDataAminoMsg): HeaderData;
    toAminoMsg(message: HeaderData): HeaderDataAminoMsg;
    fromProtoMsg(message: HeaderDataProtoMsg): HeaderData;
    toProto(message: HeaderData): Uint8Array;
    toProtoMsg(message: HeaderData): HeaderDataProtoMsg;
    registerTypeUrl(): void;
};
