import { IdentifiedClientState, IdentifiedClientStateAmino, ClientConsensusStates, ClientConsensusStatesAmino, Params, ParamsAmino } from "./client";
import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * GenesisState defines the ibc client submodule's genesis state.
 * @name GenesisState
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.GenesisState
 */
export interface GenesisState {
    /**
     * client states with their corresponding identifiers
     */
    clients: IdentifiedClientState[];
    /**
     * consensus states from each client
     */
    clientsConsensus: ClientConsensusStates[];
    /**
     * metadata from each client
     */
    clientsMetadata: IdentifiedGenesisMetadata[];
    params: Params;
    /**
     * Deprecated: create_localhost has been deprecated.
     * The localhost client is automatically created at genesis.
     * @deprecated
     */
    createLocalhost: boolean;
    /**
     * the sequence for the next generated client identifier
     */
    nextClientSequence: bigint;
}
export interface GenesisStateProtoMsg {
    typeUrl: "/ibc.core.client.v1.GenesisState";
    value: Uint8Array;
}
/**
 * GenesisState defines the ibc client submodule's genesis state.
 * @name GenesisStateAmino
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.GenesisState
 */
export interface GenesisStateAmino {
    /**
     * client states with their corresponding identifiers
     */
    clients: IdentifiedClientStateAmino[];
    /**
     * consensus states from each client
     */
    clients_consensus: ClientConsensusStatesAmino[];
    /**
     * metadata from each client
     */
    clients_metadata: IdentifiedGenesisMetadataAmino[];
    params: ParamsAmino;
    /**
     * Deprecated: create_localhost has been deprecated.
     * The localhost client is automatically created at genesis.
     * @deprecated
     */
    create_localhost: boolean;
    /**
     * the sequence for the next generated client identifier
     */
    next_client_sequence: string;
}
export interface GenesisStateAminoMsg {
    type: "cosmos-sdk/GenesisState";
    value: GenesisStateAmino;
}
/**
 * GenesisMetadata defines the genesis type for metadata that will be used
 * to export all client store keys that are not client or consensus states.
 * @name GenesisMetadata
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.GenesisMetadata
 */
export interface GenesisMetadata {
    /**
     * store key of metadata without clientID-prefix
     */
    key: Uint8Array;
    /**
     * metadata value
     */
    value: Uint8Array;
}
export interface GenesisMetadataProtoMsg {
    typeUrl: "/ibc.core.client.v1.GenesisMetadata";
    value: Uint8Array;
}
/**
 * GenesisMetadata defines the genesis type for metadata that will be used
 * to export all client store keys that are not client or consensus states.
 * @name GenesisMetadataAmino
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.GenesisMetadata
 */
export interface GenesisMetadataAmino {
    /**
     * store key of metadata without clientID-prefix
     */
    key: string;
    /**
     * metadata value
     */
    value: string;
}
export interface GenesisMetadataAminoMsg {
    type: "cosmos-sdk/GenesisMetadata";
    value: GenesisMetadataAmino;
}
/**
 * IdentifiedGenesisMetadata has the client metadata with the corresponding
 * client id.
 * @name IdentifiedGenesisMetadata
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.IdentifiedGenesisMetadata
 */
export interface IdentifiedGenesisMetadata {
    clientId: string;
    clientMetadata: GenesisMetadata[];
}
export interface IdentifiedGenesisMetadataProtoMsg {
    typeUrl: "/ibc.core.client.v1.IdentifiedGenesisMetadata";
    value: Uint8Array;
}
/**
 * IdentifiedGenesisMetadata has the client metadata with the corresponding
 * client id.
 * @name IdentifiedGenesisMetadataAmino
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.IdentifiedGenesisMetadata
 */
export interface IdentifiedGenesisMetadataAmino {
    client_id: string;
    client_metadata: GenesisMetadataAmino[];
}
export interface IdentifiedGenesisMetadataAminoMsg {
    type: "cosmos-sdk/IdentifiedGenesisMetadata";
    value: IdentifiedGenesisMetadataAmino;
}
/**
 * GenesisState defines the ibc client submodule's genesis state.
 * @name GenesisState
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.GenesisState
 */
export declare const GenesisState: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is GenesisState;
    isAmino(o: any): o is GenesisStateAmino;
    encode(message: GenesisState, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): GenesisState;
    fromPartial(object: DeepPartial<GenesisState>): GenesisState;
    fromAmino(object: GenesisStateAmino): GenesisState;
    toAmino(message: GenesisState): GenesisStateAmino;
    fromAminoMsg(object: GenesisStateAminoMsg): GenesisState;
    toAminoMsg(message: GenesisState): GenesisStateAminoMsg;
    fromProtoMsg(message: GenesisStateProtoMsg): GenesisState;
    toProto(message: GenesisState): Uint8Array;
    toProtoMsg(message: GenesisState): GenesisStateProtoMsg;
    registerTypeUrl(): void;
};
/**
 * GenesisMetadata defines the genesis type for metadata that will be used
 * to export all client store keys that are not client or consensus states.
 * @name GenesisMetadata
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.GenesisMetadata
 */
export declare const GenesisMetadata: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is GenesisMetadata;
    isAmino(o: any): o is GenesisMetadataAmino;
    encode(message: GenesisMetadata, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): GenesisMetadata;
    fromPartial(object: DeepPartial<GenesisMetadata>): GenesisMetadata;
    fromAmino(object: GenesisMetadataAmino): GenesisMetadata;
    toAmino(message: GenesisMetadata): GenesisMetadataAmino;
    fromAminoMsg(object: GenesisMetadataAminoMsg): GenesisMetadata;
    toAminoMsg(message: GenesisMetadata): GenesisMetadataAminoMsg;
    fromProtoMsg(message: GenesisMetadataProtoMsg): GenesisMetadata;
    toProto(message: GenesisMetadata): Uint8Array;
    toProtoMsg(message: GenesisMetadata): GenesisMetadataProtoMsg;
    registerTypeUrl(): void;
};
/**
 * IdentifiedGenesisMetadata has the client metadata with the corresponding
 * client id.
 * @name IdentifiedGenesisMetadata
 * @package ibc.core.client.v1
 * @see proto type: ibc.core.client.v1.IdentifiedGenesisMetadata
 */
export declare const IdentifiedGenesisMetadata: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is IdentifiedGenesisMetadata;
    isAmino(o: any): o is IdentifiedGenesisMetadataAmino;
    encode(message: IdentifiedGenesisMetadata, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): IdentifiedGenesisMetadata;
    fromPartial(object: DeepPartial<IdentifiedGenesisMetadata>): IdentifiedGenesisMetadata;
    fromAmino(object: IdentifiedGenesisMetadataAmino): IdentifiedGenesisMetadata;
    toAmino(message: IdentifiedGenesisMetadata): IdentifiedGenesisMetadataAmino;
    fromAminoMsg(object: IdentifiedGenesisMetadataAminoMsg): IdentifiedGenesisMetadata;
    toAminoMsg(message: IdentifiedGenesisMetadata): IdentifiedGenesisMetadataAminoMsg;
    fromProtoMsg(message: IdentifiedGenesisMetadataProtoMsg): IdentifiedGenesisMetadata;
    toProto(message: IdentifiedGenesisMetadata): Uint8Array;
    toProtoMsg(message: IdentifiedGenesisMetadata): IdentifiedGenesisMetadataProtoMsg;
    registerTypeUrl(): void;
};
