"""Use cases module."""

import abc

from .adapters import EmailSender


class UseCase(metaclass=abc.ABCMeta):

    @abc.abstractmethod
    def execute(self) -> None:
        ...


class SignupUseCase:

    def __init__(self, email_sender: EmailSender) -> None:
        self.email_sender = email_sender

    def execute(self, email: str) -> None:
        print(f'Sign up user {email}')
        self.email_sender.send(email, f'Welcome, {email}')