import { IdentifiedPacketFees, IdentifiedPacketFeesAmino } from "./fee";
import { PacketId, PacketIdAmino } from "../../../core/channel/v1/channel";
import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * GenesisState defines the ICS29 fee middleware genesis state
 * @name GenesisState
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.GenesisState
 */
export interface GenesisState {
    /**
     * list of identified packet fees
     */
    identifiedFees: IdentifiedPacketFees[];
    /**
     * list of fee enabled channels
     */
    feeEnabledChannels: FeeEnabledChannel[];
    /**
     * list of registered payees
     */
    registeredPayees: RegisteredPayee[];
    /**
     * list of registered counterparty payees
     */
    registeredCounterpartyPayees: RegisteredCounterpartyPayee[];
    /**
     * list of forward relayer addresses
     */
    forwardRelayers: ForwardRelayerAddress[];
}
export interface GenesisStateProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.GenesisState";
    value: Uint8Array;
}
/**
 * GenesisState defines the ICS29 fee middleware genesis state
 * @name GenesisStateAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.GenesisState
 */
export interface GenesisStateAmino {
    /**
     * list of identified packet fees
     */
    identified_fees: IdentifiedPacketFeesAmino[];
    /**
     * list of fee enabled channels
     */
    fee_enabled_channels: FeeEnabledChannelAmino[];
    /**
     * list of registered payees
     */
    registered_payees: RegisteredPayeeAmino[];
    /**
     * list of registered counterparty payees
     */
    registered_counterparty_payees: RegisteredCounterpartyPayeeAmino[];
    /**
     * list of forward relayer addresses
     */
    forward_relayers: ForwardRelayerAddressAmino[];
}
export interface GenesisStateAminoMsg {
    type: "cosmos-sdk/GenesisState";
    value: GenesisStateAmino;
}
/**
 * FeeEnabledChannel contains the PortID & ChannelID for a fee enabled channel
 * @name FeeEnabledChannel
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.FeeEnabledChannel
 */
export interface FeeEnabledChannel {
    /**
     * unique port identifier
     */
    portId: string;
    /**
     * unique channel identifier
     */
    channelId: string;
}
export interface FeeEnabledChannelProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.FeeEnabledChannel";
    value: Uint8Array;
}
/**
 * FeeEnabledChannel contains the PortID & ChannelID for a fee enabled channel
 * @name FeeEnabledChannelAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.FeeEnabledChannel
 */
export interface FeeEnabledChannelAmino {
    /**
     * unique port identifier
     */
    port_id: string;
    /**
     * unique channel identifier
     */
    channel_id: string;
}
export interface FeeEnabledChannelAminoMsg {
    type: "cosmos-sdk/FeeEnabledChannel";
    value: FeeEnabledChannelAmino;
}
/**
 * RegisteredPayee contains the relayer address and payee address for a specific channel
 * @name RegisteredPayee
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.RegisteredPayee
 */
export interface RegisteredPayee {
    /**
     * unique channel identifier
     */
    channelId: string;
    /**
     * the relayer address
     */
    relayer: string;
    /**
     * the payee address
     */
    payee: string;
}
export interface RegisteredPayeeProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.RegisteredPayee";
    value: Uint8Array;
}
/**
 * RegisteredPayee contains the relayer address and payee address for a specific channel
 * @name RegisteredPayeeAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.RegisteredPayee
 */
export interface RegisteredPayeeAmino {
    /**
     * unique channel identifier
     */
    channel_id: string;
    /**
     * the relayer address
     */
    relayer: string;
    /**
     * the payee address
     */
    payee: string;
}
export interface RegisteredPayeeAminoMsg {
    type: "cosmos-sdk/RegisteredPayee";
    value: RegisteredPayeeAmino;
}
/**
 * RegisteredCounterpartyPayee contains the relayer address and counterparty payee address for a specific channel (used
 * for recv fee distribution)
 * @name RegisteredCounterpartyPayee
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.RegisteredCounterpartyPayee
 */
export interface RegisteredCounterpartyPayee {
    /**
     * unique channel identifier
     */
    channelId: string;
    /**
     * the relayer address
     */
    relayer: string;
    /**
     * the counterparty payee address
     */
    counterpartyPayee: string;
}
export interface RegisteredCounterpartyPayeeProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.RegisteredCounterpartyPayee";
    value: Uint8Array;
}
/**
 * RegisteredCounterpartyPayee contains the relayer address and counterparty payee address for a specific channel (used
 * for recv fee distribution)
 * @name RegisteredCounterpartyPayeeAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.RegisteredCounterpartyPayee
 */
export interface RegisteredCounterpartyPayeeAmino {
    /**
     * unique channel identifier
     */
    channel_id: string;
    /**
     * the relayer address
     */
    relayer: string;
    /**
     * the counterparty payee address
     */
    counterparty_payee: string;
}
export interface RegisteredCounterpartyPayeeAminoMsg {
    type: "cosmos-sdk/RegisteredCounterpartyPayee";
    value: RegisteredCounterpartyPayeeAmino;
}
/**
 * ForwardRelayerAddress contains the forward relayer address and PacketId used for async acknowledgements
 * @name ForwardRelayerAddress
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.ForwardRelayerAddress
 */
export interface ForwardRelayerAddress {
    /**
     * the forward relayer address
     */
    address: string;
    /**
     * unique packet identifier comprised of the channel ID, port ID and sequence
     */
    packetId: PacketId;
}
export interface ForwardRelayerAddressProtoMsg {
    typeUrl: "/ibc.applications.fee.v1.ForwardRelayerAddress";
    value: Uint8Array;
}
/**
 * ForwardRelayerAddress contains the forward relayer address and PacketId used for async acknowledgements
 * @name ForwardRelayerAddressAmino
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.ForwardRelayerAddress
 */
export interface ForwardRelayerAddressAmino {
    /**
     * the forward relayer address
     */
    address: string;
    /**
     * unique packet identifier comprised of the channel ID, port ID and sequence
     */
    packet_id: PacketIdAmino;
}
export interface ForwardRelayerAddressAminoMsg {
    type: "cosmos-sdk/ForwardRelayerAddress";
    value: ForwardRelayerAddressAmino;
}
/**
 * GenesisState defines the ICS29 fee middleware genesis state
 * @name GenesisState
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.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;
};
/**
 * FeeEnabledChannel contains the PortID & ChannelID for a fee enabled channel
 * @name FeeEnabledChannel
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.FeeEnabledChannel
 */
export declare const FeeEnabledChannel: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is FeeEnabledChannel;
    isAmino(o: any): o is FeeEnabledChannelAmino;
    encode(message: FeeEnabledChannel, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): FeeEnabledChannel;
    fromPartial(object: DeepPartial<FeeEnabledChannel>): FeeEnabledChannel;
    fromAmino(object: FeeEnabledChannelAmino): FeeEnabledChannel;
    toAmino(message: FeeEnabledChannel): FeeEnabledChannelAmino;
    fromAminoMsg(object: FeeEnabledChannelAminoMsg): FeeEnabledChannel;
    toAminoMsg(message: FeeEnabledChannel): FeeEnabledChannelAminoMsg;
    fromProtoMsg(message: FeeEnabledChannelProtoMsg): FeeEnabledChannel;
    toProto(message: FeeEnabledChannel): Uint8Array;
    toProtoMsg(message: FeeEnabledChannel): FeeEnabledChannelProtoMsg;
    registerTypeUrl(): void;
};
/**
 * RegisteredPayee contains the relayer address and payee address for a specific channel
 * @name RegisteredPayee
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.RegisteredPayee
 */
export declare const RegisteredPayee: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is RegisteredPayee;
    isAmino(o: any): o is RegisteredPayeeAmino;
    encode(message: RegisteredPayee, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): RegisteredPayee;
    fromPartial(object: DeepPartial<RegisteredPayee>): RegisteredPayee;
    fromAmino(object: RegisteredPayeeAmino): RegisteredPayee;
    toAmino(message: RegisteredPayee): RegisteredPayeeAmino;
    fromAminoMsg(object: RegisteredPayeeAminoMsg): RegisteredPayee;
    toAminoMsg(message: RegisteredPayee): RegisteredPayeeAminoMsg;
    fromProtoMsg(message: RegisteredPayeeProtoMsg): RegisteredPayee;
    toProto(message: RegisteredPayee): Uint8Array;
    toProtoMsg(message: RegisteredPayee): RegisteredPayeeProtoMsg;
    registerTypeUrl(): void;
};
/**
 * RegisteredCounterpartyPayee contains the relayer address and counterparty payee address for a specific channel (used
 * for recv fee distribution)
 * @name RegisteredCounterpartyPayee
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.RegisteredCounterpartyPayee
 */
export declare const RegisteredCounterpartyPayee: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is RegisteredCounterpartyPayee;
    isAmino(o: any): o is RegisteredCounterpartyPayeeAmino;
    encode(message: RegisteredCounterpartyPayee, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): RegisteredCounterpartyPayee;
    fromPartial(object: DeepPartial<RegisteredCounterpartyPayee>): RegisteredCounterpartyPayee;
    fromAmino(object: RegisteredCounterpartyPayeeAmino): RegisteredCounterpartyPayee;
    toAmino(message: RegisteredCounterpartyPayee): RegisteredCounterpartyPayeeAmino;
    fromAminoMsg(object: RegisteredCounterpartyPayeeAminoMsg): RegisteredCounterpartyPayee;
    toAminoMsg(message: RegisteredCounterpartyPayee): RegisteredCounterpartyPayeeAminoMsg;
    fromProtoMsg(message: RegisteredCounterpartyPayeeProtoMsg): RegisteredCounterpartyPayee;
    toProto(message: RegisteredCounterpartyPayee): Uint8Array;
    toProtoMsg(message: RegisteredCounterpartyPayee): RegisteredCounterpartyPayeeProtoMsg;
    registerTypeUrl(): void;
};
/**
 * ForwardRelayerAddress contains the forward relayer address and PacketId used for async acknowledgements
 * @name ForwardRelayerAddress
 * @package ibc.applications.fee.v1
 * @see proto type: ibc.applications.fee.v1.ForwardRelayerAddress
 */
export declare const ForwardRelayerAddress: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ForwardRelayerAddress;
    isAmino(o: any): o is ForwardRelayerAddressAmino;
    encode(message: ForwardRelayerAddress, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ForwardRelayerAddress;
    fromPartial(object: DeepPartial<ForwardRelayerAddress>): ForwardRelayerAddress;
    fromAmino(object: ForwardRelayerAddressAmino): ForwardRelayerAddress;
    toAmino(message: ForwardRelayerAddress): ForwardRelayerAddressAmino;
    fromAminoMsg(object: ForwardRelayerAddressAminoMsg): ForwardRelayerAddress;
    toAminoMsg(message: ForwardRelayerAddress): ForwardRelayerAddressAminoMsg;
    fromProtoMsg(message: ForwardRelayerAddressProtoMsg): ForwardRelayerAddress;
    toProto(message: ForwardRelayerAddress): Uint8Array;
    toProtoMsg(message: ForwardRelayerAddress): ForwardRelayerAddressProtoMsg;
    registerTypeUrl(): void;
};
