<?php
namespace App\Model\Interfaces;

use App\Model\Entities\Localization\Language;
use App\Model\Entities\Security\User;
use DateTime;


interface ITranslation
{
    const PENDING = 'pending';
    const BY_TRANSLATOR = 'by_translator';
    const TRANSLATED = 'translated';

    /**
     * @return mixed
     */
    public function getId();

    /**
     * @return mixed
     */
    public function getState() : string;

    /**
     * @param string $state
     */
    public function setState(string $state);

    /**
     * @return mixed
     */
    public function getIdentifier();

    /**
     * @param mixed $identifier
     */
    public function setIdentifier($identifier);

    /**
     * @return Language
     */
    public function getLanguage() : Language;

    /**
     * @param Language $language
     */
    public function setLanguage(Language $language);

    /**
     * @return mixed
     */
    public function getTranslation();

    /**
     * @param mixed $translation
     */
    public function setTranslation($translation);

    /**
     * @return DateTime
     */
    public function getEditedAt();

    /**
     * @return User|null
     */
    public function getEditedBy();

    /**
     * @param User $editedBy
     */
    public function setEditedBy(User $editedBy);
}