# 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 .doc_filter import DocFilter
from .wiki_filter import WikiFilter


class DocRequest(object):
    _types = {
        "query": str,
        "page_size": int,
        "pagination_token": str,
        "docs_filter": DocFilter,
        "wiki_filter": WikiFilter,
    }

    def __init__(self, d=None):
        self.query: Optional[str] = None
        self.page_size: Optional[int] = None
        self.pagination_token: Optional[str] = None
        self.docs_filter: Optional[DocFilter] = None
        self.wiki_filter: Optional[WikiFilter] = None
        init(self, d, self._types)

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


class DocRequestBuilder(object):
    def __init__(self) -> None:
        self._doc_request = DocRequest()

    def query(self, query: str) -> "DocRequestBuilder":
        self._doc_request.query = query
        return self

    def page_size(self, page_size: int) -> "DocRequestBuilder":
        self._doc_request.page_size = page_size
        return self

    def pagination_token(self, pagination_token: str) -> "DocRequestBuilder":
        self._doc_request.pagination_token = pagination_token
        return self

    def docs_filter(self, docs_filter: DocFilter) -> "DocRequestBuilder":
        self._doc_request.docs_filter = docs_filter
        return self

    def wiki_filter(self, wiki_filter: WikiFilter) -> "DocRequestBuilder":
        self._doc_request.wiki_filter = wiki_filter
        return self

    def build(self) -> "DocRequest":
        return self._doc_request
