<?php

namespace Lc\SovBundle\Model\Site;

use Lc\SovBundle\Model\File\FileInterface;
use Lc\SovBundle\Model\File\FileModel;
use Lc\SovBundle\Model\Newsletter\NewsletterInterface;
use Lc\SovBundle\Model\User\UserInterface;

interface NewsInterface
{
    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);

    public function getDate(): ?\DateTimeInterface;

    public function setDate(\DateTimeInterface $date): NewsInterface;

    public function getIsSent(): ?bool;

    public function setIsSent(?bool $isSent): NewsInterface;

    public function getImage(): ?FileInterface;

    public function setImage(?FileInterface $image): NewsInterface;

    public function getNewsletter(): ?NewsletterInterface;

    public function setNewsletter(?NewsletterInterface $newsletter): NewsInterface;

    public function getOpenGraphTitle(): ?string;

    public function setOpenGraphTitle(string $openGraphTitle): NewsInterface;

    public function getOpenGraphDescription(): ?string;

    public function setOpenGraphDescription(?string $openGraphDescription): NewsInterface;

    public function getOpenGraphImage(): ?FileInterface;

    public function setOpenGraphImage(?FileInterface $openGraphImage): NewsInterface;

    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);
}