# Code generated by Lark OpenAPI.

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


class OpenapiOptions(object):
    _types = {
        "employee_id_type": str,
        "department_id_type": str,
        "job_title_id_type": str,
        "work_place_id_type": str,
        "org_dimension_id_type": str,
        "group_id_type": str,
        "group_set_id_type": str,
    }

    def __init__(self, d=None):
        self.employee_id_type: Optional[str] = None
        self.department_id_type: Optional[str] = None
        self.job_title_id_type: Optional[str] = None
        self.work_place_id_type: Optional[str] = None
        self.org_dimension_id_type: Optional[str] = None
        self.group_id_type: Optional[str] = None
        self.group_set_id_type: Optional[str] = None
        init(self, d, self._types)

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


class OpenapiOptionsBuilder(object):
    def __init__(self) -> None:
        self._openapi_options = OpenapiOptions()

    def employee_id_type(self, employee_id_type: str) -> "OpenapiOptionsBuilder":
        self._openapi_options.employee_id_type = employee_id_type
        return self

    def department_id_type(self, department_id_type: str) -> "OpenapiOptionsBuilder":
        self._openapi_options.department_id_type = department_id_type
        return self

    def job_title_id_type(self, job_title_id_type: str) -> "OpenapiOptionsBuilder":
        self._openapi_options.job_title_id_type = job_title_id_type
        return self

    def work_place_id_type(self, work_place_id_type: str) -> "OpenapiOptionsBuilder":
        self._openapi_options.work_place_id_type = work_place_id_type
        return self

    def org_dimension_id_type(self, org_dimension_id_type: str) -> "OpenapiOptionsBuilder":
        self._openapi_options.org_dimension_id_type = org_dimension_id_type
        return self

    def group_id_type(self, group_id_type: str) -> "OpenapiOptionsBuilder":
        self._openapi_options.group_id_type = group_id_type
        return self

    def group_set_id_type(self, group_set_id_type: str) -> "OpenapiOptionsBuilder":
        self._openapi_options.group_set_id_type = group_set_id_type
        return self

    def build(self) -> "OpenapiOptions":
        return self._openapi_options
