import BigNumber from "bignumber.js";
import { Address } from "../commonTypes";
import { ContractWrapperFactory } from "../contractWrapperFactory";
import { ArcTransactionResult, IContractWrapperFactory } from "../iContractWrapperBase";
import { SchemeWrapperBase } from "../schemeWrapperBase";
import { TxGeneratingFunctionOptions } from "../transactionService";
import { EventFetcherFactory } from "../web3EventService";
export declare class FixedReputationAllocationWrapper extends SchemeWrapperBase {
    name: string;
    friendlyName: string;
    factory: IContractWrapperFactory<FixedReputationAllocationWrapper>;
    Redeem: EventFetcherFactory<FixedReputationAllocationRedeemEventResult>;
    BeneficiaryAddressAdded: EventFetcherFactory<BeneficiaryAddressAddedEventResult>;
    initialize(options: FixedReputationAllocationInitializeOptions): Promise<ArcTransactionResult>;
    redeem(options: FixedReputationAllocationRedeemOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    addBeneficiary(options: AddBeneficiaryOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    addBeneficiaries(options: AddBeneficiariesOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    setEnabled(options?: TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    /**
     * Get a promise of the first date/time when anything can be redeemed
     */
    getRedeemEnableTime(): Promise<Date>;
    /**
     * Get a promise of the total reputation potentially redeemable
     */
    getReputationReward(): Promise<BigNumber>;
    getIsEnable(): Promise<boolean>;
    getNumberOfBeneficiaries(): Promise<number>;
    /**
     * Get a promise of reputation rewardable per beneficiary
     */
    getBeneficiaryReward(): Promise<BigNumber>;
    getAvatar(): Promise<Address>;
    /**
     * Get a promise of boolean indicating whether the given beneficiary has been added.
     *
     * @param beneficiaryAddress
     */
    getBeneficiaryAdded(beneficiaryAddress: Address): Promise<boolean>;
    protected hydrated(): void;
    private validateEnabled;
}
export declare class FixedReputationAllocationType extends ContractWrapperFactory<FixedReputationAllocationWrapper> {
    deployed(): Promise<FixedReputationAllocationWrapper>;
}
export declare const FixedReputationAllocationFactory: FixedReputationAllocationType;
export interface FixedReputationAllocationInitializeOptions {
    avatarAddress: Address;
    /**
     * Reputation cannot be redeemed until after this time, even if redeeming has been enabled.
     */
    redeemEnableTime: Date;
    reputationReward: BigNumber | string;
}
export interface FixedReputationAllocationRedeemOptions {
    beneficiaryAddress: Address;
}
export interface AddBeneficiaryOptions {
    beneficiaryAddress: Address;
}
export interface AddBeneficiariesOptions {
    beneficiaryAddresses: Array<Address>;
}
export interface BeneficiaryAddressAddedEventResult {
    /**
     * indexed
     */
    _beneficiary: Address;
}
export interface FixedReputationAllocationRedeemEventResult {
    _amount: BigNumber;
    /**
     * indexed
     */
    _beneficiary: Address;
}
