#ifndef __LIBVIRT_DOMAIN_H
#define __LIBVIRT_DOMAIN_H

#include <napi.h>

#include <libvirt/libvirt.h>
#include <libvirt/virterror.h>
#include <libvirt/libvirt-domain.h>

#include "hypervisor.h"

class Domain : public Napi::ObjectWrap<Domain>
{
public:

    static Napi::Object Init(Napi::Env env, Napi::Object exports);
    Domain(const Napi::CallbackInfo& info);

private:

    static Napi::FunctionReference constructor;

    virDomainPtr domainPtr;

    friend class DomainCreateXMLWorker;
    friend class DomainDefineXMLWorker;
    friend class DomainGetInfoWorker;
    friend class DomainGetNameWorker;
    friend class DomainLookupByIDWorker;

};

#endif /* __LIBVIRT_DOMAIN_H */
