import { Address, Hash } from "../commonTypes";
import { ContractWrapperFactory } from "../contractWrapperFactory";
import { ArcTransactionDataResult, ArcTransactionProposalResult, ArcTransactionResult, IContractWrapperFactory } from "../iContractWrapperBase";
import { VotableProposal } from "../proposalService";
import { TxGeneratingFunctionOptions } from "../transactionService";
import { EntityFetcherFactory, EventFetcherFactory } from "../web3EventService";
import { NewProposalEventResult, OwnerVoteOptions, ProposalIdOption, ProposeOptions, VoteOptions, VoteWithSpecifiedAmountsOptions } from "./iIntVoteInterface";
import { BigNumber } from "bignumber.js";
import { IntVoteInterfaceWrapper } from "./intVoteInterface";
export declare class AbsoluteVoteWrapper extends IntVoteInterfaceWrapper {
    name: string;
    friendlyName: string;
    factory: IContractWrapperFactory<AbsoluteVoteWrapper>;
    /**
     * Events
     */
    AVVoteProposal: EventFetcherFactory<AVVoteProposalEventResult>;
    RefreshReputation: EventFetcherFactory<RefreshReputationEventResult>;
    /**
     * EntityFetcherFactory for votable proposals.
     * @param avatarAddress
     */
    readonly VotableAbsoluteVoteProposals: EntityFetcherFactory<VotableProposal, NewProposalEventResult>;
    getParametersHash(params: AbsoluteVoteParams): Promise<Hash>;
    setParameters(params: AbsoluteVoteParams & TxGeneratingFunctionOptions): Promise<ArcTransactionDataResult<Hash>>;
    getParameters(paramsHash: Hash): Promise<AbsoluteVoteParamsResult>;
    propose(options: ProposeOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionProposalResult>;
    vote(options: VoteOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    voteWithSpecifiedAmounts(options: VoteWithSpecifiedAmountsOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    execute(options: ProposalIdOption & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    cancelProposal(options: ProposalIdOption & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    ownerVote(options: OwnerVoteOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    cancelVote(options: ProposalIdOption & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    protected hydrated(): void;
}
export declare const AbsoluteVoteFactory: ContractWrapperFactory<AbsoluteVoteWrapper>;
export interface AbsoluteVoteParams {
    ownerVote?: boolean;
    reputation: string;
    votePerc?: number;
}
export interface AbsoluteVoteParamsResult {
    ownerVote: boolean;
    reputation: string;
    votePerc: number;
}
export interface AVVoteProposalEventResult {
    /**
     * indexed
     */
    _proposalId: Hash;
    _isOwnerVote: boolean;
}
export interface RefreshReputationEventResult {
    /**
     * indexed
     */
    _proposalId: Hash;
    /**
     * indexed
     */
    _avatar: Address;
    /**
     * indexed
     */
    _voter: Address;
    _reputation: BigNumber;
}
