--- /dev/null
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __WORKER_H_
+#define __WORKER_H_
+
+#include "task.h"
+
+/**
+ * @brief Worker structure.
+ */
+typedef struct worker worker_t;
+
+/**
+ * @brief Worker mode enumeration.
+ */
+typedef enum worker_mode
+{
+ /**
+ * @brief In this mode worker busy to idle proportion is low.
+ */
+ MODE_LOW,
+
+ /**
+ * @brief In this mode worker busy to idle proportion is balanced.
+ */
+ MODE_MEDIUM,
+
+ /**
+ * @brief In this mode worker busy to idle proportion is high.
+ */
+ MODE_HIGH
+} worker_mode_e;
+
+/**
+ * @brief Creates worker.
+ */
+worker_t *worker_create();
+
+/**
+ * @brief Destroys worker.
+ */
+void worker_destroy();
+
+/**
+ * @brief Sets maximum number of threads that worker can use.
+ * @param[in] worker Worker reference.
+ * @param[in] max_threads Maximum number of threads that worker can use.
+ */
+void worker_set_max_num_of_threads(worker_t *worker, int max_threads);
+
+/**
+ * @brief Adds new task to task queue.
+ * @param[in] worker Worker reference.
+ * @param[in] task Task to do.
+ */
+int worker_enqueue_task(worker_t *worker, task_t task);
+
+/**
+ * @brief Sets worker mode.
+ * @param[in] worker Worker reference.
+ */
+void worker_set_mode(worker_t *worker, worker_mode_e mode);
+
+/**
+ * @brief Gets worker mode.
+ * @param[in] worker Worker reference.
+ */
+worker_mode_e worker_get_mode(worker_t *worker);
+
+#endif
\ No newline at end of file