<?php


use limble\helpers\limble_task_instruction;
use limble\helpers\limble_tasks_pagination;

interface limble_endpoints_i
{

    /**
     * Get the tasks from the limble API
     * @param limble_tasks_pagination $pagination
     * @return array
     */
    public function listTasks(limble_tasks_pagination $pagination): array;

    /**
     * Get a specific task from the limble API
     * @param int $taskId
     * @return array
     */
    public function getTask(int $taskId): array;

    /**
     * Get the list of task instructions from the limble API
     * @param int $taskId
     * @return limble_task_instruction[]
     * @see limble_task_instruction
     */
    public function getTaskInstructions(int $taskId): array;


    /**
     * Get the auth header for the API
     * @return string
     * @throws Exception If the client_id is not set
     * @throws Exception If the client_secret is not set
     */
    public function getAuthHeader(): string;
}