# 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 .dimension_entity import DimensionEntity
from .workforce_plan_eai_detail import WorkforcePlanEaiDetail
from .workforce_plan_multi_period_value import WorkforcePlanMultiPeriodValue


class WorkforcePlanDetailRow(object):
    _types = {
        "dimensions": List[DimensionEntity],
        "eai_details": List[WorkforcePlanEaiDetail],
        "plan_value": str,
        "multi_period_values": List[WorkforcePlanMultiPeriodValue],
    }

    def __init__(self, d=None):
        self.dimensions: Optional[List[DimensionEntity]] = None
        self.eai_details: Optional[List[WorkforcePlanEaiDetail]] = None
        self.plan_value: Optional[str] = None
        self.multi_period_values: Optional[List[WorkforcePlanMultiPeriodValue]] = None
        init(self, d, self._types)

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


class WorkforcePlanDetailRowBuilder(object):
    def __init__(self) -> None:
        self._workforce_plan_detail_row = WorkforcePlanDetailRow()

    def dimensions(self, dimensions: List[DimensionEntity]) -> "WorkforcePlanDetailRowBuilder":
        self._workforce_plan_detail_row.dimensions = dimensions
        return self

    def eai_details(self, eai_details: List[WorkforcePlanEaiDetail]) -> "WorkforcePlanDetailRowBuilder":
        self._workforce_plan_detail_row.eai_details = eai_details
        return self

    def plan_value(self, plan_value: str) -> "WorkforcePlanDetailRowBuilder":
        self._workforce_plan_detail_row.plan_value = plan_value
        return self

    def multi_period_values(self, multi_period_values: List[
        WorkforcePlanMultiPeriodValue]) -> "WorkforcePlanDetailRowBuilder":
        self._workforce_plan_detail_row.multi_period_values = multi_period_values
        return self

    def build(self) -> "WorkforcePlanDetailRow":
        return self._workforce_plan_detail_row
