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

from __future__ import annotations
from typing import List
from .utils.json_map import JsonMap
from .base import BaseModel
from .identifier_value import IdentifierValue, IdentifierValueGuard


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

    :param id_: id_, defaults to None
    :type id_: IdentifierValue, optional
    :param name: The name of the document., defaults to None
    :type name: str, optional
    :param description: A short description of the document., defaults to None
    :type description: str, optional
    :param has_template: Denotes if this document has a template available for download, defaults to None
    :type has_template: bool, optional
    :param fillable: Denotes if the document is available to fill out on Deel., defaults to None
    :type fillable: bool, optional
    :param is_optional: Denotes if the document is optional or required., defaults to None
    :type is_optional: bool, optional
    :param country: The country associated with this document., defaults to None
    :type country: str, optional
    :param uploaded_at: The timestamp when this document was uploaded / supplied to Deel., defaults to None
    :type uploaded_at: str, optional
    :param filenames: The list of filenames for the associated uploaded documents., defaults to None
    :type filenames: List[str], optional
    """

    def __init__(
        self,
        id_: IdentifierValue = None,
        name: str = None,
        description: str = None,
        has_template: bool = None,
        fillable: bool = None,
        is_optional: bool = None,
        country: str = None,
        uploaded_at: str = None,
        filenames: List[str] = None,
    ):
        if id_ is not None:
            self.id_ = IdentifierValueGuard.return_one_of(id_)
        if name is not None:
            self.name = name
        if description is not None:
            self.description = description
        if has_template is not None:
            self.has_template = has_template
        if fillable is not None:
            self.fillable = fillable
        if is_optional is not None:
            self.is_optional = is_optional
        if country is not None:
            self.country = country
        if uploaded_at is not None:
            self.uploaded_at = uploaded_at
        if filenames is not None:
            self.filenames = filenames


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

    :param documents: documents
    :type documents: List[Documents]
    """

    def __init__(self, documents: List[Documents]):
        self.documents = self._define_list(documents, Documents)


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

    :param data: data
    :type data: GetEmployeeComplianceDocumentsContainerData
    """

    def __init__(self, data: GetEmployeeComplianceDocumentsContainerData):
        self.data = self._define_object(
            data, GetEmployeeComplianceDocumentsContainerData
        )
