import { Denom, DenomAmino } from "./token";
import { Params, ParamsAmino } from "../v1/transfer";
import { Coin, CoinAmino } from "../../../../cosmos/base/v1beta1/coin";
import { PacketId, PacketIdAmino, Packet, PacketAmino } from "../../../core/channel/v1/channel";
import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * GenesisState defines the ibc-transfer genesis state
 * @name GenesisState
 * @package ibc.applications.transfer.v2
 * @see proto type: ibc.applications.transfer.v2.GenesisState
 */
export interface GenesisState {
    portId: string;
    denoms: Denom[];
    params: Params;
    /**
     * total_escrowed contains the total amount of tokens escrowed
     * by the transfer module
     */
    totalEscrowed: Coin[];
    /**
     * forwarded_packets contains the forwarded packets stored as part of the
     * packet forwarding lifecycle
     */
    forwardedPackets: ForwardedPacket[];
}
export interface GenesisStateProtoMsg {
    typeUrl: "/ibc.applications.transfer.v2.GenesisState";
    value: Uint8Array;
}
/**
 * GenesisState defines the ibc-transfer genesis state
 * @name GenesisStateAmino
 * @package ibc.applications.transfer.v2
 * @see proto type: ibc.applications.transfer.v2.GenesisState
 */
export interface GenesisStateAmino {
    port_id: string;
    denoms: DenomAmino[];
    params: ParamsAmino;
    /**
     * total_escrowed contains the total amount of tokens escrowed
     * by the transfer module
     */
    total_escrowed: CoinAmino[];
    /**
     * forwarded_packets contains the forwarded packets stored as part of the
     * packet forwarding lifecycle
     */
    forwarded_packets: ForwardedPacketAmino[];
}
export interface GenesisStateAminoMsg {
    type: "cosmos-sdk/GenesisState";
    value: GenesisStateAmino;
}
/**
 * ForwardedPacket defines the genesis type necessary to retrieve and store forwarded packets.
 * @name ForwardedPacket
 * @package ibc.applications.transfer.v2
 * @see proto type: ibc.applications.transfer.v2.ForwardedPacket
 */
export interface ForwardedPacket {
    forwardKey: PacketId;
    packet: Packet;
}
export interface ForwardedPacketProtoMsg {
    typeUrl: "/ibc.applications.transfer.v2.ForwardedPacket";
    value: Uint8Array;
}
/**
 * ForwardedPacket defines the genesis type necessary to retrieve and store forwarded packets.
 * @name ForwardedPacketAmino
 * @package ibc.applications.transfer.v2
 * @see proto type: ibc.applications.transfer.v2.ForwardedPacket
 */
export interface ForwardedPacketAmino {
    forward_key: PacketIdAmino;
    packet: PacketAmino;
}
export interface ForwardedPacketAminoMsg {
    type: "cosmos-sdk/ForwardedPacket";
    value: ForwardedPacketAmino;
}
/**
 * GenesisState defines the ibc-transfer genesis state
 * @name GenesisState
 * @package ibc.applications.transfer.v2
 * @see proto type: ibc.applications.transfer.v2.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;
};
/**
 * ForwardedPacket defines the genesis type necessary to retrieve and store forwarded packets.
 * @name ForwardedPacket
 * @package ibc.applications.transfer.v2
 * @see proto type: ibc.applications.transfer.v2.ForwardedPacket
 */
export declare const ForwardedPacket: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ForwardedPacket;
    isAmino(o: any): o is ForwardedPacketAmino;
    encode(message: ForwardedPacket, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ForwardedPacket;
    fromPartial(object: DeepPartial<ForwardedPacket>): ForwardedPacket;
    fromAmino(object: ForwardedPacketAmino): ForwardedPacket;
    toAmino(message: ForwardedPacket): ForwardedPacketAmino;
    fromAminoMsg(object: ForwardedPacketAminoMsg): ForwardedPacket;
    toAminoMsg(message: ForwardedPacket): ForwardedPacketAminoMsg;
    fromProtoMsg(message: ForwardedPacketProtoMsg): ForwardedPacket;
    toProto(message: ForwardedPacket): Uint8Array;
    toProtoMsg(message: ForwardedPacket): ForwardedPacketProtoMsg;
    registerTypeUrl(): void;
};
