# 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 DashboardShareConfig(object):
    _types = {
        "share_flag": bool,
        "share_scope_type": str,
        "share_token": str,
        "share_link": str,
        "show_source": bool,
        "source_link": str,
    }

    def __init__(self, d=None):
        self.share_flag: Optional[bool] = None
        self.share_scope_type: Optional[str] = None
        self.share_token: Optional[str] = None
        self.share_link: Optional[str] = None
        self.show_source: Optional[bool] = None
        self.source_link: Optional[str] = None
        init(self, d, self._types)

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


class DashboardShareConfigBuilder(object):
    def __init__(self) -> None:
        self._dashboard_share_config = DashboardShareConfig()

    def share_flag(self, share_flag: bool) -> "DashboardShareConfigBuilder":
        self._dashboard_share_config.share_flag = share_flag
        return self

    def share_scope_type(self, share_scope_type: str) -> "DashboardShareConfigBuilder":
        self._dashboard_share_config.share_scope_type = share_scope_type
        return self

    def share_token(self, share_token: str) -> "DashboardShareConfigBuilder":
        self._dashboard_share_config.share_token = share_token
        return self

    def share_link(self, share_link: str) -> "DashboardShareConfigBuilder":
        self._dashboard_share_config.share_link = share_link
        return self

    def show_source(self, show_source: bool) -> "DashboardShareConfigBuilder":
        self._dashboard_share_config.show_source = show_source
        return self

    def source_link(self, source_link: str) -> "DashboardShareConfigBuilder":
        self._dashboard_share_config.source_link = source_link
        return self

    def build(self) -> "DashboardShareConfig":
        return self._dashboard_share_config
