# 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 .pair import Pair


class UatTask(object):
    _types = {
        "topic": int,
        "user_id": int,
        "title": str,
        "status": str,
        "instance_status": str,
        "definition_code": str,
        "initiator": int,
        "initiator_name": str,
        "task_id": int,
        "instance_code": str,
        "definition_group_id": int,
        "definition_group_name": str,
        "definition_name": str,
        "summaries": List[Pair],
        "instance_external_id": str,
        "task_external_id": str,
        "support_api_operate": bool,
        "link": str,
    }

    def __init__(self, d=None):
        self.topic: Optional[int] = None
        self.user_id: Optional[int] = None
        self.title: Optional[str] = None
        self.status: Optional[str] = None
        self.instance_status: Optional[str] = None
        self.definition_code: Optional[str] = None
        self.initiator: Optional[int] = None
        self.initiator_name: Optional[str] = None
        self.task_id: Optional[int] = None
        self.instance_code: Optional[str] = None
        self.definition_group_id: Optional[int] = None
        self.definition_group_name: Optional[str] = None
        self.definition_name: Optional[str] = None
        self.summaries: Optional[List[Pair]] = None
        self.instance_external_id: Optional[str] = None
        self.task_external_id: Optional[str] = None
        self.support_api_operate: Optional[bool] = None
        self.link: Optional[str] = None
        init(self, d, self._types)

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


class UatTaskBuilder(object):
    def __init__(self) -> None:
        self._uat_task = UatTask()

    def topic(self, topic: int) -> "UatTaskBuilder":
        self._uat_task.topic = topic
        return self

    def user_id(self, user_id: int) -> "UatTaskBuilder":
        self._uat_task.user_id = user_id
        return self

    def title(self, title: str) -> "UatTaskBuilder":
        self._uat_task.title = title
        return self

    def status(self, status: str) -> "UatTaskBuilder":
        self._uat_task.status = status
        return self

    def instance_status(self, instance_status: str) -> "UatTaskBuilder":
        self._uat_task.instance_status = instance_status
        return self

    def definition_code(self, definition_code: str) -> "UatTaskBuilder":
        self._uat_task.definition_code = definition_code
        return self

    def initiator(self, initiator: int) -> "UatTaskBuilder":
        self._uat_task.initiator = initiator
        return self

    def initiator_name(self, initiator_name: str) -> "UatTaskBuilder":
        self._uat_task.initiator_name = initiator_name
        return self

    def task_id(self, task_id: int) -> "UatTaskBuilder":
        self._uat_task.task_id = task_id
        return self

    def instance_code(self, instance_code: str) -> "UatTaskBuilder":
        self._uat_task.instance_code = instance_code
        return self

    def definition_group_id(self, definition_group_id: int) -> "UatTaskBuilder":
        self._uat_task.definition_group_id = definition_group_id
        return self

    def definition_group_name(self, definition_group_name: str) -> "UatTaskBuilder":
        self._uat_task.definition_group_name = definition_group_name
        return self

    def definition_name(self, definition_name: str) -> "UatTaskBuilder":
        self._uat_task.definition_name = definition_name
        return self

    def summaries(self, summaries: List[Pair]) -> "UatTaskBuilder":
        self._uat_task.summaries = summaries
        return self

    def instance_external_id(self, instance_external_id: str) -> "UatTaskBuilder":
        self._uat_task.instance_external_id = instance_external_id
        return self

    def task_external_id(self, task_external_id: str) -> "UatTaskBuilder":
        self._uat_task.task_external_id = task_external_id
        return self

    def support_api_operate(self, support_api_operate: bool) -> "UatTaskBuilder":
        self._uat_task.support_api_operate = support_api_operate
        return self

    def link(self, link: str) -> "UatTaskBuilder":
        self._uat_task.link = link
        return self

    def build(self) -> "UatTask":
        return self._uat_task
