# 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 UserSearchMeta(object):
    _types = {
        "is_registered": bool,
        "tenant_id": str,
        "mail_address": str,
        "chat_id": str,
        "enterprise_mail_address": str,
        "i18n_names": Dict[str, str],
        "is_cross_tenant": bool,
        "description": str,
    }

    def __init__(self, d=None):
        self.is_registered: Optional[bool] = None
        self.tenant_id: Optional[str] = None
        self.mail_address: Optional[str] = None
        self.chat_id: Optional[str] = None
        self.enterprise_mail_address: Optional[str] = None
        self.i18n_names: Optional[Dict[str, str]] = None
        self.is_cross_tenant: Optional[bool] = None
        self.description: Optional[str] = None
        init(self, d, self._types)

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


class UserSearchMetaBuilder(object):
    def __init__(self) -> None:
        self._user_search_meta = UserSearchMeta()

    def is_registered(self, is_registered: bool) -> "UserSearchMetaBuilder":
        self._user_search_meta.is_registered = is_registered
        return self

    def tenant_id(self, tenant_id: str) -> "UserSearchMetaBuilder":
        self._user_search_meta.tenant_id = tenant_id
        return self

    def mail_address(self, mail_address: str) -> "UserSearchMetaBuilder":
        self._user_search_meta.mail_address = mail_address
        return self

    def chat_id(self, chat_id: str) -> "UserSearchMetaBuilder":
        self._user_search_meta.chat_id = chat_id
        return self

    def enterprise_mail_address(self, enterprise_mail_address: str) -> "UserSearchMetaBuilder":
        self._user_search_meta.enterprise_mail_address = enterprise_mail_address
        return self

    def i18n_names(self, i18n_names: Dict[str, str]) -> "UserSearchMetaBuilder":
        self._user_search_meta.i18n_names = i18n_names
        return self

    def is_cross_tenant(self, is_cross_tenant: bool) -> "UserSearchMetaBuilder":
        self._user_search_meta.is_cross_tenant = is_cross_tenant
        return self

    def description(self, description: str) -> "UserSearchMetaBuilder":
        self._user_search_meta.description = description
        return self

    def build(self) -> "UserSearchMeta":
        return self._user_search_meta
