<?php

declare(strict_types=1);

namespace Xentral\Modules\SystemMailClient;

use Xentral\Components\MailClient\Client\MailClientInterface;
use Xentral\Modules\SystemMailer\Data\EmailBackupAccount;

interface MailClientProviderInterface
{
    /**
     * @param int $userId
     *
     * @return MailClientInterface
     */
    public function createMailClientByUserId(int $userId): MailClientInterface;

    /**
     * @param int $addressId
     *
     * @return MailClientInterface
     */
    public function createMailClientByAddressId(int $addressId): MailClientInterface;

    /**
     * @param string $emailAddress
     *
     * @return MailClientInterface
     */
    public function createMailClientByEmail(string $emailAddress): MailClientInterface;

    /**
     * @param EmailBackupAccount $account
     *
     * @return MailClientInterface
     */
    public function createMailClientFromAccount(EmailBackupAccount $account): MailClientInterface;
}