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

from __future__ import annotations
from .utils.json_map import JsonMap
from .base import BaseModel
from .identifier_value import IdentifierValue, IdentifierValueGuard
from .team_of_contract import TeamOfContract
from .client_of_contract_legal_entity_5 import ClientOfContractLegalEntity5


@JsonMap({"id_": "id"})
class ClientOfContract(BaseModel):
    """ClientOfContract

    :param id_: id_, defaults to None
    :type id_: IdentifierValue, optional
    :param full_name: full_name, defaults to None
    :type full_name: str, optional
    :param email: User's email address., defaults to None
    :type email: str, optional
    :param team: team
    :type team: TeamOfContract
    :param legal_entity: legal_entity
    :type legal_entity: ClientOfContractLegalEntity5
    """

    def __init__(
        self,
        team: TeamOfContract,
        legal_entity: ClientOfContractLegalEntity5,
        id_: IdentifierValue = None,
        full_name: str = None,
        email: str = None,
    ):
        if id_ is not None:
            self.id_ = IdentifierValueGuard.return_one_of(id_)
        if full_name is not None:
            self.full_name = full_name
        if email is not None:
            self.email = email
        self.team = self._define_object(team, TeamOfContract)
        self.legal_entity = self._define_object(
            legal_entity, ClientOfContractLegalEntity5
        )
