# 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 ResourceWaitlist(object):
    _types = {
        "resource_waitlist_id": str,
        "room_level_ids": List[str],
        "min_capacity": int,
        "max_capacity": int,
        "last_wait_time_type": str,
        "equipment_require_type": str,
        "building_zone_codes": List[str],
        "status": str,
    }

    def __init__(self, d=None):
        self.resource_waitlist_id: Optional[str] = None
        self.room_level_ids: Optional[List[str]] = None
        self.min_capacity: Optional[int] = None
        self.max_capacity: Optional[int] = None
        self.last_wait_time_type: Optional[str] = None
        self.equipment_require_type: Optional[str] = None
        self.building_zone_codes: Optional[List[str]] = None
        self.status: Optional[str] = None
        init(self, d, self._types)

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


class ResourceWaitlistBuilder(object):
    def __init__(self) -> None:
        self._resource_waitlist = ResourceWaitlist()

    def resource_waitlist_id(self, resource_waitlist_id: str) -> "ResourceWaitlistBuilder":
        self._resource_waitlist.resource_waitlist_id = resource_waitlist_id
        return self

    def room_level_ids(self, room_level_ids: List[str]) -> "ResourceWaitlistBuilder":
        self._resource_waitlist.room_level_ids = room_level_ids
        return self

    def min_capacity(self, min_capacity: int) -> "ResourceWaitlistBuilder":
        self._resource_waitlist.min_capacity = min_capacity
        return self

    def max_capacity(self, max_capacity: int) -> "ResourceWaitlistBuilder":
        self._resource_waitlist.max_capacity = max_capacity
        return self

    def last_wait_time_type(self, last_wait_time_type: str) -> "ResourceWaitlistBuilder":
        self._resource_waitlist.last_wait_time_type = last_wait_time_type
        return self

    def equipment_require_type(self, equipment_require_type: str) -> "ResourceWaitlistBuilder":
        self._resource_waitlist.equipment_require_type = equipment_require_type
        return self

    def building_zone_codes(self, building_zone_codes: List[str]) -> "ResourceWaitlistBuilder":
        self._resource_waitlist.building_zone_codes = building_zone_codes
        return self

    def status(self, status: str) -> "ResourceWaitlistBuilder":
        self._resource_waitlist.status = status
        return self

    def build(self) -> "ResourceWaitlist":
        return self._resource_waitlist
