<?php
/**
 * @copyright (c) Kufer Software GmbH, Oderstraße 7, D-84453 Mühldorf
 */

namespace Kufer\Mail\Sender\Settings\Sender\Person;

use Kufer\Mail\Address\IEMailAddress;
use Kufer\Mail\Sender\Settings\Sender\Einrichtung\IEMailEinrichtungSenderSettings;


interface IEMailTransformSender
{
  public function getSenderForTeilnehmerToEinrichtung(
    \Teilnehmer $tn,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForTeilnehmerToDozent(
    \Teilnehmer $tn,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForTeilnehmerToMitarbeiter(
    \Teilnehmer $tn,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForDozentToEinrichtung(
    \Dozent $doz,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForDozentToTeilnehmer(
    \Dozent $doz,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForDozentToMitarbeiter(
    \Dozent $doz,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForAdresseToEinrichtung(
    \Adresse $adresse,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForMitarbeiterToEinrichtung(
    \BASysBenutzer $mitarbeiter,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForMitarbeiterToDozent(
    \BASysBenutzer $mitarbeiter,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForMitarbeiterToTeilnehmer(
    \BASysBenutzer $mitarbeiter,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForToolsUserToEinrichtung(
    \Benutzer $user,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getSenderForPerson(
    \Personn $person,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForTeilnehmerToEinrichtung(
    \Teilnehmer $tn,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForTeilnehmerToDozent(
    \Teilnehmer $tn,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForTeilnehmerToMitarbeiter(
    \Teilnehmer $tn,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForDozentToEinrichtung(
    \Dozent $doz,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForDozentToTeilnehmer(
    \Dozent $doz,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForDozentToMitarbeiter(
    \Dozent $doz,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForAdresseToEinrichtung(
    \Adresse $adresse,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForMitarbeiterToEinrichtung(
    \BASysBenutzer $mitarbeiter,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForMitarbeiterToDozent(
    \BASysBenutzer $mitarbeiter,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForMitarbeiterToTeilnehmer(
    \BASysBenutzer $mitarbeiter,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForToolsUserToEinrichtung(
    \Benutzer $user,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;

  public function getReplyToForPerson(
    \Personn $personn,
    IEMailEinrichtungSenderSettings $senderSettings
  ): IEMailAddress;
}