import { ArcTransactionDataResult } from "./contractWrapperBase";
export declare type fnVoid = () => void;
export declare type Hash = string;
export declare type Address = string;
export interface VoteConfig {
    /**
     * optional address of agent casting the vote.
     */
    onBehalfOf?: Address;
    /**
     * unique hash of proposal index
     */
    proposalId: Hash;
    /**
     * the choice of vote. Can be 1 (YES) or 2 (NO).
     */
    vote: number;
}
export declare enum BinaryVoteResult {
    None = 0,
    Yes = 1,
    No = 2,
}
export interface GetDaoProposalsConfig {
    /**
     * The avatar under which the proposals were created
     */
    avatar: Address;
    /**
     * Optionally filter on the given proposalId
     */
    proposalId?: Hash;
}
export declare enum SchemePermissions {
    None = 0,
    /**
     * A scheme always automatically gets this bit when registered to a DAO
     */
    IsRegistered = 1,
    CanRegisterSchemes = 2,
    CanAddRemoveGlobalConstraints = 4,
    CanUpgradeController = 8,
    CanCallDelegateCall = 16,
    All = 31,
}
/**
 * These are the permissions that are the minimum that each scheme must have to
 * be able to perform its full range of functionality.
 *
 * Note that '1' is always assigned to a scheme by the Controller when the
 * scheme is registered with the controller.
 */
export declare enum DefaultSchemePermissions {
    NoPermissions = 0,
    MinimumPermissions = 1,
    AllPermissions = 31,
    ContributionReward = 1,
    GenesisProtocol = 1,
    GlobalConstraintRegistrar = 5,
    /**
     * Has all permissions so that it can register/unregister all schemes
     */
    SchemeRegistrar = 31,
    UpgradeScheme = 11,
    VestingScheme = 1,
    VoteInOrganizationScheme = 17,
}
export declare namespace SchemePermissions {
    function toString(perms: SchemePermissions | DefaultSchemePermissions): string;
    function fromString(perms: string): SchemePermissions;
}
export interface SchemeWrapper {
    setParameters(params: any): Promise<ArcTransactionDataResult<Hash>>;
    getSchemeParameters(avatarAddress: Address): Promise<any>;
    getDefaultPermissions(): SchemePermissions;
    getSchemePermissions(avatarAddress: Address): Promise<SchemePermissions>;
}
