import { Coin, CoinAmino } from "../../../../cosmos/base/v1beta1/coin";
import { PacketId, PacketIdAmino } from "../../../core/channel/v1/channel";
import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * Fee defines the ICS29 receive, acknowledgement and timeout fees
 * @name Fee
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.Fee
 */
export interface Fee {
    /**
     * the packet receive fee
     */
    recvFee: Coin[];
    /**
     * the packet acknowledgement fee
     */
    ackFee: Coin[];
    /**
     * the packet timeout fee
     */
    timeoutFee: Coin[];
}
export interface FeeProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.Fee";
    value: Uint8Array;
}
/**
 * Fee defines the ICS29 receive, acknowledgement and timeout fees
 * @name FeeAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.Fee
 */
export interface FeeAmino {
    /**
     * the packet receive fee
     */
    recv_fee: CoinAmino[];
    /**
     * the packet acknowledgement fee
     */
    ack_fee: CoinAmino[];
    /**
     * the packet timeout fee
     */
    timeout_fee: CoinAmino[];
}
export interface FeeAminoMsg {
    type: "cosmos-sdk/Fee";
    value: FeeAmino;
}
/**
 * PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers
 * @name PacketFee
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.PacketFee
 */
export interface PacketFee {
    /**
     * fee encapsulates the recv, ack and timeout fees associated with an IBC packet
     */
    fee: Fee;
    /**
     * the refund address for unspent fees
     */
    refundAddress: string;
    /**
     * optional list of relayers permitted to receive fees
     */
    relayers: string[];
}
export interface PacketFeeProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.PacketFee";
    value: Uint8Array;
}
/**
 * PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers
 * @name PacketFeeAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.PacketFee
 */
export interface PacketFeeAmino {
    /**
     * fee encapsulates the recv, ack and timeout fees associated with an IBC packet
     */
    fee: FeeAmino;
    /**
     * the refund address for unspent fees
     */
    refund_address: string;
    /**
     * optional list of relayers permitted to receive fees
     */
    relayers: string[];
}
export interface PacketFeeAminoMsg {
    type: "cosmos-sdk/PacketFee";
    value: PacketFeeAmino;
}
/**
 * PacketFees contains a list of type PacketFee
 * @name PacketFees
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.PacketFees
 */
export interface PacketFees {
    /**
     * list of packet fees
     */
    packetFees: PacketFee[];
}
export interface PacketFeesProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.PacketFees";
    value: Uint8Array;
}
/**
 * PacketFees contains a list of type PacketFee
 * @name PacketFeesAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.PacketFees
 */
export interface PacketFeesAmino {
    /**
     * list of packet fees
     */
    packet_fees: PacketFeeAmino[];
}
export interface PacketFeesAminoMsg {
    type: "cosmos-sdk/PacketFees";
    value: PacketFeesAmino;
}
/**
 * IdentifiedPacketFees contains a list of type PacketFee and associated PacketId
 * @name IdentifiedPacketFees
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.IdentifiedPacketFees
 */
export interface IdentifiedPacketFees {
    /**
     * unique packet identifier comprised of the channel ID, port ID and sequence
     */
    packetId: PacketId;
    /**
     * list of packet fees
     */
    packetFees: PacketFee[];
}
export interface IdentifiedPacketFeesProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.IdentifiedPacketFees";
    value: Uint8Array;
}
/**
 * IdentifiedPacketFees contains a list of type PacketFee and associated PacketId
 * @name IdentifiedPacketFeesAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.IdentifiedPacketFees
 */
export interface IdentifiedPacketFeesAmino {
    /**
     * unique packet identifier comprised of the channel ID, port ID and sequence
     */
    packet_id: PacketIdAmino;
    /**
     * list of packet fees
     */
    packet_fees: PacketFeeAmino[];
}
export interface IdentifiedPacketFeesAminoMsg {
    type: "cosmos-sdk/IdentifiedPacketFees";
    value: IdentifiedPacketFeesAmino;
}
/**
 * Fee defines the ICS29 receive, acknowledgement and timeout fees
 * @name Fee
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.Fee
 */
export declare const Fee: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Fee;
    isAmino(o: any): o is FeeAmino;
    encode(message: Fee, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Fee;
    fromPartial(object: DeepPartial<Fee>): Fee;
    fromAmino(object: FeeAmino): Fee;
    toAmino(message: Fee): FeeAmino;
    fromAminoMsg(object: FeeAminoMsg): Fee;
    toAminoMsg(message: Fee): FeeAminoMsg;
    fromProtoMsg(message: FeeProtoMsg): Fee;
    toProto(message: Fee): Uint8Array;
    toProtoMsg(message: Fee): FeeProtoMsg;
    registerTypeUrl(): void;
};
/**
 * PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers
 * @name PacketFee
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.PacketFee
 */
export declare const PacketFee: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is PacketFee;
    isAmino(o: any): o is PacketFeeAmino;
    encode(message: PacketFee, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): PacketFee;
    fromPartial(object: DeepPartial<PacketFee>): PacketFee;
    fromAmino(object: PacketFeeAmino): PacketFee;
    toAmino(message: PacketFee): PacketFeeAmino;
    fromAminoMsg(object: PacketFeeAminoMsg): PacketFee;
    toAminoMsg(message: PacketFee): PacketFeeAminoMsg;
    fromProtoMsg(message: PacketFeeProtoMsg): PacketFee;
    toProto(message: PacketFee): Uint8Array;
    toProtoMsg(message: PacketFee): PacketFeeProtoMsg;
    registerTypeUrl(): void;
};
/**
 * PacketFees contains a list of type PacketFee
 * @name PacketFees
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.PacketFees
 */
export declare const PacketFees: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is PacketFees;
    isAmino(o: any): o is PacketFeesAmino;
    encode(message: PacketFees, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): PacketFees;
    fromPartial(object: DeepPartial<PacketFees>): PacketFees;
    fromAmino(object: PacketFeesAmino): PacketFees;
    toAmino(message: PacketFees): PacketFeesAmino;
    fromAminoMsg(object: PacketFeesAminoMsg): PacketFees;
    toAminoMsg(message: PacketFees): PacketFeesAminoMsg;
    fromProtoMsg(message: PacketFeesProtoMsg): PacketFees;
    toProto(message: PacketFees): Uint8Array;
    toProtoMsg(message: PacketFees): PacketFeesProtoMsg;
    registerTypeUrl(): void;
};
/**
 * IdentifiedPacketFees contains a list of type PacketFee and associated PacketId
 * @name IdentifiedPacketFees
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.IdentifiedPacketFees
 */
export declare const IdentifiedPacketFees: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is IdentifiedPacketFees;
    isAmino(o: any): o is IdentifiedPacketFeesAmino;
    encode(message: IdentifiedPacketFees, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): IdentifiedPacketFees;
    fromPartial(object: DeepPartial<IdentifiedPacketFees>): IdentifiedPacketFees;
    fromAmino(object: IdentifiedPacketFeesAmino): IdentifiedPacketFees;
    toAmino(message: IdentifiedPacketFees): IdentifiedPacketFeesAmino;
    fromAminoMsg(object: IdentifiedPacketFeesAminoMsg): IdentifiedPacketFees;
    toAminoMsg(message: IdentifiedPacketFees): IdentifiedPacketFeesAminoMsg;
    fromProtoMsg(message: IdentifiedPacketFeesProtoMsg): IdentifiedPacketFees;
    toProto(message: IdentifiedPacketFees): Uint8Array;
    toProtoMsg(message: IdentifiedPacketFees): IdentifiedPacketFeesProtoMsg;
    registerTypeUrl(): void;
};
