<?php
declare(strict_types=1);

namespace App\Service\Mailer\Builder;

use App\Entity\Access\Access;
use App\Entity\Message\Email as EmailEntity;
use App\Entity\Organization\Organization;
use App\Service\Mailer\Email;

interface AbstractBuilderInterface {

    /**
     * @param string $template
     * @param mixed[] $context
     * @return string
     */
    public function render(string $template, array $context): string;

    public function buildEmailEntity(string $subject, Access $author, string $content): EmailEntity;

    public function addRecipient(Email $email, Access|Organization|string $target, string $sendType, string $contactPointType = null): void;
}