# 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 .objective_check_output import ObjectiveCheckOutput
from .subjective_check_output import SubjectiveCheckOutput


class MeetingAnalyzeOutput(object):
    _types = {
        "meeting_id": str,
        "check_status_code": int,
        "objective_check_output": ObjectiveCheckOutput,
        "subjective_check_output": SubjectiveCheckOutput,
    }

    def __init__(self, d=None):
        self.meeting_id: Optional[str] = None
        self.check_status_code: Optional[int] = None
        self.objective_check_output: Optional[ObjectiveCheckOutput] = None
        self.subjective_check_output: Optional[SubjectiveCheckOutput] = None
        init(self, d, self._types)

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


class MeetingAnalyzeOutputBuilder(object):
    def __init__(self) -> None:
        self._meeting_analyze_output = MeetingAnalyzeOutput()

    def meeting_id(self, meeting_id: str) -> "MeetingAnalyzeOutputBuilder":
        self._meeting_analyze_output.meeting_id = meeting_id
        return self

    def check_status_code(self, check_status_code: int) -> "MeetingAnalyzeOutputBuilder":
        self._meeting_analyze_output.check_status_code = check_status_code
        return self

    def objective_check_output(self, objective_check_output: ObjectiveCheckOutput) -> "MeetingAnalyzeOutputBuilder":
        self._meeting_analyze_output.objective_check_output = objective_check_output
        return self

    def subjective_check_output(self, subjective_check_output: SubjectiveCheckOutput) -> "MeetingAnalyzeOutputBuilder":
        self._meeting_analyze_output.subjective_check_output = subjective_check_output
        return self

    def build(self) -> "MeetingAnalyzeOutput":
        return self._meeting_analyze_output
