<?php

namespace Lc\SovBundle\Model\Newsletter;


use Doctrine\Common\Collections\Collection;
use Lc\SovBundle\Model\User\UserInterface;

interface NewsletterInterface
{
    public function getTitle(): ?string;

    public function setTitle(string $title);

    public function getDescription(): ?string;

    public function setDescription(?string $description);

    public function getCreatedBy(): ?UserInterface;

    public function setCreatedBy(?UserInterface $createdBy);

    public function getUpdatedBy(): ?UserInterface;

    public function setUpdatedBy(?UserInterface $updatedBy);

    public function getDevAlias(): ?string;

    public function setDevAlias(?string $devAlias);

    /**
     * @return Collection|UserInterface[]
     */
    public function getUsers(): Collection;

    public function addUser(UserInterface $user): NewsletterInterface;

    public function removeUser(UserInterface $user): NewsletterInterface;

    public function getIsMain(): ?bool;

    public function setIsMain(?bool $isMain): NewsletterInterface;

    public function getMetaTitle(): ?string;

    public function setMetaTitle(?string $metaTitle);

    public function getMetaDescription(): ?string;

    public function setMetaDescription(?string $metaDescription);

    public function setOldUrls($oldUrls);

    public function getOldUrls(): ?array;

    public function getSlug(): ?string;

    public function setSlug(?string $slug);

    /**
     * @return float
     */
    public function getPosition(): float;

    /**
     * @param float $position
     * @return $this
     */
    public function setPosition(float $position);

    public function clearPosition();

    public function getStatus(): ?float;

    public function setStatus(float $status);

    public function getCreatedAt(): ?\DateTimeInterface;

    public function setCreatedAt(\DateTimeInterface $createdAt);

    public function getUpdatedAt(): ?\DateTimeInterface;

    public function setUpdatedAt(\DateTimeInterface $updatedAt);
}