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 */
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 */
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 */
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 */
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 */
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 */
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)
 */
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)
 */
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 */
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 */
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;
}
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;
};
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;
};
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;
};
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;
};
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;
};
