# 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 BasicInfo(object):
    _types = {
        "log_type": str,
        "audit_scope": str,
        "env_type": str,
        "app_id": str,
        "module": str,
        "op_type": str,
        "app_name": Dict[str, str],
    }

    def __init__(self, d=None):
        self.log_type: Optional[str] = None
        self.audit_scope: Optional[str] = None
        self.env_type: Optional[str] = None
        self.app_id: Optional[str] = None
        self.module: Optional[str] = None
        self.op_type: Optional[str] = None
        self.app_name: Optional[Dict[str, str]] = None
        init(self, d, self._types)

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


class BasicInfoBuilder(object):
    def __init__(self) -> None:
        self._basic_info = BasicInfo()

    def log_type(self, log_type: str) -> "BasicInfoBuilder":
        self._basic_info.log_type = log_type
        return self

    def audit_scope(self, audit_scope: str) -> "BasicInfoBuilder":
        self._basic_info.audit_scope = audit_scope
        return self

    def env_type(self, env_type: str) -> "BasicInfoBuilder":
        self._basic_info.env_type = env_type
        return self

    def app_id(self, app_id: str) -> "BasicInfoBuilder":
        self._basic_info.app_id = app_id
        return self

    def module(self, module: str) -> "BasicInfoBuilder":
        self._basic_info.module = module
        return self

    def op_type(self, op_type: str) -> "BasicInfoBuilder":
        self._basic_info.op_type = op_type
        return self

    def app_name(self, app_name: Dict[str, str]) -> "BasicInfoBuilder":
        self._basic_info.app_name = app_name
        return self

    def build(self) -> "BasicInfo":
        return self._basic_info
