import { BigNumber } from "bignumber.js";
import { Address, BinaryVoteResult, Hash } from "../commonTypes";
import { ContractWrapperBase } from "../contractWrapperBase";
import { ContractWrapperFactory } from "../contractWrapperFactory";
import { ArcTransactionResult, IContractWrapperFactory } from "../iContractWrapperBase";
import { TxGeneratingFunctionOptions } from "../transactionService";
export declare class RedeemerWrapper extends ContractWrapperBase {
    name: string;
    friendlyName: string;
    factory: IContractWrapperFactory<RedeemerWrapper>;
    /**
     * Redeems rewards for a ContributionReward proposal in a single transaction.
     * Calls execute on the proposal if it is not yet executed.
     * Redeems rewardable reputation and stake from the GenesisProtocol.
     * Redeem rewardable contribution proposal rewards.
     * @param options
     */
    redeem(options: RedeemerOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    /**
     * Returns the amounts that would be redeemed if `Redeemer.redeem` were invoked right now.
     * @param options
     */
    redeemables(options: RedeemerOptions): Promise<RedeeemableResult>;
}
/**
 * defined just to add good type checking
 */
export declare class RedeemerFactoryType extends ContractWrapperFactory<RedeemerWrapper> {
    new(contributionRewardAddress: Address, genesisProtocolAddress: Address): Promise<RedeemerWrapper>;
}
export declare const RedeemerFactory: RedeemerFactoryType;
export interface RedeeemableResult {
    contributionRewardEther: BigNumber;
    contributionRewardExternalToken: BigNumber;
    contributionRewardNativeToken: BigNumber;
    contributionRewardReputation: BigNumber;
    daoStakingBountyReward: BigNumber;
    daoStakingBountyPotentialReward: BigNumber;
    proposalExecuted: boolean;
    proposalId: Hash;
    proposerReputationAmount: BigNumber;
    stakerReputationAmount: BigNumber;
    stakerTokenAmount: BigNumber;
    voterReputationAmount: BigNumber;
    voterTokenAmount: BigNumber;
    winningVote: BinaryVoteResult;
}
export interface RedeemerOptions {
    avatarAddress: Address;
    beneficiaryAddress: Address;
    proposalId: Hash;
}
