# 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 .agency_basic_info import AgencyBasicInfo
from .report_custom_data import ReportCustomData
from .report_custom_data import ReportCustomData


class AgencyInfo(object):
    _types = {
        "basic_info": AgencyBasicInfo,
        "comment_info": List[ReportCustomData],
        "salary_info": List[ReportCustomData],
    }

    def __init__(self, d=None):
        self.basic_info: Optional[AgencyBasicInfo] = None
        self.comment_info: Optional[List[ReportCustomData]] = None
        self.salary_info: Optional[List[ReportCustomData]] = None
        init(self, d, self._types)

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


class AgencyInfoBuilder(object):
    def __init__(self) -> None:
        self._agency_info = AgencyInfo()

    def basic_info(self, basic_info: AgencyBasicInfo) -> "AgencyInfoBuilder":
        self._agency_info.basic_info = basic_info
        return self

    def comment_info(self, comment_info: List[ReportCustomData]) -> "AgencyInfoBuilder":
        self._agency_info.comment_info = comment_info
        return self

    def salary_info(self, salary_info: List[ReportCustomData]) -> "AgencyInfoBuilder":
        self._agency_info.salary_info = salary_info
        return self

    def build(self) -> "AgencyInfo":
        return self._agency_info
