# 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 .field_permission_v2 import FieldPermissionV2


class FieldPermissionConfigV2(object):
    _types = {
        "field_config_mode": str,
        "custom_field_permissions": List[FieldPermissionV2],
    }

    def __init__(self, d=None):
        self.field_config_mode: Optional[str] = None
        self.custom_field_permissions: Optional[List[FieldPermissionV2]] = None
        init(self, d, self._types)

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


class FieldPermissionConfigV2Builder(object):
    def __init__(self) -> None:
        self._field_permission_config_v2 = FieldPermissionConfigV2()

    def field_config_mode(self, field_config_mode: str) -> "FieldPermissionConfigV2Builder":
        self._field_permission_config_v2.field_config_mode = field_config_mode
        return self

    def custom_field_permissions(self,
                                 custom_field_permissions: List[FieldPermissionV2]) -> "FieldPermissionConfigV2Builder":
        self._field_permission_config_v2.custom_field_permissions = custom_field_permissions
        return self

    def build(self) -> "FieldPermissionConfigV2":
        return self._field_permission_config_v2
