# 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 .rulemanager_time_code_display_name import RulemanagerTimeCodeDisplayName


class RulemanagerTimeCodeInfo(object):
    _types = {
        "time_input_way": int,
        "unit_type": int,
        "step": str,
        "default_duration": str,
        "display_names": List[RulemanagerTimeCodeDisplayName],
    }

    def __init__(self, d=None):
        self.time_input_way: Optional[int] = None
        self.unit_type: Optional[int] = None
        self.step: Optional[str] = None
        self.default_duration: Optional[str] = None
        self.display_names: Optional[List[RulemanagerTimeCodeDisplayName]] = None
        init(self, d, self._types)

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


class RulemanagerTimeCodeInfoBuilder(object):
    def __init__(self) -> None:
        self._rulemanager_time_code_info = RulemanagerTimeCodeInfo()

    def time_input_way(self, time_input_way: int) -> "RulemanagerTimeCodeInfoBuilder":
        self._rulemanager_time_code_info.time_input_way = time_input_way
        return self

    def unit_type(self, unit_type: int) -> "RulemanagerTimeCodeInfoBuilder":
        self._rulemanager_time_code_info.unit_type = unit_type
        return self

    def step(self, step: str) -> "RulemanagerTimeCodeInfoBuilder":
        self._rulemanager_time_code_info.step = step
        return self

    def default_duration(self, default_duration: str) -> "RulemanagerTimeCodeInfoBuilder":
        self._rulemanager_time_code_info.default_duration = default_duration
        return self

    def display_names(self, display_names: List[RulemanagerTimeCodeDisplayName]) -> "RulemanagerTimeCodeInfoBuilder":
        self._rulemanager_time_code_info.display_names = display_names
        return self

    def build(self) -> "RulemanagerTimeCodeInfo":
        return self._rulemanager_time_code_info
