import type * as gax from 'google-gax';
import type { Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback } from 'google-gax';
import { Transform } from 'stream';
import * as protos from '../../protos/protos';
/**
 *  This service lets you manage document.
 * @class
 * @memberof v1
 */
export declare class DocumentServiceClient {
    private _terminated;
    private _opts;
    private _providedCustomServicePath;
    private _gaxModule;
    private _gaxGrpc;
    private _protos;
    private _defaults;
    private _universeDomain;
    private _servicePath;
    private _log;
    auth: gax.GoogleAuth;
    descriptors: Descriptors;
    warn: (code: string, message: string, warnType?: string) => void;
    innerApiCalls: {
        [name: string]: Function;
    };
    pathTemplates: {
        [name: string]: gax.PathTemplate;
    };
    documentServiceStub?: Promise<{
        [name: string]: Function;
    }>;
    /**
     * Construct an instance of DocumentServiceClient.
     *
     * @param {object} [options] - The configuration object.
     * The options accepted by the constructor are described in detail
     * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance).
     * The common options are:
     * @param {object} [options.credentials] - Credentials object.
     * @param {string} [options.credentials.client_email]
     * @param {string} [options.credentials.private_key]
     * @param {string} [options.email] - Account email address. Required when
     *     using a .pem or .p12 keyFilename.
     * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or
     *     .p12 key downloaded from the Google Developers Console. If you provide
     *     a path to a JSON file, the projectId option below is not necessary.
     *     NOTE: .pem and .p12 require you to specify options.email as well.
     * @param {number} [options.port] - The port on which to connect to
     *     the remote host.
     * @param {string} [options.projectId] - The project ID from the Google
     *     Developer's Console, e.g. 'grape-spaceship-123'. We will also check
     *     the environment variable GCLOUD_PROJECT for your project ID. If your
     *     app is running in an environment which supports
     *     {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials},
     *     your project ID will be detected automatically.
     * @param {string} [options.apiEndpoint] - The domain name of the
     *     API remote host.
     * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override.
     *     Follows the structure of {@link gapicConfig}.
     * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode.
     *     For more information, please check the
     *     {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}.
     * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you
     *     need to avoid loading the default gRPC version and want to use the fallback
     *     HTTP implementation. Load only fallback version and pass it to the constructor:
     *     ```
     *     const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC
     *     const client = new DocumentServiceClient({fallback: true}, gax);
     *     ```
     */
    constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback);
    /**
     * Initialize the client.
     * Performs asynchronous operations (such as authentication) and prepares the client.
     * This function will be called automatically when any class method is called for the
     * first time, but if you need to initialize it before calling an actual method,
     * feel free to call initialize() directly.
     *
     * You can await on this method if you want to make sure the client is initialized.
     *
     * @returns {Promise} A promise that resolves to an authenticated service stub.
     */
    initialize(): Promise<{
        [name: string]: Function;
    }>;
    /**
     * The DNS address for this API service.
     * @deprecated Use the apiEndpoint method of the client instance.
     * @returns {string} The DNS address for this service.
     */
    static get servicePath(): string;
    /**
     * The DNS address for this API service - same as servicePath.
     * @deprecated Use the apiEndpoint method of the client instance.
     * @returns {string} The DNS address for this service.
     */
    static get apiEndpoint(): string;
    /**
     * The DNS address for this API service.
     * @returns {string} The DNS address for this service.
     */
    get apiEndpoint(): string;
    get universeDomain(): string;
    /**
     * The port for this API service.
     * @returns {number} The default port for this service.
     */
    static get port(): number;
    /**
     * The scopes needed to make gRPC calls for every method defined
     * in this service.
     * @returns {string[]} List of default scopes.
     */
    static get scopes(): string[];
    getProjectId(): Promise<string>;
    getProjectId(callback: Callback<string, undefined, undefined>): void;
    /**
     * Creates a document.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.parent
     *   Required. The parent name.
     *   Format: projects/{project_number}/locations/{location}.
     * @param {google.cloud.contentwarehouse.v1.Document} request.document
     *   Required. The document to create.
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control for the service.
     * @param {google.iam.v1.Policy} request.policy
     *   Default document policy during creation.
     *   This refers to an Identity and Access (IAM) policy, which specifies access
     *   controls for the Document.
     *   Conditions defined in the policy will be ignored.
     * @param {google.cloud.contentwarehouse.v1.CloudAIDocumentOption} request.cloudAiDocumentOption
     *   Request Option for processing Cloud AI Document in Document Warehouse.
     *   This field offers limited support for mapping entities from Cloud AI
     *   Document to Warehouse Document. Please consult with product team before
     *   using this field and other available options.
     * @param {google.protobuf.FieldMask} request.createMask
     *   Field mask for creating Document fields. If mask path is empty,
     *   it means all fields are masked.
     *   For the `FieldMask` definition,
     *   see
     *   https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.contentwarehouse.v1.CreateDocumentResponse|CreateDocumentResponse}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1/document_service.create_document.js</caption>
     * region_tag:contentwarehouse_v1_generated_DocumentService_CreateDocument_async
     */
    createDocument(request?: protos.google.cloud.contentwarehouse.v1.ICreateDocumentRequest, options?: CallOptions): Promise<[
        protos.google.cloud.contentwarehouse.v1.ICreateDocumentResponse,
        (protos.google.cloud.contentwarehouse.v1.ICreateDocumentRequest | undefined),
        {} | undefined
    ]>;
    createDocument(request: protos.google.cloud.contentwarehouse.v1.ICreateDocumentRequest, options: CallOptions, callback: Callback<protos.google.cloud.contentwarehouse.v1.ICreateDocumentResponse, protos.google.cloud.contentwarehouse.v1.ICreateDocumentRequest | null | undefined, {} | null | undefined>): void;
    createDocument(request: protos.google.cloud.contentwarehouse.v1.ICreateDocumentRequest, callback: Callback<protos.google.cloud.contentwarehouse.v1.ICreateDocumentResponse, protos.google.cloud.contentwarehouse.v1.ICreateDocumentRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Gets a document. Returns NOT_FOUND if the document does not exist.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.name
     *   Required. The name of the document to retrieve.
     *   Format:
     *   projects/{project_number}/locations/{location}/documents/{document_id} or
     *   projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control for the service.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.contentwarehouse.v1.Document|Document}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1/document_service.get_document.js</caption>
     * region_tag:contentwarehouse_v1_generated_DocumentService_GetDocument_async
     */
    getDocument(request?: protos.google.cloud.contentwarehouse.v1.IGetDocumentRequest, options?: CallOptions): Promise<[
        protos.google.cloud.contentwarehouse.v1.IDocument,
        protos.google.cloud.contentwarehouse.v1.IGetDocumentRequest | undefined,
        {} | undefined
    ]>;
    getDocument(request: protos.google.cloud.contentwarehouse.v1.IGetDocumentRequest, options: CallOptions, callback: Callback<protos.google.cloud.contentwarehouse.v1.IDocument, protos.google.cloud.contentwarehouse.v1.IGetDocumentRequest | null | undefined, {} | null | undefined>): void;
    getDocument(request: protos.google.cloud.contentwarehouse.v1.IGetDocumentRequest, callback: Callback<protos.google.cloud.contentwarehouse.v1.IDocument, protos.google.cloud.contentwarehouse.v1.IGetDocumentRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Updates a document. Returns INVALID_ARGUMENT if the name of the document
     * is non-empty and does not equal the existing name.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.name
     *   Required. The name of the document to update.
     *   Format:
     *   projects/{project_number}/locations/{location}/documents/{document_id}
     *   or
     *   projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.
     * @param {google.cloud.contentwarehouse.v1.Document} request.document
     *   Required. The document to update.
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control for the service.
     * @param {google.cloud.contentwarehouse.v1.CloudAIDocumentOption} request.cloudAiDocumentOption
     *   Request Option for processing Cloud AI Document in Document Warehouse.
     *   This field offers limited support for mapping entities from Cloud AI
     *   Document to Warehouse Document. Please consult with product team before
     *   using this field and other available options.
     * @param {google.cloud.contentwarehouse.v1.UpdateOptions} request.updateOptions
     *   Options for the update operation.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.contentwarehouse.v1.UpdateDocumentResponse|UpdateDocumentResponse}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1/document_service.update_document.js</caption>
     * region_tag:contentwarehouse_v1_generated_DocumentService_UpdateDocument_async
     */
    updateDocument(request?: protos.google.cloud.contentwarehouse.v1.IUpdateDocumentRequest, options?: CallOptions): Promise<[
        protos.google.cloud.contentwarehouse.v1.IUpdateDocumentResponse,
        (protos.google.cloud.contentwarehouse.v1.IUpdateDocumentRequest | undefined),
        {} | undefined
    ]>;
    updateDocument(request: protos.google.cloud.contentwarehouse.v1.IUpdateDocumentRequest, options: CallOptions, callback: Callback<protos.google.cloud.contentwarehouse.v1.IUpdateDocumentResponse, protos.google.cloud.contentwarehouse.v1.IUpdateDocumentRequest | null | undefined, {} | null | undefined>): void;
    updateDocument(request: protos.google.cloud.contentwarehouse.v1.IUpdateDocumentRequest, callback: Callback<protos.google.cloud.contentwarehouse.v1.IUpdateDocumentResponse, protos.google.cloud.contentwarehouse.v1.IUpdateDocumentRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Deletes a document. Returns NOT_FOUND if the document does not exist.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.name
     *   Required. The name of the document to delete.
     *   Format:
     *   projects/{project_number}/locations/{location}/documents/{document_id}
     *   or
     *   projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control for the service.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1/document_service.delete_document.js</caption>
     * region_tag:contentwarehouse_v1_generated_DocumentService_DeleteDocument_async
     */
    deleteDocument(request?: protos.google.cloud.contentwarehouse.v1.IDeleteDocumentRequest, options?: CallOptions): Promise<[
        protos.google.protobuf.IEmpty,
        (protos.google.cloud.contentwarehouse.v1.IDeleteDocumentRequest | undefined),
        {} | undefined
    ]>;
    deleteDocument(request: protos.google.cloud.contentwarehouse.v1.IDeleteDocumentRequest, options: CallOptions, callback: Callback<protos.google.protobuf.IEmpty, protos.google.cloud.contentwarehouse.v1.IDeleteDocumentRequest | null | undefined, {} | null | undefined>): void;
    deleteDocument(request: protos.google.cloud.contentwarehouse.v1.IDeleteDocumentRequest, callback: Callback<protos.google.protobuf.IEmpty, protos.google.cloud.contentwarehouse.v1.IDeleteDocumentRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Lock the document so the document cannot be updated by other users.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.name
     *   Required. The name of the document to lock.
     *   Format:
     *   projects/{project_number}/locations/{location}/documents/{document}.
     * @param {string} request.collectionId
     *   The collection the document connects to.
     * @param {google.cloud.contentwarehouse.v1.UserInfo} request.lockingUser
     *   The user information who locks the document.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.contentwarehouse.v1.Document|Document}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1/document_service.lock_document.js</caption>
     * region_tag:contentwarehouse_v1_generated_DocumentService_LockDocument_async
     */
    lockDocument(request?: protos.google.cloud.contentwarehouse.v1.ILockDocumentRequest, options?: CallOptions): Promise<[
        protos.google.cloud.contentwarehouse.v1.IDocument,
        protos.google.cloud.contentwarehouse.v1.ILockDocumentRequest | undefined,
        {} | undefined
    ]>;
    lockDocument(request: protos.google.cloud.contentwarehouse.v1.ILockDocumentRequest, options: CallOptions, callback: Callback<protos.google.cloud.contentwarehouse.v1.IDocument, protos.google.cloud.contentwarehouse.v1.ILockDocumentRequest | null | undefined, {} | null | undefined>): void;
    lockDocument(request: protos.google.cloud.contentwarehouse.v1.ILockDocumentRequest, callback: Callback<protos.google.cloud.contentwarehouse.v1.IDocument, protos.google.cloud.contentwarehouse.v1.ILockDocumentRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Gets the access control policy for a resource. Returns NOT_FOUND error if
     * the resource does not exist. Returns an empty policy if the resource exists
     * but does not have a policy set.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.resource
     *   Required. REQUIRED: The resource for which the policy is being requested.
     *   Format for document:
     *   projects/{project_number}/locations/{location}/documents/{document_id}.
     *   Format for collection:
     *   projects/{project_number}/locations/{location}/collections/{collection_id}.
     *   Format for project: projects/{project_number}.
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control for the service.
     * @param {boolean} request.projectOwner
     *   For Get Project ACL only. Authorization check for end user will be ignored
     *   when project_owner=true.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.contentwarehouse.v1.FetchAclResponse|FetchAclResponse}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1/document_service.fetch_acl.js</caption>
     * region_tag:contentwarehouse_v1_generated_DocumentService_FetchAcl_async
     */
    fetchAcl(request?: protos.google.cloud.contentwarehouse.v1.IFetchAclRequest, options?: CallOptions): Promise<[
        protos.google.cloud.contentwarehouse.v1.IFetchAclResponse,
        protos.google.cloud.contentwarehouse.v1.IFetchAclRequest | undefined,
        {} | undefined
    ]>;
    fetchAcl(request: protos.google.cloud.contentwarehouse.v1.IFetchAclRequest, options: CallOptions, callback: Callback<protos.google.cloud.contentwarehouse.v1.IFetchAclResponse, protos.google.cloud.contentwarehouse.v1.IFetchAclRequest | null | undefined, {} | null | undefined>): void;
    fetchAcl(request: protos.google.cloud.contentwarehouse.v1.IFetchAclRequest, callback: Callback<protos.google.cloud.contentwarehouse.v1.IFetchAclResponse, protos.google.cloud.contentwarehouse.v1.IFetchAclRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Sets the access control policy for a resource. Replaces any existing
     * policy.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.resource
     *   Required. REQUIRED: The resource for which the policy is being requested.
     *   Format for document:
     *   projects/{project_number}/locations/{location}/documents/{document_id}.
     *   Format for collection:
     *   projects/{project_number}/locations/{location}/collections/{collection_id}.
     *   Format for project: projects/{project_number}.
     * @param {google.iam.v1.Policy} request.policy
     *   Required. REQUIRED: The complete policy to be applied to the `resource`.
     *   The size of the policy is limited to a few 10s of KB. This refers to an
     *   Identity and Access (IAM) policy, which specifies access controls for the
     *   Document.
     *
     *   You can set ACL with condition for projects only.
     *
     *   Supported operators are: `=`, `!=`, `<`, `<=`, `>`, and `>=` where
     *   the left of the operator is `DocumentSchemaId` or property name and the
     *   right of the operator is a number or a quoted string. You must escape
     *   backslash (\\) and quote (\") characters.
     *
     *   Boolean expressions (AND/OR) are supported up to 3 levels of nesting (for
     *   example, "((A AND B AND C) OR D) AND E"), a maximum of 10 comparisons are
     *   allowed in the expression. The expression must be < 6000 bytes in length.
     *
     *   Sample condition:
     *       `"DocumentSchemaId = \"some schema id\" OR SchemaId.floatPropertyName
     *       >= 10"`
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control for the service.
     * @param {boolean} request.projectOwner
     *   For Set Project ACL only. Authorization check for end user will be ignored
     *   when project_owner=true.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is an object representing {@link protos.google.cloud.contentwarehouse.v1.SetAclResponse|SetAclResponse}.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1/document_service.set_acl.js</caption>
     * region_tag:contentwarehouse_v1_generated_DocumentService_SetAcl_async
     */
    setAcl(request?: protos.google.cloud.contentwarehouse.v1.ISetAclRequest, options?: CallOptions): Promise<[
        protos.google.cloud.contentwarehouse.v1.ISetAclResponse,
        protos.google.cloud.contentwarehouse.v1.ISetAclRequest | undefined,
        {} | undefined
    ]>;
    setAcl(request: protos.google.cloud.contentwarehouse.v1.ISetAclRequest, options: CallOptions, callback: Callback<protos.google.cloud.contentwarehouse.v1.ISetAclResponse, protos.google.cloud.contentwarehouse.v1.ISetAclRequest | null | undefined, {} | null | undefined>): void;
    setAcl(request: protos.google.cloud.contentwarehouse.v1.ISetAclRequest, callback: Callback<protos.google.cloud.contentwarehouse.v1.ISetAclResponse, protos.google.cloud.contentwarehouse.v1.ISetAclRequest | null | undefined, {} | null | undefined>): void;
    /**
     * Searches for documents using provided
     * {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsRequest|SearchDocumentsRequest}.
     * This call only returns documents that the caller has permission to search
     * against.
     *
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.parent
     *   Required. The parent, which owns this collection of documents.
     *   Format: projects/{project_number}/locations/{location}.
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control and improve the search quality of the service.
     * @param {google.cloud.contentwarehouse.v1.DocumentQuery} request.documentQuery
     *   Query used to search against documents (keyword, filters, etc.).
     * @param {number} request.offset
     *   An integer that specifies the current offset (that is, starting result
     *   location, amongst the documents deemed by the API as relevant) in search
     *   results. This field is only considered if
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsRequest.page_token|page_token}
     *   is unset.
     *
     *   The maximum allowed value is 5000. Otherwise an error is thrown.
     *
     *   For example, 0 means to  return results starting from the first matching
     *   document, and 10 means to return from the 11th document. This can be used
     *   for pagination, (for example, pageSize = 10 and offset = 10 means to return
     *   from the second page).
     * @param {number} request.pageSize
     *   A limit on the number of documents returned in the search results.
     *   Increasing this value above the default value of 10 can increase search
     *   response time. The value can be between 1 and 100.
     * @param {string} request.pageToken
     *   The token specifying the current offset within search results.
     *   See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.next_page_token|SearchDocumentsResponse.next_page_token}
     *   for an explanation of how to obtain the next set of query results.
     * @param {string} request.orderBy
     *   The criteria determining how search results are sorted. For non-empty
     *   query, default is `"relevance desc"`. For empty query, default is
     *   `"upload_date desc"`.
     *
     *   Supported options are:
     *
     *   * `"relevance desc"`: By relevance descending, as determined by the API
     *     algorithms.
     *   * `"upload_date desc"`: By upload date descending.
     *   * `"upload_date"`: By upload date ascending.
     *   * `"update_date desc"`: By last updated date descending.
     *   * `"update_date"`: By last updated date ascending.
     *   * `"retrieval_importance desc"`: By retrieval importance of properties
     *     descending. This feature is still under development, please do not use
     *     unless otherwise instructed to do so.
     * @param {number[]} request.histogramQueries
     *   An expression specifying a histogram request against matching
     *   documents. Expression syntax is an aggregation function call with
     *   histogram facets and other options.
     *
     *   The following aggregation functions are supported:
     *
     *   * `count(string_histogram_facet)`: Count the number of matching entities
     *   for each distinct attribute value.
     *
     *   Data types:
     *
     *   * Histogram facet (aka filterable properties): Facet names with format
     *   &lt;schema id&gt;.&lt;facet&gt;. Facets will have the
     *   format of: `{@link protos.a-zA-Z0-9_:/-.|a-zA-Z}`. If the facet is a child
     *   facet, then the parent hierarchy needs to be specified separated by
     *   dots in the prefix after the schema id. Thus, the format for a multi-
     *   level facet is: &lt;schema id&gt;.&lt;parent facet name&gt;.
     *   &lt;child facet name&gt;. Example:
     *   schema123.root_parent_facet.middle_facet.child_facet
     *   * DocumentSchemaId: (with no schema id prefix) to get
     *   histograms for each document type (returns the schema id path, e.g.
     *   projects/12345/locations/us-west/documentSchemas/abc123).
     *
     *   Example expression:
     *
     *   * Document type counts:
     *     count('DocumentSchemaId')
     *
     *   * For schema id, abc123, get the counts for MORTGAGE_TYPE:
     *     count('abc123.MORTGAGE_TYPE')
     * @param {boolean} request.requireTotalSize
     *   Controls if the search document request requires the return of a total size
     *   of matched documents. See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.total_size|SearchDocumentsResponse.total_size}.
     *
     *   Enabling this flag may adversely impact performance. Hint: If this is
     *   used with pagination, set this flag on the initial query but set this
     *   to false on subsequent page calls (keep the total count locally).
     *
     *   Defaults to false.
     * @param {google.cloud.contentwarehouse.v1.SearchDocumentsRequest.TotalResultSize} request.totalResultSize
     *   Controls if the search document request requires the return of a total size
     *   of matched documents. See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.total_size|SearchDocumentsResponse.total_size}.
     * @param {number} request.qaSizeLimit
     *   Experimental, do not use.
     *   The limit on the number of documents returned for the question-answering
     *   feature. To enable the question-answering feature, set
     *   {@link protos.|DocumentQuery].[is_nl_query} to true.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Promise} - The promise which resolves to an array.
     *   The first element of the array is Array of {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument|MatchingDocument}.
     *   The client library will perform auto-pagination by default: it will call the API as many
     *   times as needed and will merge results from all the pages into this array.
     *   Note that it can affect your quota.
     *   We recommend using `searchDocumentsAsync()`
     *   method described below for async iteration which you can stop as needed.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     */
    searchDocuments(request?: protos.google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, options?: CallOptions): Promise<[
        protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument[],
        protos.google.cloud.contentwarehouse.v1.ISearchDocumentsRequest | null,
        protos.google.cloud.contentwarehouse.v1.ISearchDocumentsResponse
    ]>;
    searchDocuments(request: protos.google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, options: CallOptions, callback: PaginationCallback<protos.google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, protos.google.cloud.contentwarehouse.v1.ISearchDocumentsResponse | null | undefined, protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument>): void;
    searchDocuments(request: protos.google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, callback: PaginationCallback<protos.google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, protos.google.cloud.contentwarehouse.v1.ISearchDocumentsResponse | null | undefined, protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument>): void;
    /**
     * Equivalent to `searchDocuments`, but returns a NodeJS Stream object.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.parent
     *   Required. The parent, which owns this collection of documents.
     *   Format: projects/{project_number}/locations/{location}.
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control and improve the search quality of the service.
     * @param {google.cloud.contentwarehouse.v1.DocumentQuery} request.documentQuery
     *   Query used to search against documents (keyword, filters, etc.).
     * @param {number} request.offset
     *   An integer that specifies the current offset (that is, starting result
     *   location, amongst the documents deemed by the API as relevant) in search
     *   results. This field is only considered if
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsRequest.page_token|page_token}
     *   is unset.
     *
     *   The maximum allowed value is 5000. Otherwise an error is thrown.
     *
     *   For example, 0 means to  return results starting from the first matching
     *   document, and 10 means to return from the 11th document. This can be used
     *   for pagination, (for example, pageSize = 10 and offset = 10 means to return
     *   from the second page).
     * @param {number} request.pageSize
     *   A limit on the number of documents returned in the search results.
     *   Increasing this value above the default value of 10 can increase search
     *   response time. The value can be between 1 and 100.
     * @param {string} request.pageToken
     *   The token specifying the current offset within search results.
     *   See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.next_page_token|SearchDocumentsResponse.next_page_token}
     *   for an explanation of how to obtain the next set of query results.
     * @param {string} request.orderBy
     *   The criteria determining how search results are sorted. For non-empty
     *   query, default is `"relevance desc"`. For empty query, default is
     *   `"upload_date desc"`.
     *
     *   Supported options are:
     *
     *   * `"relevance desc"`: By relevance descending, as determined by the API
     *     algorithms.
     *   * `"upload_date desc"`: By upload date descending.
     *   * `"upload_date"`: By upload date ascending.
     *   * `"update_date desc"`: By last updated date descending.
     *   * `"update_date"`: By last updated date ascending.
     *   * `"retrieval_importance desc"`: By retrieval importance of properties
     *     descending. This feature is still under development, please do not use
     *     unless otherwise instructed to do so.
     * @param {number[]} request.histogramQueries
     *   An expression specifying a histogram request against matching
     *   documents. Expression syntax is an aggregation function call with
     *   histogram facets and other options.
     *
     *   The following aggregation functions are supported:
     *
     *   * `count(string_histogram_facet)`: Count the number of matching entities
     *   for each distinct attribute value.
     *
     *   Data types:
     *
     *   * Histogram facet (aka filterable properties): Facet names with format
     *   &lt;schema id&gt;.&lt;facet&gt;. Facets will have the
     *   format of: `{@link protos.a-zA-Z0-9_:/-.|a-zA-Z}`. If the facet is a child
     *   facet, then the parent hierarchy needs to be specified separated by
     *   dots in the prefix after the schema id. Thus, the format for a multi-
     *   level facet is: &lt;schema id&gt;.&lt;parent facet name&gt;.
     *   &lt;child facet name&gt;. Example:
     *   schema123.root_parent_facet.middle_facet.child_facet
     *   * DocumentSchemaId: (with no schema id prefix) to get
     *   histograms for each document type (returns the schema id path, e.g.
     *   projects/12345/locations/us-west/documentSchemas/abc123).
     *
     *   Example expression:
     *
     *   * Document type counts:
     *     count('DocumentSchemaId')
     *
     *   * For schema id, abc123, get the counts for MORTGAGE_TYPE:
     *     count('abc123.MORTGAGE_TYPE')
     * @param {boolean} request.requireTotalSize
     *   Controls if the search document request requires the return of a total size
     *   of matched documents. See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.total_size|SearchDocumentsResponse.total_size}.
     *
     *   Enabling this flag may adversely impact performance. Hint: If this is
     *   used with pagination, set this flag on the initial query but set this
     *   to false on subsequent page calls (keep the total count locally).
     *
     *   Defaults to false.
     * @param {google.cloud.contentwarehouse.v1.SearchDocumentsRequest.TotalResultSize} request.totalResultSize
     *   Controls if the search document request requires the return of a total size
     *   of matched documents. See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.total_size|SearchDocumentsResponse.total_size}.
     * @param {number} request.qaSizeLimit
     *   Experimental, do not use.
     *   The limit on the number of documents returned for the question-answering
     *   feature. To enable the question-answering feature, set
     *   {@link protos.|DocumentQuery].[is_nl_query} to true.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Stream}
     *   An object stream which emits an object representing {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument|MatchingDocument} on 'data' event.
     *   The client library will perform auto-pagination by default: it will call the API as many
     *   times as needed. Note that it can affect your quota.
     *   We recommend using `searchDocumentsAsync()`
     *   method described below for async iteration which you can stop as needed.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     */
    searchDocumentsStream(request?: protos.google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, options?: CallOptions): Transform;
    /**
     * Equivalent to `searchDocuments`, but returns an iterable object.
     *
     * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
     * @param {Object} request
     *   The request object that will be sent.
     * @param {string} request.parent
     *   Required. The parent, which owns this collection of documents.
     *   Format: projects/{project_number}/locations/{location}.
     * @param {google.cloud.contentwarehouse.v1.RequestMetadata} request.requestMetadata
     *   The meta information collected about the end user, used to enforce access
     *   control and improve the search quality of the service.
     * @param {google.cloud.contentwarehouse.v1.DocumentQuery} request.documentQuery
     *   Query used to search against documents (keyword, filters, etc.).
     * @param {number} request.offset
     *   An integer that specifies the current offset (that is, starting result
     *   location, amongst the documents deemed by the API as relevant) in search
     *   results. This field is only considered if
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsRequest.page_token|page_token}
     *   is unset.
     *
     *   The maximum allowed value is 5000. Otherwise an error is thrown.
     *
     *   For example, 0 means to  return results starting from the first matching
     *   document, and 10 means to return from the 11th document. This can be used
     *   for pagination, (for example, pageSize = 10 and offset = 10 means to return
     *   from the second page).
     * @param {number} request.pageSize
     *   A limit on the number of documents returned in the search results.
     *   Increasing this value above the default value of 10 can increase search
     *   response time. The value can be between 1 and 100.
     * @param {string} request.pageToken
     *   The token specifying the current offset within search results.
     *   See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.next_page_token|SearchDocumentsResponse.next_page_token}
     *   for an explanation of how to obtain the next set of query results.
     * @param {string} request.orderBy
     *   The criteria determining how search results are sorted. For non-empty
     *   query, default is `"relevance desc"`. For empty query, default is
     *   `"upload_date desc"`.
     *
     *   Supported options are:
     *
     *   * `"relevance desc"`: By relevance descending, as determined by the API
     *     algorithms.
     *   * `"upload_date desc"`: By upload date descending.
     *   * `"upload_date"`: By upload date ascending.
     *   * `"update_date desc"`: By last updated date descending.
     *   * `"update_date"`: By last updated date ascending.
     *   * `"retrieval_importance desc"`: By retrieval importance of properties
     *     descending. This feature is still under development, please do not use
     *     unless otherwise instructed to do so.
     * @param {number[]} request.histogramQueries
     *   An expression specifying a histogram request against matching
     *   documents. Expression syntax is an aggregation function call with
     *   histogram facets and other options.
     *
     *   The following aggregation functions are supported:
     *
     *   * `count(string_histogram_facet)`: Count the number of matching entities
     *   for each distinct attribute value.
     *
     *   Data types:
     *
     *   * Histogram facet (aka filterable properties): Facet names with format
     *   &lt;schema id&gt;.&lt;facet&gt;. Facets will have the
     *   format of: `{@link protos.a-zA-Z0-9_:/-.|a-zA-Z}`. If the facet is a child
     *   facet, then the parent hierarchy needs to be specified separated by
     *   dots in the prefix after the schema id. Thus, the format for a multi-
     *   level facet is: &lt;schema id&gt;.&lt;parent facet name&gt;.
     *   &lt;child facet name&gt;. Example:
     *   schema123.root_parent_facet.middle_facet.child_facet
     *   * DocumentSchemaId: (with no schema id prefix) to get
     *   histograms for each document type (returns the schema id path, e.g.
     *   projects/12345/locations/us-west/documentSchemas/abc123).
     *
     *   Example expression:
     *
     *   * Document type counts:
     *     count('DocumentSchemaId')
     *
     *   * For schema id, abc123, get the counts for MORTGAGE_TYPE:
     *     count('abc123.MORTGAGE_TYPE')
     * @param {boolean} request.requireTotalSize
     *   Controls if the search document request requires the return of a total size
     *   of matched documents. See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.total_size|SearchDocumentsResponse.total_size}.
     *
     *   Enabling this flag may adversely impact performance. Hint: If this is
     *   used with pagination, set this flag on the initial query but set this
     *   to false on subsequent page calls (keep the total count locally).
     *
     *   Defaults to false.
     * @param {google.cloud.contentwarehouse.v1.SearchDocumentsRequest.TotalResultSize} request.totalResultSize
     *   Controls if the search document request requires the return of a total size
     *   of matched documents. See
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.total_size|SearchDocumentsResponse.total_size}.
     * @param {number} request.qaSizeLimit
     *   Experimental, do not use.
     *   The limit on the number of documents returned for the question-answering
     *   feature. To enable the question-answering feature, set
     *   {@link protos.|DocumentQuery].[is_nl_query} to true.
     * @param {object} [options]
     *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
     * @returns {Object}
     *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
     *   When you iterate the returned iterable, each element will be an object representing
     *   {@link protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument|MatchingDocument}. The API will be called under the hood as needed, once per the page,
     *   so you can stop the iteration when you don't need more results.
     *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
     *   for more details and examples.
     * @example <caption>include:samples/generated/v1/document_service.search_documents.js</caption>
     * region_tag:contentwarehouse_v1_generated_DocumentService_SearchDocuments_async
     */
    searchDocumentsAsync(request?: protos.google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, options?: CallOptions): AsyncIterable<protos.google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument>;
    /**
     * Return a fully-qualified documentLink resource name string.
     *
     * @param {string} project
     * @param {string} location
     * @param {string} document
     * @param {string} document_link
     * @returns {string} Resource name string.
     */
    documentLinkPath(project: string, location: string, document: string, documentLink: string): string;
    /**
     * Parse the project from DocumentLink resource.
     *
     * @param {string} documentLinkName
     *   A fully-qualified path representing DocumentLink resource.
     * @returns {string} A string representing the project.
     */
    matchProjectFromDocumentLinkName(documentLinkName: string): string | number;
    /**
     * Parse the location from DocumentLink resource.
     *
     * @param {string} documentLinkName
     *   A fully-qualified path representing DocumentLink resource.
     * @returns {string} A string representing the location.
     */
    matchLocationFromDocumentLinkName(documentLinkName: string): string | number;
    /**
     * Parse the document from DocumentLink resource.
     *
     * @param {string} documentLinkName
     *   A fully-qualified path representing DocumentLink resource.
     * @returns {string} A string representing the document.
     */
    matchDocumentFromDocumentLinkName(documentLinkName: string): string | number;
    /**
     * Parse the document_link from DocumentLink resource.
     *
     * @param {string} documentLinkName
     *   A fully-qualified path representing DocumentLink resource.
     * @returns {string} A string representing the document_link.
     */
    matchDocumentLinkFromDocumentLinkName(documentLinkName: string): string | number;
    /**
     * Return a fully-qualified documentSchema resource name string.
     *
     * @param {string} project
     * @param {string} location
     * @param {string} document_schema
     * @returns {string} Resource name string.
     */
    documentSchemaPath(project: string, location: string, documentSchema: string): string;
    /**
     * Parse the project from DocumentSchema resource.
     *
     * @param {string} documentSchemaName
     *   A fully-qualified path representing DocumentSchema resource.
     * @returns {string} A string representing the project.
     */
    matchProjectFromDocumentSchemaName(documentSchemaName: string): string | number;
    /**
     * Parse the location from DocumentSchema resource.
     *
     * @param {string} documentSchemaName
     *   A fully-qualified path representing DocumentSchema resource.
     * @returns {string} A string representing the location.
     */
    matchLocationFromDocumentSchemaName(documentSchemaName: string): string | number;
    /**
     * Parse the document_schema from DocumentSchema resource.
     *
     * @param {string} documentSchemaName
     *   A fully-qualified path representing DocumentSchema resource.
     * @returns {string} A string representing the document_schema.
     */
    matchDocumentSchemaFromDocumentSchemaName(documentSchemaName: string): string | number;
    /**
     * Return a fully-qualified projectLocationDocument resource name string.
     *
     * @param {string} project
     * @param {string} location
     * @param {string} document
     * @returns {string} Resource name string.
     */
    projectLocationDocumentPath(project: string, location: string, document: string): string;
    /**
     * Parse the project from ProjectLocationDocument resource.
     *
     * @param {string} projectLocationDocumentName
     *   A fully-qualified path representing project_location_document resource.
     * @returns {string} A string representing the project.
     */
    matchProjectFromProjectLocationDocumentName(projectLocationDocumentName: string): string | number;
    /**
     * Parse the location from ProjectLocationDocument resource.
     *
     * @param {string} projectLocationDocumentName
     *   A fully-qualified path representing project_location_document resource.
     * @returns {string} A string representing the location.
     */
    matchLocationFromProjectLocationDocumentName(projectLocationDocumentName: string): string | number;
    /**
     * Parse the document from ProjectLocationDocument resource.
     *
     * @param {string} projectLocationDocumentName
     *   A fully-qualified path representing project_location_document resource.
     * @returns {string} A string representing the document.
     */
    matchDocumentFromProjectLocationDocumentName(projectLocationDocumentName: string): string | number;
    /**
     * Return a fully-qualified projectLocationDocumentsReferenceId resource name string.
     *
     * @param {string} project
     * @param {string} location
     * @param {string} reference_id
     * @returns {string} Resource name string.
     */
    projectLocationDocumentsReferenceIdPath(project: string, location: string, referenceId: string): string;
    /**
     * Parse the project from ProjectLocationDocumentsReferenceId resource.
     *
     * @param {string} projectLocationDocumentsReferenceIdName
     *   A fully-qualified path representing project_location_documents_reference_id resource.
     * @returns {string} A string representing the project.
     */
    matchProjectFromProjectLocationDocumentsReferenceIdName(projectLocationDocumentsReferenceIdName: string): string | number;
    /**
     * Parse the location from ProjectLocationDocumentsReferenceId resource.
     *
     * @param {string} projectLocationDocumentsReferenceIdName
     *   A fully-qualified path representing project_location_documents_reference_id resource.
     * @returns {string} A string representing the location.
     */
    matchLocationFromProjectLocationDocumentsReferenceIdName(projectLocationDocumentsReferenceIdName: string): string | number;
    /**
     * Parse the reference_id from ProjectLocationDocumentsReferenceId resource.
     *
     * @param {string} projectLocationDocumentsReferenceIdName
     *   A fully-qualified path representing project_location_documents_reference_id resource.
     * @returns {string} A string representing the reference_id.
     */
    matchReferenceIdFromProjectLocationDocumentsReferenceIdName(projectLocationDocumentsReferenceIdName: string): string | number;
    /**
     * Return a fully-qualified ruleSet resource name string.
     *
     * @param {string} project
     * @param {string} location
     * @param {string} rule_set
     * @returns {string} Resource name string.
     */
    ruleSetPath(project: string, location: string, ruleSet: string): string;
    /**
     * Parse the project from RuleSet resource.
     *
     * @param {string} ruleSetName
     *   A fully-qualified path representing RuleSet resource.
     * @returns {string} A string representing the project.
     */
    matchProjectFromRuleSetName(ruleSetName: string): string | number;
    /**
     * Parse the location from RuleSet resource.
     *
     * @param {string} ruleSetName
     *   A fully-qualified path representing RuleSet resource.
     * @returns {string} A string representing the location.
     */
    matchLocationFromRuleSetName(ruleSetName: string): string | number;
    /**
     * Parse the rule_set from RuleSet resource.
     *
     * @param {string} ruleSetName
     *   A fully-qualified path representing RuleSet resource.
     * @returns {string} A string representing the rule_set.
     */
    matchRuleSetFromRuleSetName(ruleSetName: string): string | number;
    /**
     * Return a fully-qualified synonymSet resource name string.
     *
     * @param {string} project
     * @param {string} location
     * @param {string} context
     * @returns {string} Resource name string.
     */
    synonymSetPath(project: string, location: string, context: string): string;
    /**
     * Parse the project from SynonymSet resource.
     *
     * @param {string} synonymSetName
     *   A fully-qualified path representing SynonymSet resource.
     * @returns {string} A string representing the project.
     */
    matchProjectFromSynonymSetName(synonymSetName: string): string | number;
    /**
     * Parse the location from SynonymSet resource.
     *
     * @param {string} synonymSetName
     *   A fully-qualified path representing SynonymSet resource.
     * @returns {string} A string representing the location.
     */
    matchLocationFromSynonymSetName(synonymSetName: string): string | number;
    /**
     * Parse the context from SynonymSet resource.
     *
     * @param {string} synonymSetName
     *   A fully-qualified path representing SynonymSet resource.
     * @returns {string} A string representing the context.
     */
    matchContextFromSynonymSetName(synonymSetName: string): string | number;
    /**
     * Terminate the gRPC channel and close the client.
     *
     * The client will no longer be usable and all future behavior is undefined.
     * @returns {Promise} A promise that resolves when the client is closed.
     */
    close(): Promise<void>;
}
