# 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 CallbackAction(object):
    _types = {
        "value": Dict[str, str],
        "tag": str,
        "option": str,
        "options": List[str],
        "timezone": str,
        "input_value": str,
        "form_value": Dict[str, str],
        "name": str,
        "checked": bool,
    }

    def __init__(self, d=None):
        self.value: Optional[Dict[str, str]] = None
        self.tag: Optional[str] = None
        self.option: Optional[str] = None
        self.options: Optional[List[str]] = None
        self.timezone: Optional[str] = None
        self.input_value: Optional[str] = None
        self.form_value: Optional[Dict[str, str]] = None
        self.name: Optional[str] = None
        self.checked: Optional[bool] = None
        init(self, d, self._types)

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


class CallbackActionBuilder(object):
    def __init__(self) -> None:
        self._callback_action = CallbackAction()

    def value(self, value: Dict[str, str]) -> "CallbackActionBuilder":
        self._callback_action.value = value
        return self

    def tag(self, tag: str) -> "CallbackActionBuilder":
        self._callback_action.tag = tag
        return self

    def option(self, option: str) -> "CallbackActionBuilder":
        self._callback_action.option = option
        return self

    def options(self, options: List[str]) -> "CallbackActionBuilder":
        self._callback_action.options = options
        return self

    def timezone(self, timezone: str) -> "CallbackActionBuilder":
        self._callback_action.timezone = timezone
        return self

    def input_value(self, input_value: str) -> "CallbackActionBuilder":
        self._callback_action.input_value = input_value
        return self

    def form_value(self, form_value: Dict[str, str]) -> "CallbackActionBuilder":
        self._callback_action.form_value = form_value
        return self

    def name(self, name: str) -> "CallbackActionBuilder":
        self._callback_action.name = name
        return self

    def checked(self, checked: bool) -> "CallbackActionBuilder":
        self._callback_action.checked = checked
        return self

    def build(self) -> "CallbackAction":
        return self._callback_action
