# 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 UserShiftChange(object):
    _types = {
        "task_id": str,
        "change_source": str,
        "change_reason": str,
        "change_time": str,
        "operator_id": str,
        "change_detail": str,
    }

    def __init__(self, d=None):
        self.task_id: Optional[str] = None
        self.change_source: Optional[str] = None
        self.change_reason: Optional[str] = None
        self.change_time: Optional[str] = None
        self.operator_id: Optional[str] = None
        self.change_detail: Optional[str] = None
        init(self, d, self._types)

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


class UserShiftChangeBuilder(object):
    def __init__(self) -> None:
        self._user_shift_change = UserShiftChange()

    def task_id(self, task_id: str) -> "UserShiftChangeBuilder":
        self._user_shift_change.task_id = task_id
        return self

    def change_source(self, change_source: str) -> "UserShiftChangeBuilder":
        self._user_shift_change.change_source = change_source
        return self

    def change_reason(self, change_reason: str) -> "UserShiftChangeBuilder":
        self._user_shift_change.change_reason = change_reason
        return self

    def change_time(self, change_time: str) -> "UserShiftChangeBuilder":
        self._user_shift_change.change_time = change_time
        return self

    def operator_id(self, operator_id: str) -> "UserShiftChangeBuilder":
        self._user_shift_change.operator_id = operator_id
        return self

    def change_detail(self, change_detail: str) -> "UserShiftChangeBuilder":
        self._user_shift_change.change_detail = change_detail
        return self

    def build(self) -> "UserShiftChange":
        return self._user_shift_change
