<?php

namespace goals\interfaces;

use objects\department_lanes_o;
use objects\departments_o;

interface goals_criteria_departments_i
{
    /**
     * Set the departments to be included in the criteria
     * @param departments_o[] $departments The departments to be included in the criteria
     */
    public function set(array $departments): self;
    /**
     * Get the departments included in the criteria
     * @return departments_o[] The departments included in the criteria
     */
    public function list(): array;
    /**
     * Get the department IDs included in the criteria
     * @return int[] The department IDs included in the criteria
     */
    public function listIDs(): array;
    /**
     * Add department(s) to the criteria
     * @param departments_o|departments_o[] $departments The department(s) to add to the criteria
     * @return self
     */
    public function add(departments_o|array $departments): self;
    /**
     * Clear all departments from the criteria
     * @return self
     */
    public function clear(): self;
    /**
     * Remove department(s) from the criteria
     * @param departments_o|departments_o[] $departments The department(s) to remove from the criteria
     * @return self
     */
    public function remove(departments_o|array $departments): self;
}