import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * Params defines the set of IBC transfer parameters.
 * NOTE: To prevent a single token from being transferred, set the
 * TransfersEnabled parameter to true and then set the bank module's SendEnabled
 * parameter for the denomination to false.
 * @name Params
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Params
 */
export interface Params {
    /**
     * send_enabled enables or disables all cross-chain token transfers from this
     * chain.
     */
    sendEnabled: boolean;
    /**
     * receive_enabled enables or disables all cross-chain token transfers to this
     * chain.
     */
    receiveEnabled: boolean;
}
export interface ParamsProtoMsg {
    typeUrl: "/ibc.applications.transfer.v1.Params";
    value: Uint8Array;
}
/**
 * Params defines the set of IBC transfer parameters.
 * NOTE: To prevent a single token from being transferred, set the
 * TransfersEnabled parameter to true and then set the bank module's SendEnabled
 * parameter for the denomination to false.
 * @name ParamsAmino
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Params
 */
export interface ParamsAmino {
    /**
     * send_enabled enables or disables all cross-chain token transfers from this
     * chain.
     */
    send_enabled: boolean;
    /**
     * receive_enabled enables or disables all cross-chain token transfers to this
     * chain.
     */
    receive_enabled: boolean;
}
export interface ParamsAminoMsg {
    type: "cosmos-sdk/Params";
    value: ParamsAmino;
}
/**
 * Forwarding defines a list of port ID, channel ID pairs determining the path
 * through which a packet must be forwarded, and an unwind boolean indicating if
 * the coin should be unwinded to its native chain before forwarding.
 * @name Forwarding
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Forwarding
 */
export interface Forwarding {
    /**
     * optional unwinding for the token transfered
     */
    unwind: boolean;
    /**
     * optional intermediate path through which packet will be forwarded
     */
    hops: Hop[];
}
export interface ForwardingProtoMsg {
    typeUrl: "/ibc.applications.transfer.v1.Forwarding";
    value: Uint8Array;
}
/**
 * Forwarding defines a list of port ID, channel ID pairs determining the path
 * through which a packet must be forwarded, and an unwind boolean indicating if
 * the coin should be unwinded to its native chain before forwarding.
 * @name ForwardingAmino
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Forwarding
 */
export interface ForwardingAmino {
    /**
     * optional unwinding for the token transfered
     */
    unwind: boolean;
    /**
     * optional intermediate path through which packet will be forwarded
     */
    hops: HopAmino[];
}
export interface ForwardingAminoMsg {
    type: "cosmos-sdk/Forwarding";
    value: ForwardingAmino;
}
/**
 * Hop defines a port ID, channel ID pair specifying where tokens must be forwarded
 * next in a multihop transfer.
 * @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 where tokens must be forwarded
 * next in a multihop transfer.
 * @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;
}
/**
 * Params defines the set of IBC transfer parameters.
 * NOTE: To prevent a single token from being transferred, set the
 * TransfersEnabled parameter to true and then set the bank module's SendEnabled
 * parameter for the denomination to false.
 * @name Params
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Params
 */
export declare const Params: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Params;
    isAmino(o: any): o is ParamsAmino;
    encode(message: Params, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Params;
    fromPartial(object: DeepPartial<Params>): Params;
    fromAmino(object: ParamsAmino): Params;
    toAmino(message: Params): ParamsAmino;
    fromAminoMsg(object: ParamsAminoMsg): Params;
    toAminoMsg(message: Params): ParamsAminoMsg;
    fromProtoMsg(message: ParamsProtoMsg): Params;
    toProto(message: Params): Uint8Array;
    toProtoMsg(message: Params): ParamsProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Forwarding defines a list of port ID, channel ID pairs determining the path
 * through which a packet must be forwarded, and an unwind boolean indicating if
 * the coin should be unwinded to its native chain before forwarding.
 * @name Forwarding
 * @package ibc.applications.transfer.v1
 * @see proto type: ibc.applications.transfer.v1.Forwarding
 */
export declare const Forwarding: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Forwarding;
    isAmino(o: any): o is ForwardingAmino;
    encode(message: Forwarding, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Forwarding;
    fromPartial(object: DeepPartial<Forwarding>): Forwarding;
    fromAmino(object: ForwardingAmino): Forwarding;
    toAmino(message: Forwarding): ForwardingAmino;
    fromAminoMsg(object: ForwardingAminoMsg): Forwarding;
    toAminoMsg(message: Forwarding): ForwardingAminoMsg;
    fromProtoMsg(message: ForwardingProtoMsg): Forwarding;
    toProto(message: Forwarding): Uint8Array;
    toProtoMsg(message: Forwarding): ForwardingProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Hop defines a port ID, channel ID pair specifying where tokens must be forwarded
 * next in a multihop transfer.
 * @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;
};
