import { Params as Params1 } from "../../controller/v1/controller";
import { ParamsAmino as Params1Amino } from "../../controller/v1/controller";
import { Params as Params2 } from "../../host/v1/host";
import { ParamsAmino as Params2Amino } from "../../host/v1/host";
import { BinaryReader, BinaryWriter } from "../../../../../binary";
import { DeepPartial } from "../../../../../helpers";
/**
 * GenesisState defines the interchain accounts genesis state
 * @name GenesisState
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.GenesisState
 */
export interface GenesisState {
    controllerGenesisState: ControllerGenesisState;
    hostGenesisState: HostGenesisState;
}
export interface GenesisStateProtoMsg {
    typeUrl: "/ibc.applications.interchain_accounts.genesis.v1.GenesisState";
    value: Uint8Array;
}
/**
 * GenesisState defines the interchain accounts genesis state
 * @name GenesisStateAmino
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.GenesisState
 */
export interface GenesisStateAmino {
    controller_genesis_state: ControllerGenesisStateAmino;
    host_genesis_state: HostGenesisStateAmino;
}
export interface GenesisStateAminoMsg {
    type: "cosmos-sdk/GenesisState";
    value: GenesisStateAmino;
}
/**
 * ControllerGenesisState defines the interchain accounts controller genesis state
 * @name ControllerGenesisState
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.ControllerGenesisState
 */
export interface ControllerGenesisState {
    activeChannels: ActiveChannel[];
    interchainAccounts: RegisteredInterchainAccount[];
    ports: string[];
    params: Params1;
}
export interface ControllerGenesisStateProtoMsg {
    typeUrl: "/ibc.applications.interchain_accounts.genesis.v1.ControllerGenesisState";
    value: Uint8Array;
}
/**
 * ControllerGenesisState defines the interchain accounts controller genesis state
 * @name ControllerGenesisStateAmino
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.ControllerGenesisState
 */
export interface ControllerGenesisStateAmino {
    active_channels: ActiveChannelAmino[];
    interchain_accounts: RegisteredInterchainAccountAmino[];
    ports: string[];
    params: Params1Amino;
}
export interface ControllerGenesisStateAminoMsg {
    type: "cosmos-sdk/ControllerGenesisState";
    value: ControllerGenesisStateAmino;
}
/**
 * HostGenesisState defines the interchain accounts host genesis state
 * @name HostGenesisState
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.HostGenesisState
 */
export interface HostGenesisState {
    activeChannels: ActiveChannel[];
    interchainAccounts: RegisteredInterchainAccount[];
    port: string;
    params: Params2;
}
export interface HostGenesisStateProtoMsg {
    typeUrl: "/ibc.applications.interchain_accounts.genesis.v1.HostGenesisState";
    value: Uint8Array;
}
/**
 * HostGenesisState defines the interchain accounts host genesis state
 * @name HostGenesisStateAmino
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.HostGenesisState
 */
export interface HostGenesisStateAmino {
    active_channels: ActiveChannelAmino[];
    interchain_accounts: RegisteredInterchainAccountAmino[];
    port: string;
    params: Params2Amino;
}
export interface HostGenesisStateAminoMsg {
    type: "cosmos-sdk/HostGenesisState";
    value: HostGenesisStateAmino;
}
/**
 * ActiveChannel contains a connection ID, port ID and associated active channel ID, as well as a boolean flag to
 * indicate if the channel is middleware enabled
 * @name ActiveChannel
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.ActiveChannel
 */
export interface ActiveChannel {
    connectionId: string;
    portId: string;
    channelId: string;
    isMiddlewareEnabled: boolean;
}
export interface ActiveChannelProtoMsg {
    typeUrl: "/ibc.applications.interchain_accounts.genesis.v1.ActiveChannel";
    value: Uint8Array;
}
/**
 * ActiveChannel contains a connection ID, port ID and associated active channel ID, as well as a boolean flag to
 * indicate if the channel is middleware enabled
 * @name ActiveChannelAmino
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.ActiveChannel
 */
export interface ActiveChannelAmino {
    connection_id: string;
    port_id: string;
    channel_id: string;
    is_middleware_enabled: boolean;
}
export interface ActiveChannelAminoMsg {
    type: "cosmos-sdk/ActiveChannel";
    value: ActiveChannelAmino;
}
/**
 * RegisteredInterchainAccount contains a connection ID, port ID and associated interchain account address
 * @name RegisteredInterchainAccount
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.RegisteredInterchainAccount
 */
export interface RegisteredInterchainAccount {
    connectionId: string;
    portId: string;
    accountAddress: string;
}
export interface RegisteredInterchainAccountProtoMsg {
    typeUrl: "/ibc.applications.interchain_accounts.genesis.v1.RegisteredInterchainAccount";
    value: Uint8Array;
}
/**
 * RegisteredInterchainAccount contains a connection ID, port ID and associated interchain account address
 * @name RegisteredInterchainAccountAmino
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.RegisteredInterchainAccount
 */
export interface RegisteredInterchainAccountAmino {
    connection_id: string;
    port_id: string;
    account_address: string;
}
export interface RegisteredInterchainAccountAminoMsg {
    type: "cosmos-sdk/RegisteredInterchainAccount";
    value: RegisteredInterchainAccountAmino;
}
/**
 * GenesisState defines the interchain accounts genesis state
 * @name GenesisState
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.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;
};
/**
 * ControllerGenesisState defines the interchain accounts controller genesis state
 * @name ControllerGenesisState
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.ControllerGenesisState
 */
export declare const ControllerGenesisState: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ControllerGenesisState;
    isAmino(o: any): o is ControllerGenesisStateAmino;
    encode(message: ControllerGenesisState, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ControllerGenesisState;
    fromPartial(object: DeepPartial<ControllerGenesisState>): ControllerGenesisState;
    fromAmino(object: ControllerGenesisStateAmino): ControllerGenesisState;
    toAmino(message: ControllerGenesisState): ControllerGenesisStateAmino;
    fromAminoMsg(object: ControllerGenesisStateAminoMsg): ControllerGenesisState;
    toAminoMsg(message: ControllerGenesisState): ControllerGenesisStateAminoMsg;
    fromProtoMsg(message: ControllerGenesisStateProtoMsg): ControllerGenesisState;
    toProto(message: ControllerGenesisState): Uint8Array;
    toProtoMsg(message: ControllerGenesisState): ControllerGenesisStateProtoMsg;
    registerTypeUrl(): void;
};
/**
 * HostGenesisState defines the interchain accounts host genesis state
 * @name HostGenesisState
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.HostGenesisState
 */
export declare const HostGenesisState: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is HostGenesisState;
    isAmino(o: any): o is HostGenesisStateAmino;
    encode(message: HostGenesisState, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): HostGenesisState;
    fromPartial(object: DeepPartial<HostGenesisState>): HostGenesisState;
    fromAmino(object: HostGenesisStateAmino): HostGenesisState;
    toAmino(message: HostGenesisState): HostGenesisStateAmino;
    fromAminoMsg(object: HostGenesisStateAminoMsg): HostGenesisState;
    toAminoMsg(message: HostGenesisState): HostGenesisStateAminoMsg;
    fromProtoMsg(message: HostGenesisStateProtoMsg): HostGenesisState;
    toProto(message: HostGenesisState): Uint8Array;
    toProtoMsg(message: HostGenesisState): HostGenesisStateProtoMsg;
    registerTypeUrl(): void;
};
/**
 * ActiveChannel contains a connection ID, port ID and associated active channel ID, as well as a boolean flag to
 * indicate if the channel is middleware enabled
 * @name ActiveChannel
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.ActiveChannel
 */
export declare const ActiveChannel: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ActiveChannel;
    isAmino(o: any): o is ActiveChannelAmino;
    encode(message: ActiveChannel, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ActiveChannel;
    fromPartial(object: DeepPartial<ActiveChannel>): ActiveChannel;
    fromAmino(object: ActiveChannelAmino): ActiveChannel;
    toAmino(message: ActiveChannel): ActiveChannelAmino;
    fromAminoMsg(object: ActiveChannelAminoMsg): ActiveChannel;
    toAminoMsg(message: ActiveChannel): ActiveChannelAminoMsg;
    fromProtoMsg(message: ActiveChannelProtoMsg): ActiveChannel;
    toProto(message: ActiveChannel): Uint8Array;
    toProtoMsg(message: ActiveChannel): ActiveChannelProtoMsg;
    registerTypeUrl(): void;
};
/**
 * RegisteredInterchainAccount contains a connection ID, port ID and associated interchain account address
 * @name RegisteredInterchainAccount
 * @package ibc.applications.interchain_accounts.genesis.v1
 * @see proto type: ibc.applications.interchain_accounts.genesis.v1.RegisteredInterchainAccount
 */
export declare const RegisteredInterchainAccount: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is RegisteredInterchainAccount;
    isAmino(o: any): o is RegisteredInterchainAccountAmino;
    encode(message: RegisteredInterchainAccount, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): RegisteredInterchainAccount;
    fromPartial(object: DeepPartial<RegisteredInterchainAccount>): RegisteredInterchainAccount;
    fromAmino(object: RegisteredInterchainAccountAmino): RegisteredInterchainAccount;
    toAmino(message: RegisteredInterchainAccount): RegisteredInterchainAccountAmino;
    fromAminoMsg(object: RegisteredInterchainAccountAminoMsg): RegisteredInterchainAccount;
    toAminoMsg(message: RegisteredInterchainAccount): RegisteredInterchainAccountAminoMsg;
    fromProtoMsg(message: RegisteredInterchainAccountProtoMsg): RegisteredInterchainAccount;
    toProto(message: RegisteredInterchainAccount): Uint8Array;
    toProtoMsg(message: RegisteredInterchainAccount): RegisteredInterchainAccountProtoMsg;
    registerTypeUrl(): void;
};
