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

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


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

    :param name: Legal costs., defaults to None
    :type name: str, optional
    :param description: Cover your legal defense costs., defaults to None
    :type description: str, optional
    """

    def __init__(self, name: str = None, description: str = None):
        if name is not None:
            self.name = name
        if description is not None:
            self.description = description


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

    :param name: Penalties., defaults to None
    :type name: str, optional
    :param description: Get indemnity against tax authority penalties, liabilities and fines., defaults to None
    :type description: str, optional
    """

    def __init__(self, name: str = None, description: str = None):
        if name is not None:
            self.name = name
        if description is not None:
            self.description = description


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

    :param name: Third-party liabilities., defaults to None
    :type name: str, optional
    :param description: Get indemnity against third parties up to $10k depending on the court's decision., defaults to None
    :type description: str, optional
    """

    def __init__(self, name: str = None, description: str = None):
        if name is not None:
            self.name = name
        if description is not None:
            self.description = description


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

    :param id_: Deel Premium plan id.
    :type id_: str
    :param calculated_premium: Cost for Deel Premium.
    :type calculated_premium: float
    :param misclassification_guarantee: misclassification_guarantee
    :type misclassification_guarantee: MisclassificationGuarantee
    :param penalties: penalties
    :type penalties: Penalties
    :param third_party_liabilities: third_party_liabilities
    :type third_party_liabilities: ThirdPartyLiabilities
    """

    def __init__(
        self,
        id_: str,
        calculated_premium: float,
        misclassification_guarantee: MisclassificationGuarantee,
        penalties: Penalties,
        third_party_liabilities: ThirdPartyLiabilities,
    ):
        self.id_ = id_
        self.calculated_premium = calculated_premium
        self.misclassification_guarantee = self._define_object(
            misclassification_guarantee, MisclassificationGuarantee
        )
        self.penalties = self._define_object(penalties, Penalties)
        self.third_party_liabilities = self._define_object(
            third_party_liabilities, ThirdPartyLiabilities
        )
