# Code generated by Lark OpenAPI.

from typing import Any, Optional, Union, Dict, List, Set, IO, Callable, Type
from lark_oapi.core.construct import init
from .employee_info import EmployeeInfo
from .collection_data import CollectionData


class CollectionEmployeeData(object):
    _types = {
        "row_id": str,
        "activity_id": str,
        "employee_info": EmployeeInfo,
        "collection_datas": List[CollectionData],
    }

    def __init__(self, d=None):
        self.row_id: Optional[str] = None
        self.activity_id: Optional[str] = None
        self.employee_info: Optional[EmployeeInfo] = None
        self.collection_datas: Optional[List[CollectionData]] = None
        init(self, d, self._types)

    @staticmethod
    def builder() -> "CollectionEmployeeDataBuilder":
        return CollectionEmployeeDataBuilder()


class CollectionEmployeeDataBuilder(object):
    def __init__(self) -> None:
        self._collection_employee_data = CollectionEmployeeData()

    def row_id(self, row_id: str) -> "CollectionEmployeeDataBuilder":
        self._collection_employee_data.row_id = row_id
        return self

    def activity_id(self, activity_id: str) -> "CollectionEmployeeDataBuilder":
        self._collection_employee_data.activity_id = activity_id
        return self

    def employee_info(self, employee_info: EmployeeInfo) -> "CollectionEmployeeDataBuilder":
        self._collection_employee_data.employee_info = employee_info
        return self

    def collection_datas(self, collection_datas: List[CollectionData]) -> "CollectionEmployeeDataBuilder":
        self._collection_employee_data.collection_datas = collection_datas
        return self

    def build(self) -> "CollectionEmployeeData":
        return self._collection_employee_data
