import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * Token defines a struct which represents a token to be transferred.
 * @name Token
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Token
 */
export interface Token {
    /**
     * the token denomination
     */
    denom: Denom;
    /**
     * the token amount to be transferred
     */
    amount: string;
}
export interface TokenProtoMsg {
    typeUrl: "/ibc.applications.transfer.v1.Token";
    value: Uint8Array;
}
/**
 * Token defines a struct which represents a token to be transferred.
 * @name TokenAmino
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Token
 */
export interface TokenAmino {
    /**
     * the token denomination
     */
    denom: DenomAmino;
    /**
     * the token amount to be transferred
     */
    amount: string;
}
export interface TokenAminoMsg {
    type: "cosmos-sdk/Token";
    value: TokenAmino;
}
/**
 * Denom holds the base denom of a Token and a trace of the chains it was sent through.
 * @name Denom
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Denom
 */
export interface Denom {
    /**
     * the base token denomination
     */
    base: string;
    /**
     * the trace of the token
     */
    trace: Hop[];
}
export interface DenomProtoMsg {
    typeUrl: "/ibc.applications.transfer.v1.Denom";
    value: Uint8Array;
}
/**
 * Denom holds the base denom of a Token and a trace of the chains it was sent through.
 * @name DenomAmino
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Denom
 */
export interface DenomAmino {
    /**
     * the base token denomination
     */
    base: string;
    /**
     * the trace of the token
     */
    trace: HopAmino[];
}
export interface DenomAminoMsg {
    type: "cosmos-sdk/Denom";
    value: DenomAmino;
}
/**
 * Hop defines a port ID, channel ID pair specifying a unique "hop" in a trace
 * @name Hop
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Hop
 */
export interface Hop {
    portId: string;
    channelId: string;
}
export interface HopProtoMsg {
    typeUrl: "/ibc.applications.transfer.v1.Hop";
    value: Uint8Array;
}
/**
 * Hop defines a port ID, channel ID pair specifying a unique "hop" in a trace
 * @name HopAmino
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Hop
 */
export interface HopAmino {
    port_id: string;
    channel_id: string;
}
export interface HopAminoMsg {
    type: "cosmos-sdk/Hop";
    value: HopAmino;
}
/**
 * Token defines a struct which represents a token to be transferred.
 * @name Token
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Token
 */
export declare const Token: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Token;
    isAmino(o: any): o is TokenAmino;
    encode(message: Token, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Token;
    fromPartial(object: DeepPartial<Token>): Token;
    fromAmino(object: TokenAmino): Token;
    toAmino(message: Token): TokenAmino;
    fromAminoMsg(object: TokenAminoMsg): Token;
    toAminoMsg(message: Token): TokenAminoMsg;
    fromProtoMsg(message: TokenProtoMsg): Token;
    toProto(message: Token): Uint8Array;
    toProtoMsg(message: Token): TokenProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Denom holds the base denom of a Token and a trace of the chains it was sent through.
 * @name Denom
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Denom
 */
export declare const Denom: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Denom;
    isAmino(o: any): o is DenomAmino;
    encode(message: Denom, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Denom;
    fromPartial(object: DeepPartial<Denom>): Denom;
    fromAmino(object: DenomAmino): Denom;
    toAmino(message: Denom): DenomAmino;
    fromAminoMsg(object: DenomAminoMsg): Denom;
    toAminoMsg(message: Denom): DenomAminoMsg;
    fromProtoMsg(message: DenomProtoMsg): Denom;
    toProto(message: Denom): Uint8Array;
    toProtoMsg(message: Denom): DenomProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Hop defines a port ID, channel ID pair specifying a unique "hop" in a trace
 * @name Hop
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Hop
 */
export declare const Hop: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Hop;
    isAmino(o: any): o is HopAmino;
    encode(message: Hop, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Hop;
    fromPartial(object: DeepPartial<Hop>): Hop;
    fromAmino(object: HopAmino): Hop;
    toAmino(message: Hop): HopAmino;
    fromAminoMsg(object: HopAminoMsg): Hop;
    toAminoMsg(message: Hop): HopAminoMsg;
    fromProtoMsg(message: HopProtoMsg): Hop;
    toProto(message: Hop): Uint8Array;
    toProtoMsg(message: Hop): HopProtoMsg;
    registerTypeUrl(): void;
};
