# 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 ActionConfig(object):
    _types = {
        "action_type": str,
        "action_name": str,
        "is_need_reason": bool,
        "is_reason_required": bool,
        "is_need_attachment": bool,
    }

    def __init__(self, d=None):
        self.action_type: Optional[str] = None
        self.action_name: Optional[str] = None
        self.is_need_reason: Optional[bool] = None
        self.is_reason_required: Optional[bool] = None
        self.is_need_attachment: Optional[bool] = None
        init(self, d, self._types)

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


class ActionConfigBuilder(object):
    def __init__(self) -> None:
        self._action_config = ActionConfig()

    def action_type(self, action_type: str) -> "ActionConfigBuilder":
        self._action_config.action_type = action_type
        return self

    def action_name(self, action_name: str) -> "ActionConfigBuilder":
        self._action_config.action_name = action_name
        return self

    def is_need_reason(self, is_need_reason: bool) -> "ActionConfigBuilder":
        self._action_config.is_need_reason = is_need_reason
        return self

    def is_reason_required(self, is_reason_required: bool) -> "ActionConfigBuilder":
        self._action_config.is_reason_required = is_reason_required
        return self

    def is_need_attachment(self, is_need_attachment: bool) -> "ActionConfigBuilder":
        self._action_config.is_need_attachment = is_need_attachment
        return self

    def build(self) -> "ActionConfig":
        return self._action_config
