# This file was generated by liblab | https://liblab.com/

from enum import Enum
from .utils.json_map import JsonMap
from .base import BaseModel


class AgreementReflectsRelation(Enum):
    """An enumeration representing different categories.

    :cvar TRUE: "true"
    :vartype TRUE: str
    :cvar FALSE: "false"
    :vartype FALSE: str
    """

    TRUE = "true"
    FALSE = "false"

    def list():
        """Lists all category values.

        :return: A list of all category values.
        :rtype: list
        """
        return list(
            map(lambda x: x.value, AgreementReflectsRelation._member_map_.values())
        )


class ContractorCharacteristics(Enum):
    """An enumeration representing different categories.

    :cvar TRUE: "true"
    :vartype TRUE: str
    :cvar FALSE: "false"
    :vartype FALSE: str
    """

    TRUE = "true"
    FALSE = "false"

    def list():
        """Lists all category values.

        :return: A list of all category values.
        :rtype: list
        """
        return list(
            map(lambda x: x.value, ContractorCharacteristics._member_map_.values())
        )


@JsonMap({})
class PremiumToAdd(BaseModel):
    """PremiumToAdd

    :param agreement_reflects_relation: Is the Contractor Agreement selected on the Deel Platform perfectly reflecting your organizations relation and actual working practices with the contractor?
    :type agreement_reflects_relation: AgreementReflectsRelation
    :param contractor_characteristics: Workers doing certain jobs may be considered to be employees by law, even if they would otherwise be considered independent contractors under common law. Is the work of this worker characterized as: Apprentice, Trainee, Labourer, Driver, Medical worker, Legal worker, Construction worker or someone working in the fields of Finance/Investment?
    :type contractor_characteristics: ContractorCharacteristics
    """

    def __init__(
        self,
        agreement_reflects_relation: AgreementReflectsRelation,
        contractor_characteristics: ContractorCharacteristics,
    ):
        self.agreement_reflects_relation = self._enum_matching(
            agreement_reflects_relation,
            AgreementReflectsRelation.list(),
            "agreement_reflects_relation",
        )
        self.contractor_characteristics = self._enum_matching(
            contractor_characteristics,
            ContractorCharacteristics.list(),
            "contractor_characteristics",
        )
