export declare type fnVoid = () => void;
export declare type Hash = string;
export declare type Address = string;
export declare enum BinaryVoteResult {
    Abstain = 0,
    Yes = 1,
    No = 2,
}
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 class DefaultSchemePermissions {
    static NoPermissions: SchemePermissions;
    static MinimumPermissions: SchemePermissions;
    static AllPermissions: SchemePermissions;
    static ContributionReward: SchemePermissions;
    static GenesisProtocol: SchemePermissions;
    static GlobalConstraintRegistrar: SchemePermissions;
    /**
     * Has all permissions so that it can register/unregister all schemes
     */
    static SchemeRegistrar: SchemePermissions;
    static UpgradeScheme: SchemePermissions;
    static VestingScheme: SchemePermissions;
    static VoteInOrganizationScheme: SchemePermissions;
}
export declare namespace SchemePermissions {
    function toString(perms: SchemePermissions): string;
    function fromString(perms: string): SchemePermissions;
}
export interface HasContract {
    contract: any;
}
export interface TruffleContract {
    /**
     * Migrate a new instance of the contract.  Returns promise of being
     * migrated.
     * Note that the so-called promise returned by Truffle only supplies a 'then'
     * function,  You have to call 'then' to get the real promise.
     */
    new: (...rest: Array<any>) => Promise<any>;
    /**
     * Returns a promise of an existing instance of the contract.
     * Note that the so-called promise returned by Truffle only supplies a 'then'
     * function,  You have to call 'then' to get the real promise.
     */
    at: (address: string) => Promise<any>;
    /**
     * Returns a promise of the deployed instance of the contract.
     * Note that the so-called promise returned by Truffle only supplies a 'then'
     * function,  You have to call 'then' to get the real promise.
     */
    deployed: () => Promise<any>;
}
