# 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 DocMeta(object):
    _types = {
        "doc_types": str,
        "update_time": int,
        "url": str,
        "owner_name": str,
        "owner_id": str,
        "is_cross_tenant": bool,
        "create_time": int,
        "last_open_time": int,
        "edit_user_id": str,
        "edit_user_name": str,
        "token": str,
    }

    def __init__(self, d=None):
        self.doc_types: Optional[str] = None
        self.update_time: Optional[int] = None
        self.url: Optional[str] = None
        self.owner_name: Optional[str] = None
        self.owner_id: Optional[str] = None
        self.is_cross_tenant: Optional[bool] = None
        self.create_time: Optional[int] = None
        self.last_open_time: Optional[int] = None
        self.edit_user_id: Optional[str] = None
        self.edit_user_name: Optional[str] = None
        self.token: Optional[str] = None
        init(self, d, self._types)

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


class DocMetaBuilder(object):
    def __init__(self) -> None:
        self._doc_meta = DocMeta()

    def doc_types(self, doc_types: str) -> "DocMetaBuilder":
        self._doc_meta.doc_types = doc_types
        return self

    def update_time(self, update_time: int) -> "DocMetaBuilder":
        self._doc_meta.update_time = update_time
        return self

    def url(self, url: str) -> "DocMetaBuilder":
        self._doc_meta.url = url
        return self

    def owner_name(self, owner_name: str) -> "DocMetaBuilder":
        self._doc_meta.owner_name = owner_name
        return self

    def owner_id(self, owner_id: str) -> "DocMetaBuilder":
        self._doc_meta.owner_id = owner_id
        return self

    def is_cross_tenant(self, is_cross_tenant: bool) -> "DocMetaBuilder":
        self._doc_meta.is_cross_tenant = is_cross_tenant
        return self

    def create_time(self, create_time: int) -> "DocMetaBuilder":
        self._doc_meta.create_time = create_time
        return self

    def last_open_time(self, last_open_time: int) -> "DocMetaBuilder":
        self._doc_meta.last_open_time = last_open_time
        return self

    def edit_user_id(self, edit_user_id: str) -> "DocMetaBuilder":
        self._doc_meta.edit_user_id = edit_user_id
        return self

    def edit_user_name(self, edit_user_name: str) -> "DocMetaBuilder":
        self._doc_meta.edit_user_name = edit_user_name
        return self

    def token(self, token: str) -> "DocMetaBuilder":
        self._doc_meta.token = token
        return self

    def build(self) -> "DocMeta":
        return self._doc_meta
