+#define GNUNET_ARM_VERSION 0x00000003
+
+
+/**
+ * Statuses of the requests that client can send to ARM.
+ */
+enum GNUNET_ARM_RequestStatus
+{
+ /**
+ * Message was sent successfully.
+ */
+ GNUNET_ARM_REQUEST_SENT_OK = 0,
+
+ /**
+ * We disconnected from ARM, and request was not sent.
+ */
+ GNUNET_ARM_REQUEST_DISCONNECTED = 2
+
+};
+
+
+/**
+ * Statuses of services.
+ */
+enum GNUNET_ARM_ServiceStatus
+{
+ /**
+ * Dummy message.
+ */
+ GNUNET_ARM_SERVICE_MONITORING_STARTED = 0,
+
+ /**
+ * Service was stopped.
+ */
+ GNUNET_ARM_SERVICE_STOPPED = 1,
+
+ /**
+ * Service starting was initiated
+ */
+ GNUNET_ARM_SERVICE_STARTING = 2,
+
+ /**
+ * Service stopping was initiated
+ */
+ GNUNET_ARM_SERVICE_STOPPING = 3
+};
+
+
+/**
+ * Replies to ARM requests
+ */
+enum GNUNET_ARM_Result
+{
+ /**
+ * Service was stopped (never sent for ARM itself).
+ */
+ GNUNET_ARM_RESULT_STOPPED = 0,
+
+ /**
+ * ARM stopping was initiated (there's no "stopped" for ARM itself).
+ */
+ GNUNET_ARM_RESULT_STOPPING = 1,
+
+ /**
+ * Service starting was initiated
+ */
+ GNUNET_ARM_RESULT_STARTING = 2,
+
+ /**
+ * Asked to start it, but it's already starting.
+ */
+ GNUNET_ARM_RESULT_IS_STARTING_ALREADY = 3,
+
+ /**
+ * Asked to stop it, but it's already stopping.
+ */
+ GNUNET_ARM_RESULT_IS_STOPPING_ALREADY = 4,
+
+ /**
+ * Asked to start it, but it's already started.
+ */
+ GNUNET_ARM_RESULT_IS_STARTED_ALREADY = 5,
+
+ /**
+ * Asked to stop it, but it's already stopped.
+ */
+ GNUNET_ARM_RESULT_IS_STOPPED_ALREADY = 6,
+
+ /**
+ * Asked to start or stop a service, but it's not known.
+ */
+ GNUNET_ARM_RESULT_IS_NOT_KNOWN = 7,
+
+ /**
+ * Tried to start a service, but that failed for some reason.
+ */
+ GNUNET_ARM_RESULT_START_FAILED = 8,
+
+ /**
+ * Asked to start something, but ARM is shutting down and can't comply.
+ */
+ GNUNET_ARM_RESULT_IN_SHUTDOWN = 9
+};
+
+
+/**
+ * Handle for interacting with ARM.
+ */
+struct GNUNET_ARM_Handle;
+
+/**
+ * Handle for an ARM operation.
+ */
+struct GNUNET_ARM_Operation;