# 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 .application_offer_custom_value import ApplicationOfferCustomValue


class OfferSalaryInfoV2(object):
    _types = {
        "id": str,
        "salary_status": int,
        "probation_salary_percentage": str,
        "award_salary_multiple": str,
        "option_shares": str,
        "quarterly_bonus": str,
        "half_year_bonus": str,
        "total_annual_cash": str,
        "customize_info_list": List[ApplicationOfferCustomValue],
        "create_time": str,
    }

    def __init__(self, d=None):
        self.id: Optional[str] = None
        self.salary_status: Optional[int] = None
        self.probation_salary_percentage: Optional[str] = None
        self.award_salary_multiple: Optional[str] = None
        self.option_shares: Optional[str] = None
        self.quarterly_bonus: Optional[str] = None
        self.half_year_bonus: Optional[str] = None
        self.total_annual_cash: Optional[str] = None
        self.customize_info_list: Optional[List[ApplicationOfferCustomValue]] = None
        self.create_time: Optional[str] = None
        init(self, d, self._types)

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


class OfferSalaryInfoV2Builder(object):
    def __init__(self) -> None:
        self._offer_salary_info_v2 = OfferSalaryInfoV2()

    def id(self, id: str) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.id = id
        return self

    def salary_status(self, salary_status: int) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.salary_status = salary_status
        return self

    def probation_salary_percentage(self, probation_salary_percentage: str) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.probation_salary_percentage = probation_salary_percentage
        return self

    def award_salary_multiple(self, award_salary_multiple: str) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.award_salary_multiple = award_salary_multiple
        return self

    def option_shares(self, option_shares: str) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.option_shares = option_shares
        return self

    def quarterly_bonus(self, quarterly_bonus: str) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.quarterly_bonus = quarterly_bonus
        return self

    def half_year_bonus(self, half_year_bonus: str) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.half_year_bonus = half_year_bonus
        return self

    def total_annual_cash(self, total_annual_cash: str) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.total_annual_cash = total_annual_cash
        return self

    def customize_info_list(self, customize_info_list: List[ApplicationOfferCustomValue]) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.customize_info_list = customize_info_list
        return self

    def create_time(self, create_time: str) -> "OfferSalaryInfoV2Builder":
        self._offer_salary_info_v2.create_time = create_time
        return self

    def build(self) -> "OfferSalaryInfoV2":
        return self._offer_salary_info_v2
