<?php

namespace AutoAdmin\Bundle\Content\Entity\Interfaces;

use AutoAdmin\Bundle\Content\Entity\ContentReference;
use AutoAdmin\Bundle\Menu\Entity\MenuItem;
use Doctrine\Common\Collections\Collection;

interface MenuItemInterface
{
    public function getMenu();

    public function setMenu(mixed $menu): void;

    /**
     * @return Collection<MenuItem>
     */
    public function getChildren(): Collection;

    public function setChildren(Collection $children): void;

    public function getParent(): ?MenuItem;

    public function setParent(?MenuItem $parent): void;

    public function isDisplay(): bool;

    public function setDisplay(bool $display): void;

    public function getType(): string;

    public function setType(string $type): void;

    public function getUri(): ?string;

    public function setUri(?string $uri): void;

    public function getWrapperAttributes(): ?array;

    public function setWrapperAttributes(?array $wrapperAttributes): void;

    public function getLinkAttributes(): ?array;

    public function setLinkAttributes(?array $linkAttributes): void;

    public function getChildrenAttributes(): ?array;

    public function setChildrenAttributes(?array $childrenAttributes): void;

    public function getContentReference(): ?ContentReference;

    public function setContentReference(?ContentReference $contentReference): void;

    public function addChild(MenuItem $child): self;

    public function removeChild(MenuItem $child): self;
}
