<?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\Enum\Core\ContactPointTypeEnum;
use App\Enum\Core\EmailSendingTypeEnum;
use App\Service\Mailer\Email;

interface AbstractBuilderInterface
{
    /**
     * @param mixed[] $context
     */
    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, EmailSendingTypeEnum $sendType, ?ContactPointTypeEnum $contactPointType = null): void;
}
