import { Address } from "./commonTypes";
import { ContractWrapperFactory } from "./contractWrapperFactory";
import { ProposalService } from "./proposalService";
import { USchemeWrapperBase } from "./uSchemeWrapperBase";
import { Web3EventService } from "./web3EventService";
import { IntVoteInterfaceWrapper } from "./wrappers/intVoteInterface";
/**
 * Methods for Arc universal schemes that can create proposals.  Note that a contract that
 * creates proposals doesn't necessary have to be a universal scheme, nor even a plain-old scheme.
 * But all of the Arc proposal-generating schemes currently are currently universal schemes, so
 * for the purposes of simplicity of organizating Arc.js and implementing these methods in one
 * place, we define this as a `USchemeWrapperBase`.
 */
export declare abstract class ProposalGeneratorBase extends USchemeWrapperBase {
    protected proposalService: ProposalService;
    protected votingMachineFactory: ContractWrapperFactory<IntVoteInterfaceWrapper>;
    constructor(solidityContract: any, web3EventService: Web3EventService);
    /**
     * Return the address of the voting machine for this scheme as registered with the given avatar.
     * @param avatarAddress
     */
    getVotingMachineAddress(avatarAddress: Address): Promise<Address>;
    /**
     * Return IntVoteInterfaceWrapper for this scheme as registered with the given avatar.
     * @param avatarAddress
     */
    getVotingMachine(avatarAddress: Address): Promise<IntVoteInterfaceWrapper>;
}
