# 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 .sub_page_simple_info_v2 import SubPageSimpleInfoV2


class PagePermissionV2(object):
    _types = {
        "role_api_name": str,
        "page_api_name": str,
        "sub_tab_pages": List[str],
        "page_name": Dict[str, str],
        "sub_tab_page_display_infos": List[SubPageSimpleInfoV2],
    }

    def __init__(self, d=None):
        self.role_api_name: Optional[str] = None
        self.page_api_name: Optional[str] = None
        self.sub_tab_pages: Optional[List[str]] = None
        self.page_name: Optional[Dict[str, str]] = None
        self.sub_tab_page_display_infos: Optional[List[SubPageSimpleInfoV2]] = None
        init(self, d, self._types)

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


class PagePermissionV2Builder(object):
    def __init__(self) -> None:
        self._page_permission_v2 = PagePermissionV2()

    def role_api_name(self, role_api_name: str) -> "PagePermissionV2Builder":
        self._page_permission_v2.role_api_name = role_api_name
        return self

    def page_api_name(self, page_api_name: str) -> "PagePermissionV2Builder":
        self._page_permission_v2.page_api_name = page_api_name
        return self

    def sub_tab_pages(self, sub_tab_pages: List[str]) -> "PagePermissionV2Builder":
        self._page_permission_v2.sub_tab_pages = sub_tab_pages
        return self

    def page_name(self, page_name: Dict[str, str]) -> "PagePermissionV2Builder":
        self._page_permission_v2.page_name = page_name
        return self

    def sub_tab_page_display_infos(self,
                                   sub_tab_page_display_infos: List[SubPageSimpleInfoV2]) -> "PagePermissionV2Builder":
        self._page_permission_v2.sub_tab_page_display_infos = sub_tab_page_display_infos
        return self

    def build(self) -> "PagePermissionV2":
        return self._page_permission_v2
