import { ContractMetadata, ContractMetadataAmino } from "./rewards";
import { Coin, CoinAmino, DecCoin, DecCoinAmino } from "../../../cosmos/base/v1beta1/coin";
import { BinaryReader, BinaryWriter } from "../../../binary";
/**
 * ContractMetadataSetEvent is emitted when the contract metadata is created or
 * updated.
 */
export interface ContractMetadataSetEvent {
    /** contract_address defines the contract address. */
    contractAddress: string;
    /** metadata defines the new contract metadata state. */
    metadata: ContractMetadata;
}
export interface ContractMetadataSetEventProtoMsg {
    typeUrl: "/archway.rewards.v1.ContractMetadataSetEvent";
    value: Uint8Array;
}
/**
 * ContractMetadataSetEvent is emitted when the contract metadata is created or
 * updated.
 */
export interface ContractMetadataSetEventAmino {
    /** contract_address defines the contract address. */
    contract_address?: string;
    /** metadata defines the new contract metadata state. */
    metadata?: ContractMetadataAmino;
}
export interface ContractMetadataSetEventAminoMsg {
    type: "/archway.rewards.v1.ContractMetadataSetEvent";
    value: ContractMetadataSetEventAmino;
}
/**
 * ContractRewardCalculationEvent is emitted when the contract reward is
 * calculated.
 */
export interface ContractRewardCalculationEvent {
    /** contract_address defines the contract address. */
    contractAddress: string;
    /**
     * gas_consumed defines the total gas consumption by all WASM operations
     * within one transaction.
     */
    gasConsumed: bigint;
    /** inflation_rewards defines the inflation rewards portions of the rewards. */
    inflationRewards: Coin;
    /** fee_rebate_rewards defines the fee rebate rewards portions of the rewards. */
    feeRebateRewards: Coin[];
    /** metadata defines the contract metadata (if set). */
    metadata?: ContractMetadata;
}
export interface ContractRewardCalculationEventProtoMsg {
    typeUrl: "/archway.rewards.v1.ContractRewardCalculationEvent";
    value: Uint8Array;
}
/**
 * ContractRewardCalculationEvent is emitted when the contract reward is
 * calculated.
 */
export interface ContractRewardCalculationEventAmino {
    /** contract_address defines the contract address. */
    contract_address?: string;
    /**
     * gas_consumed defines the total gas consumption by all WASM operations
     * within one transaction.
     */
    gas_consumed?: string;
    /** inflation_rewards defines the inflation rewards portions of the rewards. */
    inflation_rewards?: CoinAmino;
    /** fee_rebate_rewards defines the fee rebate rewards portions of the rewards. */
    fee_rebate_rewards?: CoinAmino[];
    /** metadata defines the contract metadata (if set). */
    metadata?: ContractMetadataAmino;
}
export interface ContractRewardCalculationEventAminoMsg {
    type: "/archway.rewards.v1.ContractRewardCalculationEvent";
    value: ContractRewardCalculationEventAmino;
}
/**
 * RewardsWithdrawEvent is emitted when credited rewards for a specific
 * rewards_address are distributed. Event could be triggered by a transaction
 * (via CLI for example) or by a contract via WASM bindings.
 */
export interface RewardsWithdrawEvent {
    /** rewards_address defines the rewards address rewards are distributed to. */
    rewardAddress: string;
    /** rewards defines the total rewards being distributed. */
    rewards: Coin[];
}
export interface RewardsWithdrawEventProtoMsg {
    typeUrl: "/archway.rewards.v1.RewardsWithdrawEvent";
    value: Uint8Array;
}
/**
 * RewardsWithdrawEvent is emitted when credited rewards for a specific
 * rewards_address are distributed. Event could be triggered by a transaction
 * (via CLI for example) or by a contract via WASM bindings.
 */
export interface RewardsWithdrawEventAmino {
    /** rewards_address defines the rewards address rewards are distributed to. */
    reward_address?: string;
    /** rewards defines the total rewards being distributed. */
    rewards?: CoinAmino[];
}
export interface RewardsWithdrawEventAminoMsg {
    type: "/archway.rewards.v1.RewardsWithdrawEvent";
    value: RewardsWithdrawEventAmino;
}
/** MinConsensusFeeSetEvent is emitted when the minimum consensus fee is updated. */
export interface MinConsensusFeeSetEvent {
    /** fee defines the updated minimum gas unit price. */
    fee: DecCoin;
}
export interface MinConsensusFeeSetEventProtoMsg {
    typeUrl: "/archway.rewards.v1.MinConsensusFeeSetEvent";
    value: Uint8Array;
}
/** MinConsensusFeeSetEvent is emitted when the minimum consensus fee is updated. */
export interface MinConsensusFeeSetEventAmino {
    /** fee defines the updated minimum gas unit price. */
    fee?: DecCoinAmino;
}
export interface MinConsensusFeeSetEventAminoMsg {
    type: "/archway.rewards.v1.MinConsensusFeeSetEvent";
    value: MinConsensusFeeSetEventAmino;
}
/** ContractFlatFeeSetEvent is emitted when the contract flat fee is updated */
export interface ContractFlatFeeSetEvent {
    /**
     * contract_address defines the bech32 address of the contract for which the
     * flat fee is set
     */
    contractAddress: string;
    /**
     * flat_fee defines the amount that has been set as the minimum fee for the
     * contract
     */
    flatFee: Coin;
}
export interface ContractFlatFeeSetEventProtoMsg {
    typeUrl: "/archway.rewards.v1.ContractFlatFeeSetEvent";
    value: Uint8Array;
}
/** ContractFlatFeeSetEvent is emitted when the contract flat fee is updated */
export interface ContractFlatFeeSetEventAmino {
    /**
     * contract_address defines the bech32 address of the contract for which the
     * flat fee is set
     */
    contract_address?: string;
    /**
     * flat_fee defines the amount that has been set as the minimum fee for the
     * contract
     */
    flat_fee?: CoinAmino;
}
export interface ContractFlatFeeSetEventAminoMsg {
    type: "/archway.rewards.v1.ContractFlatFeeSetEvent";
    value: ContractFlatFeeSetEventAmino;
}
export declare const ContractMetadataSetEvent: {
    typeUrl: string;
    encode(message: ContractMetadataSetEvent, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ContractMetadataSetEvent;
    fromJSON(object: any): ContractMetadataSetEvent;
    toJSON(message: ContractMetadataSetEvent): unknown;
    fromPartial(object: Partial<ContractMetadataSetEvent>): ContractMetadataSetEvent;
    fromAmino(object: ContractMetadataSetEventAmino): ContractMetadataSetEvent;
    toAmino(message: ContractMetadataSetEvent): ContractMetadataSetEventAmino;
    fromAminoMsg(object: ContractMetadataSetEventAminoMsg): ContractMetadataSetEvent;
    fromProtoMsg(message: ContractMetadataSetEventProtoMsg): ContractMetadataSetEvent;
    toProto(message: ContractMetadataSetEvent): Uint8Array;
    toProtoMsg(message: ContractMetadataSetEvent): ContractMetadataSetEventProtoMsg;
};
export declare const ContractRewardCalculationEvent: {
    typeUrl: string;
    encode(message: ContractRewardCalculationEvent, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ContractRewardCalculationEvent;
    fromJSON(object: any): ContractRewardCalculationEvent;
    toJSON(message: ContractRewardCalculationEvent): unknown;
    fromPartial(object: Partial<ContractRewardCalculationEvent>): ContractRewardCalculationEvent;
    fromAmino(object: ContractRewardCalculationEventAmino): ContractRewardCalculationEvent;
    toAmino(message: ContractRewardCalculationEvent): ContractRewardCalculationEventAmino;
    fromAminoMsg(object: ContractRewardCalculationEventAminoMsg): ContractRewardCalculationEvent;
    fromProtoMsg(message: ContractRewardCalculationEventProtoMsg): ContractRewardCalculationEvent;
    toProto(message: ContractRewardCalculationEvent): Uint8Array;
    toProtoMsg(message: ContractRewardCalculationEvent): ContractRewardCalculationEventProtoMsg;
};
export declare const RewardsWithdrawEvent: {
    typeUrl: string;
    encode(message: RewardsWithdrawEvent, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): RewardsWithdrawEvent;
    fromJSON(object: any): RewardsWithdrawEvent;
    toJSON(message: RewardsWithdrawEvent): unknown;
    fromPartial(object: Partial<RewardsWithdrawEvent>): RewardsWithdrawEvent;
    fromAmino(object: RewardsWithdrawEventAmino): RewardsWithdrawEvent;
    toAmino(message: RewardsWithdrawEvent): RewardsWithdrawEventAmino;
    fromAminoMsg(object: RewardsWithdrawEventAminoMsg): RewardsWithdrawEvent;
    fromProtoMsg(message: RewardsWithdrawEventProtoMsg): RewardsWithdrawEvent;
    toProto(message: RewardsWithdrawEvent): Uint8Array;
    toProtoMsg(message: RewardsWithdrawEvent): RewardsWithdrawEventProtoMsg;
};
export declare const MinConsensusFeeSetEvent: {
    typeUrl: string;
    encode(message: MinConsensusFeeSetEvent, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): MinConsensusFeeSetEvent;
    fromJSON(object: any): MinConsensusFeeSetEvent;
    toJSON(message: MinConsensusFeeSetEvent): unknown;
    fromPartial(object: Partial<MinConsensusFeeSetEvent>): MinConsensusFeeSetEvent;
    fromAmino(object: MinConsensusFeeSetEventAmino): MinConsensusFeeSetEvent;
    toAmino(message: MinConsensusFeeSetEvent): MinConsensusFeeSetEventAmino;
    fromAminoMsg(object: MinConsensusFeeSetEventAminoMsg): MinConsensusFeeSetEvent;
    fromProtoMsg(message: MinConsensusFeeSetEventProtoMsg): MinConsensusFeeSetEvent;
    toProto(message: MinConsensusFeeSetEvent): Uint8Array;
    toProtoMsg(message: MinConsensusFeeSetEvent): MinConsensusFeeSetEventProtoMsg;
};
export declare const ContractFlatFeeSetEvent: {
    typeUrl: string;
    encode(message: ContractFlatFeeSetEvent, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ContractFlatFeeSetEvent;
    fromJSON(object: any): ContractFlatFeeSetEvent;
    toJSON(message: ContractFlatFeeSetEvent): unknown;
    fromPartial(object: Partial<ContractFlatFeeSetEvent>): ContractFlatFeeSetEvent;
    fromAmino(object: ContractFlatFeeSetEventAmino): ContractFlatFeeSetEvent;
    toAmino(message: ContractFlatFeeSetEvent): ContractFlatFeeSetEventAmino;
    fromAminoMsg(object: ContractFlatFeeSetEventAminoMsg): ContractFlatFeeSetEvent;
    fromProtoMsg(message: ContractFlatFeeSetEventProtoMsg): ContractFlatFeeSetEvent;
    toProto(message: ContractFlatFeeSetEvent): Uint8Array;
    toProtoMsg(message: ContractFlatFeeSetEvent): ContractFlatFeeSetEventProtoMsg;
};
