from argenta.response.status import Status
from argenta.command.flags import (
    ValidInputFlags,
    UndefinedInputFlags,
    InvalidValueInputFlags,
)


class Response:
    __slots__ = ("status", "valid_flags", "undefined_flags", "invalid_value_flags")

    def __init__(
        self,
        status: Status = None,
        valid_flags: ValidInputFlags = ValidInputFlags(),
        undefined_flags: UndefinedInputFlags = UndefinedInputFlags(),
        invalid_value_flags: InvalidValueInputFlags = InvalidValueInputFlags(),
    ):
        """
        Public. The entity of the user input sent to the handler
        :param status: the status of the response
        :param valid_flags: valid input flags
        :param undefined_flags: undefined input flags
        :param invalid_value_flags: input flags with invalid values
        """
        self.status = status
        self.valid_flags = valid_flags
        self.undefined_flags = undefined_flags
        self.invalid_value_flags = invalid_value_flags
