<?php

namespace AutoAdmin\Bundle\BrickBuilder\Model;


use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Class AbstractBaseBrick
 *
 * @package AutoAdmin\Bundle\BrickBuilder\Block
 */
#[ORM\MappedSuperclass]
interface BrickInterface
{
    public function getId(): ?int;

    public function setId(?int $id): BrickInterface;

    public function getType(): string;

    public function setType(string $type): BrickInterface;

    public function isEnabled(): bool;

    public function setEnabled(bool $enabled): BrickInterface;

    public function getSettings(): ?array;

    public function setSettings(array $settings): BrickInterface;

    public function getSetting(string $name, $defaultValue = null);

    public function setSetting(string $name, $value = null);

    public function getParent(): ?BrickInterface;

    public function setParent(?BrickInterface $parent): ?BrickInterface;

    public function getChildren(): Collection;

    public function setChildren(Collection $children): BrickInterface;

    public function addChild(BrickInterface $brick): BrickInterface;

    public function removeChild(BrickInterface $brick): BrickInterface;

    public function getPosition(): ?int;

    public function setPosition(?int $position): BrickInterface;
}
