// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import type {protobuf as $protobuf} from "google-gax";
import Long = require("long");
/** Namespace google. */
export namespace google {

    /** Namespace cloud. */
    namespace cloud {

        /** Namespace contentwarehouse. */
        namespace contentwarehouse {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a CreateDocumentMetadata. */
                interface ICreateDocumentMetadata {
                }

                /** Represents a CreateDocumentMetadata. */
                class CreateDocumentMetadata implements ICreateDocumentMetadata {

                    /**
                     * Constructs a new CreateDocumentMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentMetadata);

                    /**
                     * Creates a new CreateDocumentMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateDocumentMetadata instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentMetadata): google.cloud.contentwarehouse.v1.CreateDocumentMetadata;

                    /**
                     * Encodes the specified CreateDocumentMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentMetadata.verify|verify} messages.
                     * @param message CreateDocumentMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICreateDocumentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateDocumentMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentMetadata.verify|verify} messages.
                     * @param message CreateDocumentMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICreateDocumentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateDocumentMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateDocumentMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CreateDocumentMetadata;

                    /**
                     * Decodes a CreateDocumentMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateDocumentMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CreateDocumentMetadata;

                    /**
                     * Verifies a CreateDocumentMetadata message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateDocumentMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateDocumentMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CreateDocumentMetadata;

                    /**
                     * Creates a plain object from a CreateDocumentMetadata message. Also converts values to other types if specified.
                     * @param message CreateDocumentMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CreateDocumentMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateDocumentMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateDocumentMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateDocumentMetadata. */
                interface IUpdateDocumentMetadata {
                }

                /** Represents an UpdateDocumentMetadata. */
                class UpdateDocumentMetadata implements IUpdateDocumentMetadata {

                    /**
                     * Constructs a new UpdateDocumentMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IUpdateDocumentMetadata);

                    /**
                     * Creates a new UpdateDocumentMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateDocumentMetadata instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IUpdateDocumentMetadata): google.cloud.contentwarehouse.v1.UpdateDocumentMetadata;

                    /**
                     * Encodes the specified UpdateDocumentMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateDocumentMetadata.verify|verify} messages.
                     * @param message UpdateDocumentMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IUpdateDocumentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateDocumentMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateDocumentMetadata.verify|verify} messages.
                     * @param message UpdateDocumentMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IUpdateDocumentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateDocumentMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateDocumentMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.UpdateDocumentMetadata;

                    /**
                     * Decodes an UpdateDocumentMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateDocumentMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.UpdateDocumentMetadata;

                    /**
                     * Verifies an UpdateDocumentMetadata message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateDocumentMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateDocumentMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.UpdateDocumentMetadata;

                    /**
                     * Creates a plain object from an UpdateDocumentMetadata message. Also converts values to other types if specified.
                     * @param message UpdateDocumentMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.UpdateDocumentMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateDocumentMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateDocumentMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestMetadata. */
                interface IRequestMetadata {

                    /** RequestMetadata userInfo */
                    userInfo?: (google.cloud.contentwarehouse.v1.IUserInfo|null);
                }

                /** Represents a RequestMetadata. */
                class RequestMetadata implements IRequestMetadata {

                    /**
                     * Constructs a new RequestMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRequestMetadata);

                    /** RequestMetadata userInfo. */
                    public userInfo?: (google.cloud.contentwarehouse.v1.IUserInfo|null);

                    /**
                     * Creates a new RequestMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestMetadata instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRequestMetadata): google.cloud.contentwarehouse.v1.RequestMetadata;

                    /**
                     * Encodes the specified RequestMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RequestMetadata.verify|verify} messages.
                     * @param message RequestMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRequestMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RequestMetadata.verify|verify} messages.
                     * @param message RequestMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRequestMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RequestMetadata;

                    /**
                     * Decodes a RequestMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RequestMetadata;

                    /**
                     * Verifies a RequestMetadata message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RequestMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RequestMetadata;

                    /**
                     * Creates a plain object from a RequestMetadata message. Also converts values to other types if specified.
                     * @param message RequestMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RequestMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResponseMetadata. */
                interface IResponseMetadata {

                    /** ResponseMetadata requestId */
                    requestId?: (string|null);
                }

                /** Represents a ResponseMetadata. */
                class ResponseMetadata implements IResponseMetadata {

                    /**
                     * Constructs a new ResponseMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IResponseMetadata);

                    /** ResponseMetadata requestId. */
                    public requestId: string;

                    /**
                     * Creates a new ResponseMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResponseMetadata instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IResponseMetadata): google.cloud.contentwarehouse.v1.ResponseMetadata;

                    /**
                     * Encodes the specified ResponseMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ResponseMetadata.verify|verify} messages.
                     * @param message ResponseMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IResponseMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResponseMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ResponseMetadata.verify|verify} messages.
                     * @param message ResponseMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IResponseMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResponseMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResponseMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ResponseMetadata;

                    /**
                     * Decodes a ResponseMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResponseMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ResponseMetadata;

                    /**
                     * Verifies a ResponseMetadata message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ResponseMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResponseMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ResponseMetadata;

                    /**
                     * Creates a plain object from a ResponseMetadata message. Also converts values to other types if specified.
                     * @param message ResponseMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ResponseMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResponseMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResponseMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserInfo. */
                interface IUserInfo {

                    /** UserInfo id */
                    id?: (string|null);

                    /** UserInfo groupIds */
                    groupIds?: (string[]|null);
                }

                /** Represents a UserInfo. */
                class UserInfo implements IUserInfo {

                    /**
                     * Constructs a new UserInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IUserInfo);

                    /** UserInfo id. */
                    public id: string;

                    /** UserInfo groupIds. */
                    public groupIds: string[];

                    /**
                     * Creates a new UserInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserInfo instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IUserInfo): google.cloud.contentwarehouse.v1.UserInfo;

                    /**
                     * Encodes the specified UserInfo message. Does not implicitly {@link google.cloud.contentwarehouse.v1.UserInfo.verify|verify} messages.
                     * @param message UserInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IUserInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserInfo message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.UserInfo.verify|verify} messages.
                     * @param message UserInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IUserInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserInfo
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.UserInfo;

                    /**
                     * Decodes a UserInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserInfo
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.UserInfo;

                    /**
                     * Verifies a UserInfo message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a UserInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.UserInfo;

                    /**
                     * Creates a plain object from a UserInfo message. Also converts values to other types if specified.
                     * @param message UserInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.UserInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateOptions. */
                interface IUpdateOptions {

                    /** UpdateOptions updateType */
                    updateType?: (google.cloud.contentwarehouse.v1.UpdateType|keyof typeof google.cloud.contentwarehouse.v1.UpdateType|null);

                    /** UpdateOptions updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** UpdateOptions mergeFieldsOptions */
                    mergeFieldsOptions?: (google.cloud.contentwarehouse.v1.IMergeFieldsOptions|null);
                }

                /** Represents an UpdateOptions. */
                class UpdateOptions implements IUpdateOptions {

                    /**
                     * Constructs a new UpdateOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IUpdateOptions);

                    /** UpdateOptions updateType. */
                    public updateType: (google.cloud.contentwarehouse.v1.UpdateType|keyof typeof google.cloud.contentwarehouse.v1.UpdateType);

                    /** UpdateOptions updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** UpdateOptions mergeFieldsOptions. */
                    public mergeFieldsOptions?: (google.cloud.contentwarehouse.v1.IMergeFieldsOptions|null);

                    /**
                     * Creates a new UpdateOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IUpdateOptions): google.cloud.contentwarehouse.v1.UpdateOptions;

                    /**
                     * Encodes the specified UpdateOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateOptions.verify|verify} messages.
                     * @param message UpdateOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IUpdateOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateOptions.verify|verify} messages.
                     * @param message UpdateOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IUpdateOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.UpdateOptions;

                    /**
                     * Decodes an UpdateOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.UpdateOptions;

                    /**
                     * Verifies an UpdateOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.UpdateOptions;

                    /**
                     * Creates a plain object from an UpdateOptions message. Also converts values to other types if specified.
                     * @param message UpdateOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.UpdateOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MergeFieldsOptions. */
                interface IMergeFieldsOptions {

                    /** MergeFieldsOptions replaceMessageFields */
                    replaceMessageFields?: (boolean|null);

                    /** MergeFieldsOptions replaceRepeatedFields */
                    replaceRepeatedFields?: (boolean|null);
                }

                /** Represents a MergeFieldsOptions. */
                class MergeFieldsOptions implements IMergeFieldsOptions {

                    /**
                     * Constructs a new MergeFieldsOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IMergeFieldsOptions);

                    /** MergeFieldsOptions replaceMessageFields. */
                    public replaceMessageFields?: (boolean|null);

                    /** MergeFieldsOptions replaceRepeatedFields. */
                    public replaceRepeatedFields?: (boolean|null);

                    /** MergeFieldsOptions _replaceMessageFields. */
                    public _replaceMessageFields?: "replaceMessageFields";

                    /** MergeFieldsOptions _replaceRepeatedFields. */
                    public _replaceRepeatedFields?: "replaceRepeatedFields";

                    /**
                     * Creates a new MergeFieldsOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MergeFieldsOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IMergeFieldsOptions): google.cloud.contentwarehouse.v1.MergeFieldsOptions;

                    /**
                     * Encodes the specified MergeFieldsOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.MergeFieldsOptions.verify|verify} messages.
                     * @param message MergeFieldsOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IMergeFieldsOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MergeFieldsOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.MergeFieldsOptions.verify|verify} messages.
                     * @param message MergeFieldsOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IMergeFieldsOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MergeFieldsOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MergeFieldsOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.MergeFieldsOptions;

                    /**
                     * Decodes a MergeFieldsOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MergeFieldsOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.MergeFieldsOptions;

                    /**
                     * Verifies a MergeFieldsOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a MergeFieldsOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MergeFieldsOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.MergeFieldsOptions;

                    /**
                     * Creates a plain object from a MergeFieldsOptions message. Also converts values to other types if specified.
                     * @param message MergeFieldsOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.MergeFieldsOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MergeFieldsOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MergeFieldsOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** UpdateType enum. */
                enum UpdateType {
                    UPDATE_TYPE_UNSPECIFIED = 0,
                    UPDATE_TYPE_REPLACE = 1,
                    UPDATE_TYPE_MERGE = 2,
                    UPDATE_TYPE_INSERT_PROPERTIES_BY_NAMES = 3,
                    UPDATE_TYPE_REPLACE_PROPERTIES_BY_NAMES = 4,
                    UPDATE_TYPE_DELETE_PROPERTIES_BY_NAMES = 5,
                    UPDATE_TYPE_MERGE_AND_REPLACE_OR_INSERT_PROPERTIES_BY_NAMES = 6
                }

                /** DatabaseType enum. */
                enum DatabaseType {
                    DB_UNKNOWN = 0,
                    DB_INFRA_SPANNER = 1,
                    DB_CLOUD_SQL_POSTGRES = 2
                }

                /** AccessControlMode enum. */
                enum AccessControlMode {
                    ACL_MODE_UNKNOWN = 0,
                    ACL_MODE_UNIVERSAL_ACCESS = 1,
                    ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_BYOID = 2,
                    ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI = 3
                }

                /** DocumentCreatorDefaultRole enum. */
                enum DocumentCreatorDefaultRole {
                    DOCUMENT_CREATOR_DEFAULT_ROLE_UNSPECIFIED = 0,
                    DOCUMENT_ADMIN = 1,
                    DOCUMENT_EDITOR = 2,
                    DOCUMENT_VIEWER = 3
                }

                /** Properties of a Document. */
                interface IDocument {

                    /** Document name */
                    name?: (string|null);

                    /** Document referenceId */
                    referenceId?: (string|null);

                    /** Document displayName */
                    displayName?: (string|null);

                    /** Document title */
                    title?: (string|null);

                    /** Document displayUri */
                    displayUri?: (string|null);

                    /** Document documentSchemaName */
                    documentSchemaName?: (string|null);

                    /** Document plainText */
                    plainText?: (string|null);

                    /** Document cloudAiDocument */
                    cloudAiDocument?: (google.cloud.documentai.v1.IDocument|null);

                    /** Document structuredContentUri */
                    structuredContentUri?: (string|null);

                    /** Document rawDocumentPath */
                    rawDocumentPath?: (string|null);

                    /** Document inlineRawDocument */
                    inlineRawDocument?: (Uint8Array|string|null);

                    /** Document properties */
                    properties?: (google.cloud.contentwarehouse.v1.IProperty[]|null);

                    /** Document updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** Document createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** Document rawDocumentFileType */
                    rawDocumentFileType?: (google.cloud.contentwarehouse.v1.RawDocumentFileType|keyof typeof google.cloud.contentwarehouse.v1.RawDocumentFileType|null);

                    /** Document asyncEnabled */
                    asyncEnabled?: (boolean|null);

                    /** Document contentCategory */
                    contentCategory?: (google.cloud.contentwarehouse.v1.ContentCategory|keyof typeof google.cloud.contentwarehouse.v1.ContentCategory|null);

                    /** Document textExtractionDisabled */
                    textExtractionDisabled?: (boolean|null);

                    /** Document textExtractionEnabled */
                    textExtractionEnabled?: (boolean|null);

                    /** Document creator */
                    creator?: (string|null);

                    /** Document updater */
                    updater?: (string|null);

                    /** Document dispositionTime */
                    dispositionTime?: (google.protobuf.ITimestamp|null);

                    /** Document legalHold */
                    legalHold?: (boolean|null);
                }

                /** Represents a Document. */
                class Document implements IDocument {

                    /**
                     * Constructs a new Document.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDocument);

                    /** Document name. */
                    public name: string;

                    /** Document referenceId. */
                    public referenceId: string;

                    /** Document displayName. */
                    public displayName: string;

                    /** Document title. */
                    public title: string;

                    /** Document displayUri. */
                    public displayUri: string;

                    /** Document documentSchemaName. */
                    public documentSchemaName: string;

                    /** Document plainText. */
                    public plainText?: (string|null);

                    /** Document cloudAiDocument. */
                    public cloudAiDocument?: (google.cloud.documentai.v1.IDocument|null);

                    /** Document structuredContentUri. */
                    public structuredContentUri: string;

                    /** Document rawDocumentPath. */
                    public rawDocumentPath?: (string|null);

                    /** Document inlineRawDocument. */
                    public inlineRawDocument?: (Uint8Array|string|null);

                    /** Document properties. */
                    public properties: google.cloud.contentwarehouse.v1.IProperty[];

                    /** Document updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** Document createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** Document rawDocumentFileType. */
                    public rawDocumentFileType: (google.cloud.contentwarehouse.v1.RawDocumentFileType|keyof typeof google.cloud.contentwarehouse.v1.RawDocumentFileType);

                    /** Document asyncEnabled. */
                    public asyncEnabled: boolean;

                    /** Document contentCategory. */
                    public contentCategory: (google.cloud.contentwarehouse.v1.ContentCategory|keyof typeof google.cloud.contentwarehouse.v1.ContentCategory);

                    /** Document textExtractionDisabled. */
                    public textExtractionDisabled: boolean;

                    /** Document textExtractionEnabled. */
                    public textExtractionEnabled: boolean;

                    /** Document creator. */
                    public creator: string;

                    /** Document updater. */
                    public updater: string;

                    /** Document dispositionTime. */
                    public dispositionTime?: (google.protobuf.ITimestamp|null);

                    /** Document legalHold. */
                    public legalHold: boolean;

                    /** Document structuredContent. */
                    public structuredContent?: ("plainText"|"cloudAiDocument");

                    /** Document rawDocument. */
                    public rawDocument?: ("rawDocumentPath"|"inlineRawDocument");

                    /**
                     * Creates a new Document instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Document instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDocument): google.cloud.contentwarehouse.v1.Document;

                    /**
                     * Encodes the specified Document message. Does not implicitly {@link google.cloud.contentwarehouse.v1.Document.verify|verify} messages.
                     * @param message Document message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Document message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.Document.verify|verify} messages.
                     * @param message Document message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Document message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Document
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.Document;

                    /**
                     * Decodes a Document message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Document
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.Document;

                    /**
                     * Verifies a Document message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Document message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Document
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.Document;

                    /**
                     * Creates a plain object from a Document message. Also converts values to other types if specified.
                     * @param message Document
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.Document, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Document to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Document
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DocumentReference. */
                interface IDocumentReference {

                    /** DocumentReference documentName */
                    documentName?: (string|null);

                    /** DocumentReference displayName */
                    displayName?: (string|null);

                    /** DocumentReference snippet */
                    snippet?: (string|null);

                    /** DocumentReference documentIsFolder */
                    documentIsFolder?: (boolean|null);

                    /** DocumentReference updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentReference createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentReference deleteTime */
                    deleteTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentReference documentIsRetentionFolder */
                    documentIsRetentionFolder?: (boolean|null);

                    /** DocumentReference documentIsLegalHoldFolder */
                    documentIsLegalHoldFolder?: (boolean|null);
                }

                /** Represents a DocumentReference. */
                class DocumentReference implements IDocumentReference {

                    /**
                     * Constructs a new DocumentReference.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDocumentReference);

                    /** DocumentReference documentName. */
                    public documentName: string;

                    /** DocumentReference displayName. */
                    public displayName: string;

                    /** DocumentReference snippet. */
                    public snippet: string;

                    /** DocumentReference documentIsFolder. */
                    public documentIsFolder: boolean;

                    /** DocumentReference updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentReference createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentReference deleteTime. */
                    public deleteTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentReference documentIsRetentionFolder. */
                    public documentIsRetentionFolder: boolean;

                    /** DocumentReference documentIsLegalHoldFolder. */
                    public documentIsLegalHoldFolder: boolean;

                    /**
                     * Creates a new DocumentReference instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DocumentReference instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDocumentReference): google.cloud.contentwarehouse.v1.DocumentReference;

                    /**
                     * Encodes the specified DocumentReference message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DocumentReference.verify|verify} messages.
                     * @param message DocumentReference message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDocumentReference, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DocumentReference message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DocumentReference.verify|verify} messages.
                     * @param message DocumentReference message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDocumentReference, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DocumentReference message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DocumentReference
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DocumentReference;

                    /**
                     * Decodes a DocumentReference message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DocumentReference
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DocumentReference;

                    /**
                     * Verifies a DocumentReference message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DocumentReference message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DocumentReference
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DocumentReference;

                    /**
                     * Creates a plain object from a DocumentReference message. Also converts values to other types if specified.
                     * @param message DocumentReference
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DocumentReference, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DocumentReference to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DocumentReference
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Property. */
                interface IProperty {

                    /** Property name */
                    name?: (string|null);

                    /** Property integerValues */
                    integerValues?: (google.cloud.contentwarehouse.v1.IIntegerArray|null);

                    /** Property floatValues */
                    floatValues?: (google.cloud.contentwarehouse.v1.IFloatArray|null);

                    /** Property textValues */
                    textValues?: (google.cloud.contentwarehouse.v1.ITextArray|null);

                    /** Property enumValues */
                    enumValues?: (google.cloud.contentwarehouse.v1.IEnumArray|null);

                    /** Property propertyValues */
                    propertyValues?: (google.cloud.contentwarehouse.v1.IPropertyArray|null);

                    /** Property dateTimeValues */
                    dateTimeValues?: (google.cloud.contentwarehouse.v1.IDateTimeArray|null);

                    /** Property mapProperty */
                    mapProperty?: (google.cloud.contentwarehouse.v1.IMapProperty|null);

                    /** Property timestampValues */
                    timestampValues?: (google.cloud.contentwarehouse.v1.ITimestampArray|null);
                }

                /** Represents a Property. */
                class Property implements IProperty {

                    /**
                     * Constructs a new Property.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IProperty);

                    /** Property name. */
                    public name: string;

                    /** Property integerValues. */
                    public integerValues?: (google.cloud.contentwarehouse.v1.IIntegerArray|null);

                    /** Property floatValues. */
                    public floatValues?: (google.cloud.contentwarehouse.v1.IFloatArray|null);

                    /** Property textValues. */
                    public textValues?: (google.cloud.contentwarehouse.v1.ITextArray|null);

                    /** Property enumValues. */
                    public enumValues?: (google.cloud.contentwarehouse.v1.IEnumArray|null);

                    /** Property propertyValues. */
                    public propertyValues?: (google.cloud.contentwarehouse.v1.IPropertyArray|null);

                    /** Property dateTimeValues. */
                    public dateTimeValues?: (google.cloud.contentwarehouse.v1.IDateTimeArray|null);

                    /** Property mapProperty. */
                    public mapProperty?: (google.cloud.contentwarehouse.v1.IMapProperty|null);

                    /** Property timestampValues. */
                    public timestampValues?: (google.cloud.contentwarehouse.v1.ITimestampArray|null);

                    /** Property values. */
                    public values?: ("integerValues"|"floatValues"|"textValues"|"enumValues"|"propertyValues"|"dateTimeValues"|"mapProperty"|"timestampValues");

                    /**
                     * Creates a new Property instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Property instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IProperty): google.cloud.contentwarehouse.v1.Property;

                    /**
                     * Encodes the specified Property message. Does not implicitly {@link google.cloud.contentwarehouse.v1.Property.verify|verify} messages.
                     * @param message Property message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IProperty, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Property message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.Property.verify|verify} messages.
                     * @param message Property message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IProperty, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Property message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Property
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.Property;

                    /**
                     * Decodes a Property message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Property
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.Property;

                    /**
                     * Verifies a Property message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Property message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Property
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.Property;

                    /**
                     * Creates a plain object from a Property message. Also converts values to other types if specified.
                     * @param message Property
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.Property, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Property to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Property
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an IntegerArray. */
                interface IIntegerArray {

                    /** IntegerArray values */
                    values?: (number[]|null);
                }

                /** Represents an IntegerArray. */
                class IntegerArray implements IIntegerArray {

                    /**
                     * Constructs a new IntegerArray.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IIntegerArray);

                    /** IntegerArray values. */
                    public values: number[];

                    /**
                     * Creates a new IntegerArray instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns IntegerArray instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IIntegerArray): google.cloud.contentwarehouse.v1.IntegerArray;

                    /**
                     * Encodes the specified IntegerArray message. Does not implicitly {@link google.cloud.contentwarehouse.v1.IntegerArray.verify|verify} messages.
                     * @param message IntegerArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IIntegerArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified IntegerArray message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.IntegerArray.verify|verify} messages.
                     * @param message IntegerArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IIntegerArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an IntegerArray message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns IntegerArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.IntegerArray;

                    /**
                     * Decodes an IntegerArray message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns IntegerArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.IntegerArray;

                    /**
                     * Verifies an IntegerArray message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an IntegerArray message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns IntegerArray
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.IntegerArray;

                    /**
                     * Creates a plain object from an IntegerArray message. Also converts values to other types if specified.
                     * @param message IntegerArray
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.IntegerArray, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this IntegerArray to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for IntegerArray
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FloatArray. */
                interface IFloatArray {

                    /** FloatArray values */
                    values?: (number[]|null);
                }

                /** Represents a FloatArray. */
                class FloatArray implements IFloatArray {

                    /**
                     * Constructs a new FloatArray.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IFloatArray);

                    /** FloatArray values. */
                    public values: number[];

                    /**
                     * Creates a new FloatArray instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FloatArray instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IFloatArray): google.cloud.contentwarehouse.v1.FloatArray;

                    /**
                     * Encodes the specified FloatArray message. Does not implicitly {@link google.cloud.contentwarehouse.v1.FloatArray.verify|verify} messages.
                     * @param message FloatArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IFloatArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FloatArray message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.FloatArray.verify|verify} messages.
                     * @param message FloatArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IFloatArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FloatArray message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FloatArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.FloatArray;

                    /**
                     * Decodes a FloatArray message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FloatArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.FloatArray;

                    /**
                     * Verifies a FloatArray message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a FloatArray message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FloatArray
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.FloatArray;

                    /**
                     * Creates a plain object from a FloatArray message. Also converts values to other types if specified.
                     * @param message FloatArray
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.FloatArray, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FloatArray to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FloatArray
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TextArray. */
                interface ITextArray {

                    /** TextArray values */
                    values?: (string[]|null);
                }

                /** Represents a TextArray. */
                class TextArray implements ITextArray {

                    /**
                     * Constructs a new TextArray.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ITextArray);

                    /** TextArray values. */
                    public values: string[];

                    /**
                     * Creates a new TextArray instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TextArray instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ITextArray): google.cloud.contentwarehouse.v1.TextArray;

                    /**
                     * Encodes the specified TextArray message. Does not implicitly {@link google.cloud.contentwarehouse.v1.TextArray.verify|verify} messages.
                     * @param message TextArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ITextArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TextArray message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.TextArray.verify|verify} messages.
                     * @param message TextArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ITextArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TextArray message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TextArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.TextArray;

                    /**
                     * Decodes a TextArray message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TextArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.TextArray;

                    /**
                     * Verifies a TextArray message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a TextArray message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TextArray
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.TextArray;

                    /**
                     * Creates a plain object from a TextArray message. Also converts values to other types if specified.
                     * @param message TextArray
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.TextArray, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TextArray to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TextArray
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an EnumArray. */
                interface IEnumArray {

                    /** EnumArray values */
                    values?: (string[]|null);
                }

                /** Represents an EnumArray. */
                class EnumArray implements IEnumArray {

                    /**
                     * Constructs a new EnumArray.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IEnumArray);

                    /** EnumArray values. */
                    public values: string[];

                    /**
                     * Creates a new EnumArray instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns EnumArray instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IEnumArray): google.cloud.contentwarehouse.v1.EnumArray;

                    /**
                     * Encodes the specified EnumArray message. Does not implicitly {@link google.cloud.contentwarehouse.v1.EnumArray.verify|verify} messages.
                     * @param message EnumArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IEnumArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified EnumArray message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.EnumArray.verify|verify} messages.
                     * @param message EnumArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IEnumArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an EnumArray message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns EnumArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.EnumArray;

                    /**
                     * Decodes an EnumArray message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns EnumArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.EnumArray;

                    /**
                     * Verifies an EnumArray message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an EnumArray message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns EnumArray
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.EnumArray;

                    /**
                     * Creates a plain object from an EnumArray message. Also converts values to other types if specified.
                     * @param message EnumArray
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.EnumArray, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this EnumArray to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for EnumArray
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DateTimeArray. */
                interface IDateTimeArray {

                    /** DateTimeArray values */
                    values?: (google.type.IDateTime[]|null);
                }

                /** Represents a DateTimeArray. */
                class DateTimeArray implements IDateTimeArray {

                    /**
                     * Constructs a new DateTimeArray.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDateTimeArray);

                    /** DateTimeArray values. */
                    public values: google.type.IDateTime[];

                    /**
                     * Creates a new DateTimeArray instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DateTimeArray instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDateTimeArray): google.cloud.contentwarehouse.v1.DateTimeArray;

                    /**
                     * Encodes the specified DateTimeArray message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DateTimeArray.verify|verify} messages.
                     * @param message DateTimeArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDateTimeArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DateTimeArray message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DateTimeArray.verify|verify} messages.
                     * @param message DateTimeArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDateTimeArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DateTimeArray message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DateTimeArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DateTimeArray;

                    /**
                     * Decodes a DateTimeArray message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DateTimeArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DateTimeArray;

                    /**
                     * Verifies a DateTimeArray message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DateTimeArray message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DateTimeArray
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DateTimeArray;

                    /**
                     * Creates a plain object from a DateTimeArray message. Also converts values to other types if specified.
                     * @param message DateTimeArray
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DateTimeArray, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DateTimeArray to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DateTimeArray
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimestampArray. */
                interface ITimestampArray {

                    /** TimestampArray values */
                    values?: (google.cloud.contentwarehouse.v1.ITimestampValue[]|null);
                }

                /** Represents a TimestampArray. */
                class TimestampArray implements ITimestampArray {

                    /**
                     * Constructs a new TimestampArray.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ITimestampArray);

                    /** TimestampArray values. */
                    public values: google.cloud.contentwarehouse.v1.ITimestampValue[];

                    /**
                     * Creates a new TimestampArray instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimestampArray instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ITimestampArray): google.cloud.contentwarehouse.v1.TimestampArray;

                    /**
                     * Encodes the specified TimestampArray message. Does not implicitly {@link google.cloud.contentwarehouse.v1.TimestampArray.verify|verify} messages.
                     * @param message TimestampArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ITimestampArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimestampArray message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.TimestampArray.verify|verify} messages.
                     * @param message TimestampArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ITimestampArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimestampArray message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimestampArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.TimestampArray;

                    /**
                     * Decodes a TimestampArray message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimestampArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.TimestampArray;

                    /**
                     * Verifies a TimestampArray message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a TimestampArray message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimestampArray
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.TimestampArray;

                    /**
                     * Creates a plain object from a TimestampArray message. Also converts values to other types if specified.
                     * @param message TimestampArray
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.TimestampArray, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimestampArray to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimestampArray
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimestampValue. */
                interface ITimestampValue {

                    /** TimestampValue timestampValue */
                    timestampValue?: (google.protobuf.ITimestamp|null);

                    /** TimestampValue textValue */
                    textValue?: (string|null);
                }

                /** Represents a TimestampValue. */
                class TimestampValue implements ITimestampValue {

                    /**
                     * Constructs a new TimestampValue.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ITimestampValue);

                    /** TimestampValue timestampValue. */
                    public timestampValue?: (google.protobuf.ITimestamp|null);

                    /** TimestampValue textValue. */
                    public textValue?: (string|null);

                    /** TimestampValue value. */
                    public value?: ("timestampValue"|"textValue");

                    /**
                     * Creates a new TimestampValue instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimestampValue instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ITimestampValue): google.cloud.contentwarehouse.v1.TimestampValue;

                    /**
                     * Encodes the specified TimestampValue message. Does not implicitly {@link google.cloud.contentwarehouse.v1.TimestampValue.verify|verify} messages.
                     * @param message TimestampValue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ITimestampValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimestampValue message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.TimestampValue.verify|verify} messages.
                     * @param message TimestampValue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ITimestampValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimestampValue message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimestampValue
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.TimestampValue;

                    /**
                     * Decodes a TimestampValue message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimestampValue
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.TimestampValue;

                    /**
                     * Verifies a TimestampValue message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a TimestampValue message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimestampValue
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.TimestampValue;

                    /**
                     * Creates a plain object from a TimestampValue message. Also converts values to other types if specified.
                     * @param message TimestampValue
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.TimestampValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimestampValue to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimestampValue
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PropertyArray. */
                interface IPropertyArray {

                    /** PropertyArray properties */
                    properties?: (google.cloud.contentwarehouse.v1.IProperty[]|null);
                }

                /** Represents a PropertyArray. */
                class PropertyArray implements IPropertyArray {

                    /**
                     * Constructs a new PropertyArray.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IPropertyArray);

                    /** PropertyArray properties. */
                    public properties: google.cloud.contentwarehouse.v1.IProperty[];

                    /**
                     * Creates a new PropertyArray instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PropertyArray instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IPropertyArray): google.cloud.contentwarehouse.v1.PropertyArray;

                    /**
                     * Encodes the specified PropertyArray message. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyArray.verify|verify} messages.
                     * @param message PropertyArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IPropertyArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PropertyArray message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyArray.verify|verify} messages.
                     * @param message PropertyArray message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IPropertyArray, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PropertyArray message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PropertyArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.PropertyArray;

                    /**
                     * Decodes a PropertyArray message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PropertyArray
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.PropertyArray;

                    /**
                     * Verifies a PropertyArray message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PropertyArray message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PropertyArray
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.PropertyArray;

                    /**
                     * Creates a plain object from a PropertyArray message. Also converts values to other types if specified.
                     * @param message PropertyArray
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.PropertyArray, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PropertyArray to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PropertyArray
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MapProperty. */
                interface IMapProperty {

                    /** MapProperty fields */
                    fields?: ({ [k: string]: google.cloud.contentwarehouse.v1.IValue }|null);
                }

                /** Represents a MapProperty. */
                class MapProperty implements IMapProperty {

                    /**
                     * Constructs a new MapProperty.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IMapProperty);

                    /** MapProperty fields. */
                    public fields: { [k: string]: google.cloud.contentwarehouse.v1.IValue };

                    /**
                     * Creates a new MapProperty instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MapProperty instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IMapProperty): google.cloud.contentwarehouse.v1.MapProperty;

                    /**
                     * Encodes the specified MapProperty message. Does not implicitly {@link google.cloud.contentwarehouse.v1.MapProperty.verify|verify} messages.
                     * @param message MapProperty message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IMapProperty, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MapProperty message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.MapProperty.verify|verify} messages.
                     * @param message MapProperty message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IMapProperty, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MapProperty message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MapProperty
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.MapProperty;

                    /**
                     * Decodes a MapProperty message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MapProperty
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.MapProperty;

                    /**
                     * Verifies a MapProperty message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a MapProperty message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MapProperty
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.MapProperty;

                    /**
                     * Creates a plain object from a MapProperty message. Also converts values to other types if specified.
                     * @param message MapProperty
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.MapProperty, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MapProperty to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MapProperty
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Value. */
                interface IValue {

                    /** Value floatValue */
                    floatValue?: (number|null);

                    /** Value intValue */
                    intValue?: (number|null);

                    /** Value stringValue */
                    stringValue?: (string|null);

                    /** Value enumValue */
                    enumValue?: (google.cloud.contentwarehouse.v1.IEnumValue|null);

                    /** Value datetimeValue */
                    datetimeValue?: (google.type.IDateTime|null);

                    /** Value timestampValue */
                    timestampValue?: (google.cloud.contentwarehouse.v1.ITimestampValue|null);

                    /** Value booleanValue */
                    booleanValue?: (boolean|null);
                }

                /** Represents a Value. */
                class Value implements IValue {

                    /**
                     * Constructs a new Value.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IValue);

                    /** Value floatValue. */
                    public floatValue?: (number|null);

                    /** Value intValue. */
                    public intValue?: (number|null);

                    /** Value stringValue. */
                    public stringValue?: (string|null);

                    /** Value enumValue. */
                    public enumValue?: (google.cloud.contentwarehouse.v1.IEnumValue|null);

                    /** Value datetimeValue. */
                    public datetimeValue?: (google.type.IDateTime|null);

                    /** Value timestampValue. */
                    public timestampValue?: (google.cloud.contentwarehouse.v1.ITimestampValue|null);

                    /** Value booleanValue. */
                    public booleanValue?: (boolean|null);

                    /** Value kind. */
                    public kind?: ("floatValue"|"intValue"|"stringValue"|"enumValue"|"datetimeValue"|"timestampValue"|"booleanValue");

                    /**
                     * Creates a new Value instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Value instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IValue): google.cloud.contentwarehouse.v1.Value;

                    /**
                     * Encodes the specified Value message. Does not implicitly {@link google.cloud.contentwarehouse.v1.Value.verify|verify} messages.
                     * @param message Value message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Value message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.Value.verify|verify} messages.
                     * @param message Value message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Value message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Value
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.Value;

                    /**
                     * Decodes a Value message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Value
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.Value;

                    /**
                     * Verifies a Value message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Value message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Value
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.Value;

                    /**
                     * Creates a plain object from a Value message. Also converts values to other types if specified.
                     * @param message Value
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Value to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Value
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an EnumValue. */
                interface IEnumValue {

                    /** EnumValue value */
                    value?: (string|null);
                }

                /** Represents an EnumValue. */
                class EnumValue implements IEnumValue {

                    /**
                     * Constructs a new EnumValue.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IEnumValue);

                    /** EnumValue value. */
                    public value: string;

                    /**
                     * Creates a new EnumValue instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns EnumValue instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IEnumValue): google.cloud.contentwarehouse.v1.EnumValue;

                    /**
                     * Encodes the specified EnumValue message. Does not implicitly {@link google.cloud.contentwarehouse.v1.EnumValue.verify|verify} messages.
                     * @param message EnumValue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IEnumValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified EnumValue message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.EnumValue.verify|verify} messages.
                     * @param message EnumValue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IEnumValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an EnumValue message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns EnumValue
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.EnumValue;

                    /**
                     * Decodes an EnumValue message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns EnumValue
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.EnumValue;

                    /**
                     * Verifies an EnumValue message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an EnumValue message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns EnumValue
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.EnumValue;

                    /**
                     * Creates a plain object from an EnumValue message. Also converts values to other types if specified.
                     * @param message EnumValue
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.EnumValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this EnumValue to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for EnumValue
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** RawDocumentFileType enum. */
                enum RawDocumentFileType {
                    RAW_DOCUMENT_FILE_TYPE_UNSPECIFIED = 0,
                    RAW_DOCUMENT_FILE_TYPE_PDF = 1,
                    RAW_DOCUMENT_FILE_TYPE_DOCX = 2,
                    RAW_DOCUMENT_FILE_TYPE_XLSX = 3,
                    RAW_DOCUMENT_FILE_TYPE_PPTX = 4,
                    RAW_DOCUMENT_FILE_TYPE_TEXT = 5,
                    RAW_DOCUMENT_FILE_TYPE_TIFF = 6
                }

                /** ContentCategory enum. */
                enum ContentCategory {
                    CONTENT_CATEGORY_UNSPECIFIED = 0,
                    CONTENT_CATEGORY_IMAGE = 1,
                    CONTENT_CATEGORY_AUDIO = 2,
                    CONTENT_CATEGORY_VIDEO = 3
                }

                /** Represents a DocumentLinkService */
                class DocumentLinkService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new DocumentLinkService service.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     */
                    constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);

                    /**
                     * Creates new DocumentLinkService service using the specified rpc implementation.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     * @returns RPC service. Useful where requests and/or responses are streamed.
                     */
                    public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): DocumentLinkService;

                    /**
                     * Calls ListLinkedTargets.
                     * @param request ListLinkedTargetsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListLinkedTargetsResponse
                     */
                    public listLinkedTargets(request: google.cloud.contentwarehouse.v1.IListLinkedTargetsRequest, callback: google.cloud.contentwarehouse.v1.DocumentLinkService.ListLinkedTargetsCallback): void;

                    /**
                     * Calls ListLinkedTargets.
                     * @param request ListLinkedTargetsRequest message or plain object
                     * @returns Promise
                     */
                    public listLinkedTargets(request: google.cloud.contentwarehouse.v1.IListLinkedTargetsRequest): Promise<google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse>;

                    /**
                     * Calls ListLinkedSources.
                     * @param request ListLinkedSourcesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListLinkedSourcesResponse
                     */
                    public listLinkedSources(request: google.cloud.contentwarehouse.v1.IListLinkedSourcesRequest, callback: google.cloud.contentwarehouse.v1.DocumentLinkService.ListLinkedSourcesCallback): void;

                    /**
                     * Calls ListLinkedSources.
                     * @param request ListLinkedSourcesRequest message or plain object
                     * @returns Promise
                     */
                    public listLinkedSources(request: google.cloud.contentwarehouse.v1.IListLinkedSourcesRequest): Promise<google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse>;

                    /**
                     * Calls CreateDocumentLink.
                     * @param request CreateDocumentLinkRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DocumentLink
                     */
                    public createDocumentLink(request: google.cloud.contentwarehouse.v1.ICreateDocumentLinkRequest, callback: google.cloud.contentwarehouse.v1.DocumentLinkService.CreateDocumentLinkCallback): void;

                    /**
                     * Calls CreateDocumentLink.
                     * @param request CreateDocumentLinkRequest message or plain object
                     * @returns Promise
                     */
                    public createDocumentLink(request: google.cloud.contentwarehouse.v1.ICreateDocumentLinkRequest): Promise<google.cloud.contentwarehouse.v1.DocumentLink>;

                    /**
                     * Calls DeleteDocumentLink.
                     * @param request DeleteDocumentLinkRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteDocumentLink(request: google.cloud.contentwarehouse.v1.IDeleteDocumentLinkRequest, callback: google.cloud.contentwarehouse.v1.DocumentLinkService.DeleteDocumentLinkCallback): void;

                    /**
                     * Calls DeleteDocumentLink.
                     * @param request DeleteDocumentLinkRequest message or plain object
                     * @returns Promise
                     */
                    public deleteDocumentLink(request: google.cloud.contentwarehouse.v1.IDeleteDocumentLinkRequest): Promise<google.protobuf.Empty>;
                }

                namespace DocumentLinkService {

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentLinkService|listLinkedTargets}.
                     * @param error Error, if any
                     * @param [response] ListLinkedTargetsResponse
                     */
                    type ListLinkedTargetsCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentLinkService|listLinkedSources}.
                     * @param error Error, if any
                     * @param [response] ListLinkedSourcesResponse
                     */
                    type ListLinkedSourcesCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentLinkService|createDocumentLink}.
                     * @param error Error, if any
                     * @param [response] DocumentLink
                     */
                    type CreateDocumentLinkCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.DocumentLink) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentLinkService|deleteDocumentLink}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteDocumentLinkCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;
                }

                /** Properties of a ListLinkedTargetsResponse. */
                interface IListLinkedTargetsResponse {

                    /** ListLinkedTargetsResponse documentLinks */
                    documentLinks?: (google.cloud.contentwarehouse.v1.IDocumentLink[]|null);

                    /** ListLinkedTargetsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListLinkedTargetsResponse. */
                class ListLinkedTargetsResponse implements IListLinkedTargetsResponse {

                    /**
                     * Constructs a new ListLinkedTargetsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListLinkedTargetsResponse);

                    /** ListLinkedTargetsResponse documentLinks. */
                    public documentLinks: google.cloud.contentwarehouse.v1.IDocumentLink[];

                    /** ListLinkedTargetsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListLinkedTargetsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListLinkedTargetsResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListLinkedTargetsResponse): google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse;

                    /**
                     * Encodes the specified ListLinkedTargetsResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse.verify|verify} messages.
                     * @param message ListLinkedTargetsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListLinkedTargetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListLinkedTargetsResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse.verify|verify} messages.
                     * @param message ListLinkedTargetsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListLinkedTargetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListLinkedTargetsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListLinkedTargetsResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse;

                    /**
                     * Decodes a ListLinkedTargetsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListLinkedTargetsResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse;

                    /**
                     * Verifies a ListLinkedTargetsResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListLinkedTargetsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListLinkedTargetsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse;

                    /**
                     * Creates a plain object from a ListLinkedTargetsResponse message. Also converts values to other types if specified.
                     * @param message ListLinkedTargetsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListLinkedTargetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListLinkedTargetsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListLinkedTargetsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListLinkedTargetsRequest. */
                interface IListLinkedTargetsRequest {

                    /** ListLinkedTargetsRequest parent */
                    parent?: (string|null);

                    /** ListLinkedTargetsRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);
                }

                /** Represents a ListLinkedTargetsRequest. */
                class ListLinkedTargetsRequest implements IListLinkedTargetsRequest {

                    /**
                     * Constructs a new ListLinkedTargetsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListLinkedTargetsRequest);

                    /** ListLinkedTargetsRequest parent. */
                    public parent: string;

                    /** ListLinkedTargetsRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /**
                     * Creates a new ListLinkedTargetsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListLinkedTargetsRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListLinkedTargetsRequest): google.cloud.contentwarehouse.v1.ListLinkedTargetsRequest;

                    /**
                     * Encodes the specified ListLinkedTargetsRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListLinkedTargetsRequest.verify|verify} messages.
                     * @param message ListLinkedTargetsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListLinkedTargetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListLinkedTargetsRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListLinkedTargetsRequest.verify|verify} messages.
                     * @param message ListLinkedTargetsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListLinkedTargetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListLinkedTargetsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListLinkedTargetsRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListLinkedTargetsRequest;

                    /**
                     * Decodes a ListLinkedTargetsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListLinkedTargetsRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListLinkedTargetsRequest;

                    /**
                     * Verifies a ListLinkedTargetsRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListLinkedTargetsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListLinkedTargetsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListLinkedTargetsRequest;

                    /**
                     * Creates a plain object from a ListLinkedTargetsRequest message. Also converts values to other types if specified.
                     * @param message ListLinkedTargetsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListLinkedTargetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListLinkedTargetsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListLinkedTargetsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListLinkedSourcesResponse. */
                interface IListLinkedSourcesResponse {

                    /** ListLinkedSourcesResponse documentLinks */
                    documentLinks?: (google.cloud.contentwarehouse.v1.IDocumentLink[]|null);

                    /** ListLinkedSourcesResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListLinkedSourcesResponse. */
                class ListLinkedSourcesResponse implements IListLinkedSourcesResponse {

                    /**
                     * Constructs a new ListLinkedSourcesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListLinkedSourcesResponse);

                    /** ListLinkedSourcesResponse documentLinks. */
                    public documentLinks: google.cloud.contentwarehouse.v1.IDocumentLink[];

                    /** ListLinkedSourcesResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListLinkedSourcesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListLinkedSourcesResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListLinkedSourcesResponse): google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse;

                    /**
                     * Encodes the specified ListLinkedSourcesResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse.verify|verify} messages.
                     * @param message ListLinkedSourcesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListLinkedSourcesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListLinkedSourcesResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse.verify|verify} messages.
                     * @param message ListLinkedSourcesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListLinkedSourcesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListLinkedSourcesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListLinkedSourcesResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse;

                    /**
                     * Decodes a ListLinkedSourcesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListLinkedSourcesResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse;

                    /**
                     * Verifies a ListLinkedSourcesResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListLinkedSourcesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListLinkedSourcesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse;

                    /**
                     * Creates a plain object from a ListLinkedSourcesResponse message. Also converts values to other types if specified.
                     * @param message ListLinkedSourcesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListLinkedSourcesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListLinkedSourcesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListLinkedSourcesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListLinkedSourcesRequest. */
                interface IListLinkedSourcesRequest {

                    /** ListLinkedSourcesRequest parent */
                    parent?: (string|null);

                    /** ListLinkedSourcesRequest pageSize */
                    pageSize?: (number|null);

                    /** ListLinkedSourcesRequest pageToken */
                    pageToken?: (string|null);

                    /** ListLinkedSourcesRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);
                }

                /** Represents a ListLinkedSourcesRequest. */
                class ListLinkedSourcesRequest implements IListLinkedSourcesRequest {

                    /**
                     * Constructs a new ListLinkedSourcesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListLinkedSourcesRequest);

                    /** ListLinkedSourcesRequest parent. */
                    public parent: string;

                    /** ListLinkedSourcesRequest pageSize. */
                    public pageSize: number;

                    /** ListLinkedSourcesRequest pageToken. */
                    public pageToken: string;

                    /** ListLinkedSourcesRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /**
                     * Creates a new ListLinkedSourcesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListLinkedSourcesRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListLinkedSourcesRequest): google.cloud.contentwarehouse.v1.ListLinkedSourcesRequest;

                    /**
                     * Encodes the specified ListLinkedSourcesRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListLinkedSourcesRequest.verify|verify} messages.
                     * @param message ListLinkedSourcesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListLinkedSourcesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListLinkedSourcesRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListLinkedSourcesRequest.verify|verify} messages.
                     * @param message ListLinkedSourcesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListLinkedSourcesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListLinkedSourcesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListLinkedSourcesRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListLinkedSourcesRequest;

                    /**
                     * Decodes a ListLinkedSourcesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListLinkedSourcesRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListLinkedSourcesRequest;

                    /**
                     * Verifies a ListLinkedSourcesRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListLinkedSourcesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListLinkedSourcesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListLinkedSourcesRequest;

                    /**
                     * Creates a plain object from a ListLinkedSourcesRequest message. Also converts values to other types if specified.
                     * @param message ListLinkedSourcesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListLinkedSourcesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListLinkedSourcesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListLinkedSourcesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DocumentLink. */
                interface IDocumentLink {

                    /** DocumentLink name */
                    name?: (string|null);

                    /** DocumentLink sourceDocumentReference */
                    sourceDocumentReference?: (google.cloud.contentwarehouse.v1.IDocumentReference|null);

                    /** DocumentLink targetDocumentReference */
                    targetDocumentReference?: (google.cloud.contentwarehouse.v1.IDocumentReference|null);

                    /** DocumentLink description */
                    description?: (string|null);

                    /** DocumentLink updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentLink createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentLink state */
                    state?: (google.cloud.contentwarehouse.v1.DocumentLink.State|keyof typeof google.cloud.contentwarehouse.v1.DocumentLink.State|null);
                }

                /** Represents a DocumentLink. */
                class DocumentLink implements IDocumentLink {

                    /**
                     * Constructs a new DocumentLink.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDocumentLink);

                    /** DocumentLink name. */
                    public name: string;

                    /** DocumentLink sourceDocumentReference. */
                    public sourceDocumentReference?: (google.cloud.contentwarehouse.v1.IDocumentReference|null);

                    /** DocumentLink targetDocumentReference. */
                    public targetDocumentReference?: (google.cloud.contentwarehouse.v1.IDocumentReference|null);

                    /** DocumentLink description. */
                    public description: string;

                    /** DocumentLink updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentLink createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentLink state. */
                    public state: (google.cloud.contentwarehouse.v1.DocumentLink.State|keyof typeof google.cloud.contentwarehouse.v1.DocumentLink.State);

                    /**
                     * Creates a new DocumentLink instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DocumentLink instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDocumentLink): google.cloud.contentwarehouse.v1.DocumentLink;

                    /**
                     * Encodes the specified DocumentLink message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DocumentLink.verify|verify} messages.
                     * @param message DocumentLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDocumentLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DocumentLink message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DocumentLink.verify|verify} messages.
                     * @param message DocumentLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDocumentLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DocumentLink message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DocumentLink
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DocumentLink;

                    /**
                     * Decodes a DocumentLink message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DocumentLink
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DocumentLink;

                    /**
                     * Verifies a DocumentLink message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DocumentLink message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DocumentLink
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DocumentLink;

                    /**
                     * Creates a plain object from a DocumentLink message. Also converts values to other types if specified.
                     * @param message DocumentLink
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DocumentLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DocumentLink to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DocumentLink
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace DocumentLink {

                    /** State enum. */
                    enum State {
                        STATE_UNSPECIFIED = 0,
                        ACTIVE = 1,
                        SOFT_DELETED = 2
                    }
                }

                /** Properties of a CreateDocumentLinkRequest. */
                interface ICreateDocumentLinkRequest {

                    /** CreateDocumentLinkRequest parent */
                    parent?: (string|null);

                    /** CreateDocumentLinkRequest documentLink */
                    documentLink?: (google.cloud.contentwarehouse.v1.IDocumentLink|null);

                    /** CreateDocumentLinkRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);
                }

                /** Represents a CreateDocumentLinkRequest. */
                class CreateDocumentLinkRequest implements ICreateDocumentLinkRequest {

                    /**
                     * Constructs a new CreateDocumentLinkRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentLinkRequest);

                    /** CreateDocumentLinkRequest parent. */
                    public parent: string;

                    /** CreateDocumentLinkRequest documentLink. */
                    public documentLink?: (google.cloud.contentwarehouse.v1.IDocumentLink|null);

                    /** CreateDocumentLinkRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /**
                     * Creates a new CreateDocumentLinkRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateDocumentLinkRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentLinkRequest): google.cloud.contentwarehouse.v1.CreateDocumentLinkRequest;

                    /**
                     * Encodes the specified CreateDocumentLinkRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentLinkRequest.verify|verify} messages.
                     * @param message CreateDocumentLinkRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICreateDocumentLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateDocumentLinkRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentLinkRequest.verify|verify} messages.
                     * @param message CreateDocumentLinkRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICreateDocumentLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateDocumentLinkRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateDocumentLinkRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CreateDocumentLinkRequest;

                    /**
                     * Decodes a CreateDocumentLinkRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateDocumentLinkRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CreateDocumentLinkRequest;

                    /**
                     * Verifies a CreateDocumentLinkRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateDocumentLinkRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateDocumentLinkRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CreateDocumentLinkRequest;

                    /**
                     * Creates a plain object from a CreateDocumentLinkRequest message. Also converts values to other types if specified.
                     * @param message CreateDocumentLinkRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CreateDocumentLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateDocumentLinkRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateDocumentLinkRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteDocumentLinkRequest. */
                interface IDeleteDocumentLinkRequest {

                    /** DeleteDocumentLinkRequest name */
                    name?: (string|null);

                    /** DeleteDocumentLinkRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);
                }

                /** Represents a DeleteDocumentLinkRequest. */
                class DeleteDocumentLinkRequest implements IDeleteDocumentLinkRequest {

                    /**
                     * Constructs a new DeleteDocumentLinkRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDeleteDocumentLinkRequest);

                    /** DeleteDocumentLinkRequest name. */
                    public name: string;

                    /** DeleteDocumentLinkRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /**
                     * Creates a new DeleteDocumentLinkRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteDocumentLinkRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDeleteDocumentLinkRequest): google.cloud.contentwarehouse.v1.DeleteDocumentLinkRequest;

                    /**
                     * Encodes the specified DeleteDocumentLinkRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteDocumentLinkRequest.verify|verify} messages.
                     * @param message DeleteDocumentLinkRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDeleteDocumentLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteDocumentLinkRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteDocumentLinkRequest.verify|verify} messages.
                     * @param message DeleteDocumentLinkRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDeleteDocumentLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteDocumentLinkRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteDocumentLinkRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DeleteDocumentLinkRequest;

                    /**
                     * Decodes a DeleteDocumentLinkRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteDocumentLinkRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DeleteDocumentLinkRequest;

                    /**
                     * Verifies a DeleteDocumentLinkRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteDocumentLinkRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteDocumentLinkRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DeleteDocumentLinkRequest;

                    /**
                     * Creates a plain object from a DeleteDocumentLinkRequest message. Also converts values to other types if specified.
                     * @param message DeleteDocumentLinkRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DeleteDocumentLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteDocumentLinkRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteDocumentLinkRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DocumentSchema. */
                interface IDocumentSchema {

                    /** DocumentSchema name */
                    name?: (string|null);

                    /** DocumentSchema displayName */
                    displayName?: (string|null);

                    /** DocumentSchema propertyDefinitions */
                    propertyDefinitions?: (google.cloud.contentwarehouse.v1.IPropertyDefinition[]|null);

                    /** DocumentSchema documentIsFolder */
                    documentIsFolder?: (boolean|null);

                    /** DocumentSchema updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentSchema createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentSchema description */
                    description?: (string|null);
                }

                /** Represents a DocumentSchema. */
                class DocumentSchema implements IDocumentSchema {

                    /**
                     * Constructs a new DocumentSchema.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDocumentSchema);

                    /** DocumentSchema name. */
                    public name: string;

                    /** DocumentSchema displayName. */
                    public displayName: string;

                    /** DocumentSchema propertyDefinitions. */
                    public propertyDefinitions: google.cloud.contentwarehouse.v1.IPropertyDefinition[];

                    /** DocumentSchema documentIsFolder. */
                    public documentIsFolder: boolean;

                    /** DocumentSchema updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentSchema createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** DocumentSchema description. */
                    public description: string;

                    /**
                     * Creates a new DocumentSchema instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DocumentSchema instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDocumentSchema): google.cloud.contentwarehouse.v1.DocumentSchema;

                    /**
                     * Encodes the specified DocumentSchema message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DocumentSchema.verify|verify} messages.
                     * @param message DocumentSchema message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDocumentSchema, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DocumentSchema message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DocumentSchema.verify|verify} messages.
                     * @param message DocumentSchema message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDocumentSchema, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DocumentSchema message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DocumentSchema
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DocumentSchema;

                    /**
                     * Decodes a DocumentSchema message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DocumentSchema
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DocumentSchema;

                    /**
                     * Verifies a DocumentSchema message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DocumentSchema message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DocumentSchema
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DocumentSchema;

                    /**
                     * Creates a plain object from a DocumentSchema message. Also converts values to other types if specified.
                     * @param message DocumentSchema
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DocumentSchema, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DocumentSchema to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DocumentSchema
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PropertyDefinition. */
                interface IPropertyDefinition {

                    /** PropertyDefinition name */
                    name?: (string|null);

                    /** PropertyDefinition displayName */
                    displayName?: (string|null);

                    /** PropertyDefinition isRepeatable */
                    isRepeatable?: (boolean|null);

                    /** PropertyDefinition isFilterable */
                    isFilterable?: (boolean|null);

                    /** PropertyDefinition isSearchable */
                    isSearchable?: (boolean|null);

                    /** PropertyDefinition isMetadata */
                    isMetadata?: (boolean|null);

                    /** PropertyDefinition isRequired */
                    isRequired?: (boolean|null);

                    /** PropertyDefinition retrievalImportance */
                    retrievalImportance?: (google.cloud.contentwarehouse.v1.PropertyDefinition.RetrievalImportance|keyof typeof google.cloud.contentwarehouse.v1.PropertyDefinition.RetrievalImportance|null);

                    /** PropertyDefinition integerTypeOptions */
                    integerTypeOptions?: (google.cloud.contentwarehouse.v1.IIntegerTypeOptions|null);

                    /** PropertyDefinition floatTypeOptions */
                    floatTypeOptions?: (google.cloud.contentwarehouse.v1.IFloatTypeOptions|null);

                    /** PropertyDefinition textTypeOptions */
                    textTypeOptions?: (google.cloud.contentwarehouse.v1.ITextTypeOptions|null);

                    /** PropertyDefinition propertyTypeOptions */
                    propertyTypeOptions?: (google.cloud.contentwarehouse.v1.IPropertyTypeOptions|null);

                    /** PropertyDefinition enumTypeOptions */
                    enumTypeOptions?: (google.cloud.contentwarehouse.v1.IEnumTypeOptions|null);

                    /** PropertyDefinition dateTimeTypeOptions */
                    dateTimeTypeOptions?: (google.cloud.contentwarehouse.v1.IDateTimeTypeOptions|null);

                    /** PropertyDefinition mapTypeOptions */
                    mapTypeOptions?: (google.cloud.contentwarehouse.v1.IMapTypeOptions|null);

                    /** PropertyDefinition timestampTypeOptions */
                    timestampTypeOptions?: (google.cloud.contentwarehouse.v1.ITimestampTypeOptions|null);

                    /** PropertyDefinition schemaSources */
                    schemaSources?: (google.cloud.contentwarehouse.v1.PropertyDefinition.ISchemaSource[]|null);
                }

                /** Represents a PropertyDefinition. */
                class PropertyDefinition implements IPropertyDefinition {

                    /**
                     * Constructs a new PropertyDefinition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IPropertyDefinition);

                    /** PropertyDefinition name. */
                    public name: string;

                    /** PropertyDefinition displayName. */
                    public displayName: string;

                    /** PropertyDefinition isRepeatable. */
                    public isRepeatable: boolean;

                    /** PropertyDefinition isFilterable. */
                    public isFilterable: boolean;

                    /** PropertyDefinition isSearchable. */
                    public isSearchable: boolean;

                    /** PropertyDefinition isMetadata. */
                    public isMetadata: boolean;

                    /** PropertyDefinition isRequired. */
                    public isRequired: boolean;

                    /** PropertyDefinition retrievalImportance. */
                    public retrievalImportance: (google.cloud.contentwarehouse.v1.PropertyDefinition.RetrievalImportance|keyof typeof google.cloud.contentwarehouse.v1.PropertyDefinition.RetrievalImportance);

                    /** PropertyDefinition integerTypeOptions. */
                    public integerTypeOptions?: (google.cloud.contentwarehouse.v1.IIntegerTypeOptions|null);

                    /** PropertyDefinition floatTypeOptions. */
                    public floatTypeOptions?: (google.cloud.contentwarehouse.v1.IFloatTypeOptions|null);

                    /** PropertyDefinition textTypeOptions. */
                    public textTypeOptions?: (google.cloud.contentwarehouse.v1.ITextTypeOptions|null);

                    /** PropertyDefinition propertyTypeOptions. */
                    public propertyTypeOptions?: (google.cloud.contentwarehouse.v1.IPropertyTypeOptions|null);

                    /** PropertyDefinition enumTypeOptions. */
                    public enumTypeOptions?: (google.cloud.contentwarehouse.v1.IEnumTypeOptions|null);

                    /** PropertyDefinition dateTimeTypeOptions. */
                    public dateTimeTypeOptions?: (google.cloud.contentwarehouse.v1.IDateTimeTypeOptions|null);

                    /** PropertyDefinition mapTypeOptions. */
                    public mapTypeOptions?: (google.cloud.contentwarehouse.v1.IMapTypeOptions|null);

                    /** PropertyDefinition timestampTypeOptions. */
                    public timestampTypeOptions?: (google.cloud.contentwarehouse.v1.ITimestampTypeOptions|null);

                    /** PropertyDefinition schemaSources. */
                    public schemaSources: google.cloud.contentwarehouse.v1.PropertyDefinition.ISchemaSource[];

                    /** PropertyDefinition valueTypeOptions. */
                    public valueTypeOptions?: ("integerTypeOptions"|"floatTypeOptions"|"textTypeOptions"|"propertyTypeOptions"|"enumTypeOptions"|"dateTimeTypeOptions"|"mapTypeOptions"|"timestampTypeOptions");

                    /**
                     * Creates a new PropertyDefinition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PropertyDefinition instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IPropertyDefinition): google.cloud.contentwarehouse.v1.PropertyDefinition;

                    /**
                     * Encodes the specified PropertyDefinition message. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyDefinition.verify|verify} messages.
                     * @param message PropertyDefinition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IPropertyDefinition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PropertyDefinition message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyDefinition.verify|verify} messages.
                     * @param message PropertyDefinition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IPropertyDefinition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PropertyDefinition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PropertyDefinition
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.PropertyDefinition;

                    /**
                     * Decodes a PropertyDefinition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PropertyDefinition
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.PropertyDefinition;

                    /**
                     * Verifies a PropertyDefinition message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PropertyDefinition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PropertyDefinition
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.PropertyDefinition;

                    /**
                     * Creates a plain object from a PropertyDefinition message. Also converts values to other types if specified.
                     * @param message PropertyDefinition
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.PropertyDefinition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PropertyDefinition to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PropertyDefinition
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PropertyDefinition {

                    /** RetrievalImportance enum. */
                    enum RetrievalImportance {
                        RETRIEVAL_IMPORTANCE_UNSPECIFIED = 0,
                        HIGHEST = 1,
                        HIGHER = 2,
                        HIGH = 3,
                        MEDIUM = 4,
                        LOW = 5,
                        LOWEST = 6
                    }

                    /** Properties of a SchemaSource. */
                    interface ISchemaSource {

                        /** SchemaSource name */
                        name?: (string|null);

                        /** SchemaSource processorType */
                        processorType?: (string|null);
                    }

                    /** Represents a SchemaSource. */
                    class SchemaSource implements ISchemaSource {

                        /**
                         * Constructs a new SchemaSource.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.contentwarehouse.v1.PropertyDefinition.ISchemaSource);

                        /** SchemaSource name. */
                        public name: string;

                        /** SchemaSource processorType. */
                        public processorType: string;

                        /**
                         * Creates a new SchemaSource instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SchemaSource instance
                         */
                        public static create(properties?: google.cloud.contentwarehouse.v1.PropertyDefinition.ISchemaSource): google.cloud.contentwarehouse.v1.PropertyDefinition.SchemaSource;

                        /**
                         * Encodes the specified SchemaSource message. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyDefinition.SchemaSource.verify|verify} messages.
                         * @param message SchemaSource message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.contentwarehouse.v1.PropertyDefinition.ISchemaSource, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SchemaSource message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyDefinition.SchemaSource.verify|verify} messages.
                         * @param message SchemaSource message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.contentwarehouse.v1.PropertyDefinition.ISchemaSource, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SchemaSource message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SchemaSource
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.PropertyDefinition.SchemaSource;

                        /**
                         * Decodes a SchemaSource message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SchemaSource
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.PropertyDefinition.SchemaSource;

                        /**
                         * Verifies a SchemaSource message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SchemaSource message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SchemaSource
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.PropertyDefinition.SchemaSource;

                        /**
                         * Creates a plain object from a SchemaSource message. Also converts values to other types if specified.
                         * @param message SchemaSource
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.contentwarehouse.v1.PropertyDefinition.SchemaSource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SchemaSource to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SchemaSource
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an IntegerTypeOptions. */
                interface IIntegerTypeOptions {
                }

                /** Represents an IntegerTypeOptions. */
                class IntegerTypeOptions implements IIntegerTypeOptions {

                    /**
                     * Constructs a new IntegerTypeOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IIntegerTypeOptions);

                    /**
                     * Creates a new IntegerTypeOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns IntegerTypeOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IIntegerTypeOptions): google.cloud.contentwarehouse.v1.IntegerTypeOptions;

                    /**
                     * Encodes the specified IntegerTypeOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.IntegerTypeOptions.verify|verify} messages.
                     * @param message IntegerTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IIntegerTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified IntegerTypeOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.IntegerTypeOptions.verify|verify} messages.
                     * @param message IntegerTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IIntegerTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an IntegerTypeOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns IntegerTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.IntegerTypeOptions;

                    /**
                     * Decodes an IntegerTypeOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns IntegerTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.IntegerTypeOptions;

                    /**
                     * Verifies an IntegerTypeOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an IntegerTypeOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns IntegerTypeOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.IntegerTypeOptions;

                    /**
                     * Creates a plain object from an IntegerTypeOptions message. Also converts values to other types if specified.
                     * @param message IntegerTypeOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.IntegerTypeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this IntegerTypeOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for IntegerTypeOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FloatTypeOptions. */
                interface IFloatTypeOptions {
                }

                /** Represents a FloatTypeOptions. */
                class FloatTypeOptions implements IFloatTypeOptions {

                    /**
                     * Constructs a new FloatTypeOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IFloatTypeOptions);

                    /**
                     * Creates a new FloatTypeOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FloatTypeOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IFloatTypeOptions): google.cloud.contentwarehouse.v1.FloatTypeOptions;

                    /**
                     * Encodes the specified FloatTypeOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.FloatTypeOptions.verify|verify} messages.
                     * @param message FloatTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IFloatTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FloatTypeOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.FloatTypeOptions.verify|verify} messages.
                     * @param message FloatTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IFloatTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FloatTypeOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FloatTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.FloatTypeOptions;

                    /**
                     * Decodes a FloatTypeOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FloatTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.FloatTypeOptions;

                    /**
                     * Verifies a FloatTypeOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a FloatTypeOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FloatTypeOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.FloatTypeOptions;

                    /**
                     * Creates a plain object from a FloatTypeOptions message. Also converts values to other types if specified.
                     * @param message FloatTypeOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.FloatTypeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FloatTypeOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FloatTypeOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TextTypeOptions. */
                interface ITextTypeOptions {
                }

                /** Represents a TextTypeOptions. */
                class TextTypeOptions implements ITextTypeOptions {

                    /**
                     * Constructs a new TextTypeOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ITextTypeOptions);

                    /**
                     * Creates a new TextTypeOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TextTypeOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ITextTypeOptions): google.cloud.contentwarehouse.v1.TextTypeOptions;

                    /**
                     * Encodes the specified TextTypeOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.TextTypeOptions.verify|verify} messages.
                     * @param message TextTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ITextTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TextTypeOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.TextTypeOptions.verify|verify} messages.
                     * @param message TextTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ITextTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TextTypeOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TextTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.TextTypeOptions;

                    /**
                     * Decodes a TextTypeOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TextTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.TextTypeOptions;

                    /**
                     * Verifies a TextTypeOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a TextTypeOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TextTypeOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.TextTypeOptions;

                    /**
                     * Creates a plain object from a TextTypeOptions message. Also converts values to other types if specified.
                     * @param message TextTypeOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.TextTypeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TextTypeOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TextTypeOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DateTimeTypeOptions. */
                interface IDateTimeTypeOptions {
                }

                /** Represents a DateTimeTypeOptions. */
                class DateTimeTypeOptions implements IDateTimeTypeOptions {

                    /**
                     * Constructs a new DateTimeTypeOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDateTimeTypeOptions);

                    /**
                     * Creates a new DateTimeTypeOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DateTimeTypeOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDateTimeTypeOptions): google.cloud.contentwarehouse.v1.DateTimeTypeOptions;

                    /**
                     * Encodes the specified DateTimeTypeOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DateTimeTypeOptions.verify|verify} messages.
                     * @param message DateTimeTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDateTimeTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DateTimeTypeOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DateTimeTypeOptions.verify|verify} messages.
                     * @param message DateTimeTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDateTimeTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DateTimeTypeOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DateTimeTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DateTimeTypeOptions;

                    /**
                     * Decodes a DateTimeTypeOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DateTimeTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DateTimeTypeOptions;

                    /**
                     * Verifies a DateTimeTypeOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DateTimeTypeOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DateTimeTypeOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DateTimeTypeOptions;

                    /**
                     * Creates a plain object from a DateTimeTypeOptions message. Also converts values to other types if specified.
                     * @param message DateTimeTypeOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DateTimeTypeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DateTimeTypeOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DateTimeTypeOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MapTypeOptions. */
                interface IMapTypeOptions {
                }

                /** Represents a MapTypeOptions. */
                class MapTypeOptions implements IMapTypeOptions {

                    /**
                     * Constructs a new MapTypeOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IMapTypeOptions);

                    /**
                     * Creates a new MapTypeOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MapTypeOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IMapTypeOptions): google.cloud.contentwarehouse.v1.MapTypeOptions;

                    /**
                     * Encodes the specified MapTypeOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.MapTypeOptions.verify|verify} messages.
                     * @param message MapTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IMapTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MapTypeOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.MapTypeOptions.verify|verify} messages.
                     * @param message MapTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IMapTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MapTypeOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MapTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.MapTypeOptions;

                    /**
                     * Decodes a MapTypeOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MapTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.MapTypeOptions;

                    /**
                     * Verifies a MapTypeOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a MapTypeOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MapTypeOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.MapTypeOptions;

                    /**
                     * Creates a plain object from a MapTypeOptions message. Also converts values to other types if specified.
                     * @param message MapTypeOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.MapTypeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MapTypeOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MapTypeOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimestampTypeOptions. */
                interface ITimestampTypeOptions {
                }

                /** Represents a TimestampTypeOptions. */
                class TimestampTypeOptions implements ITimestampTypeOptions {

                    /**
                     * Constructs a new TimestampTypeOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ITimestampTypeOptions);

                    /**
                     * Creates a new TimestampTypeOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimestampTypeOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ITimestampTypeOptions): google.cloud.contentwarehouse.v1.TimestampTypeOptions;

                    /**
                     * Encodes the specified TimestampTypeOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.TimestampTypeOptions.verify|verify} messages.
                     * @param message TimestampTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ITimestampTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimestampTypeOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.TimestampTypeOptions.verify|verify} messages.
                     * @param message TimestampTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ITimestampTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimestampTypeOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimestampTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.TimestampTypeOptions;

                    /**
                     * Decodes a TimestampTypeOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimestampTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.TimestampTypeOptions;

                    /**
                     * Verifies a TimestampTypeOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a TimestampTypeOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimestampTypeOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.TimestampTypeOptions;

                    /**
                     * Creates a plain object from a TimestampTypeOptions message. Also converts values to other types if specified.
                     * @param message TimestampTypeOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.TimestampTypeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimestampTypeOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimestampTypeOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PropertyTypeOptions. */
                interface IPropertyTypeOptions {

                    /** PropertyTypeOptions propertyDefinitions */
                    propertyDefinitions?: (google.cloud.contentwarehouse.v1.IPropertyDefinition[]|null);
                }

                /** Represents a PropertyTypeOptions. */
                class PropertyTypeOptions implements IPropertyTypeOptions {

                    /**
                     * Constructs a new PropertyTypeOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IPropertyTypeOptions);

                    /** PropertyTypeOptions propertyDefinitions. */
                    public propertyDefinitions: google.cloud.contentwarehouse.v1.IPropertyDefinition[];

                    /**
                     * Creates a new PropertyTypeOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PropertyTypeOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IPropertyTypeOptions): google.cloud.contentwarehouse.v1.PropertyTypeOptions;

                    /**
                     * Encodes the specified PropertyTypeOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyTypeOptions.verify|verify} messages.
                     * @param message PropertyTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IPropertyTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PropertyTypeOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyTypeOptions.verify|verify} messages.
                     * @param message PropertyTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IPropertyTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PropertyTypeOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PropertyTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.PropertyTypeOptions;

                    /**
                     * Decodes a PropertyTypeOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PropertyTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.PropertyTypeOptions;

                    /**
                     * Verifies a PropertyTypeOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PropertyTypeOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PropertyTypeOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.PropertyTypeOptions;

                    /**
                     * Creates a plain object from a PropertyTypeOptions message. Also converts values to other types if specified.
                     * @param message PropertyTypeOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.PropertyTypeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PropertyTypeOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PropertyTypeOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an EnumTypeOptions. */
                interface IEnumTypeOptions {

                    /** EnumTypeOptions possibleValues */
                    possibleValues?: (string[]|null);

                    /** EnumTypeOptions validationCheckDisabled */
                    validationCheckDisabled?: (boolean|null);
                }

                /** Represents an EnumTypeOptions. */
                class EnumTypeOptions implements IEnumTypeOptions {

                    /**
                     * Constructs a new EnumTypeOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IEnumTypeOptions);

                    /** EnumTypeOptions possibleValues. */
                    public possibleValues: string[];

                    /** EnumTypeOptions validationCheckDisabled. */
                    public validationCheckDisabled: boolean;

                    /**
                     * Creates a new EnumTypeOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns EnumTypeOptions instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IEnumTypeOptions): google.cloud.contentwarehouse.v1.EnumTypeOptions;

                    /**
                     * Encodes the specified EnumTypeOptions message. Does not implicitly {@link google.cloud.contentwarehouse.v1.EnumTypeOptions.verify|verify} messages.
                     * @param message EnumTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IEnumTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified EnumTypeOptions message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.EnumTypeOptions.verify|verify} messages.
                     * @param message EnumTypeOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IEnumTypeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an EnumTypeOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns EnumTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.EnumTypeOptions;

                    /**
                     * Decodes an EnumTypeOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns EnumTypeOptions
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.EnumTypeOptions;

                    /**
                     * Verifies an EnumTypeOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an EnumTypeOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns EnumTypeOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.EnumTypeOptions;

                    /**
                     * Creates a plain object from an EnumTypeOptions message. Also converts values to other types if specified.
                     * @param message EnumTypeOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.EnumTypeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this EnumTypeOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for EnumTypeOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a DocumentSchemaService */
                class DocumentSchemaService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new DocumentSchemaService service.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     */
                    constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);

                    /**
                     * Creates new DocumentSchemaService service using the specified rpc implementation.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     * @returns RPC service. Useful where requests and/or responses are streamed.
                     */
                    public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): DocumentSchemaService;

                    /**
                     * Calls CreateDocumentSchema.
                     * @param request CreateDocumentSchemaRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DocumentSchema
                     */
                    public createDocumentSchema(request: google.cloud.contentwarehouse.v1.ICreateDocumentSchemaRequest, callback: google.cloud.contentwarehouse.v1.DocumentSchemaService.CreateDocumentSchemaCallback): void;

                    /**
                     * Calls CreateDocumentSchema.
                     * @param request CreateDocumentSchemaRequest message or plain object
                     * @returns Promise
                     */
                    public createDocumentSchema(request: google.cloud.contentwarehouse.v1.ICreateDocumentSchemaRequest): Promise<google.cloud.contentwarehouse.v1.DocumentSchema>;

                    /**
                     * Calls UpdateDocumentSchema.
                     * @param request UpdateDocumentSchemaRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DocumentSchema
                     */
                    public updateDocumentSchema(request: google.cloud.contentwarehouse.v1.IUpdateDocumentSchemaRequest, callback: google.cloud.contentwarehouse.v1.DocumentSchemaService.UpdateDocumentSchemaCallback): void;

                    /**
                     * Calls UpdateDocumentSchema.
                     * @param request UpdateDocumentSchemaRequest message or plain object
                     * @returns Promise
                     */
                    public updateDocumentSchema(request: google.cloud.contentwarehouse.v1.IUpdateDocumentSchemaRequest): Promise<google.cloud.contentwarehouse.v1.DocumentSchema>;

                    /**
                     * Calls GetDocumentSchema.
                     * @param request GetDocumentSchemaRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DocumentSchema
                     */
                    public getDocumentSchema(request: google.cloud.contentwarehouse.v1.IGetDocumentSchemaRequest, callback: google.cloud.contentwarehouse.v1.DocumentSchemaService.GetDocumentSchemaCallback): void;

                    /**
                     * Calls GetDocumentSchema.
                     * @param request GetDocumentSchemaRequest message or plain object
                     * @returns Promise
                     */
                    public getDocumentSchema(request: google.cloud.contentwarehouse.v1.IGetDocumentSchemaRequest): Promise<google.cloud.contentwarehouse.v1.DocumentSchema>;

                    /**
                     * Calls DeleteDocumentSchema.
                     * @param request DeleteDocumentSchemaRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteDocumentSchema(request: google.cloud.contentwarehouse.v1.IDeleteDocumentSchemaRequest, callback: google.cloud.contentwarehouse.v1.DocumentSchemaService.DeleteDocumentSchemaCallback): void;

                    /**
                     * Calls DeleteDocumentSchema.
                     * @param request DeleteDocumentSchemaRequest message or plain object
                     * @returns Promise
                     */
                    public deleteDocumentSchema(request: google.cloud.contentwarehouse.v1.IDeleteDocumentSchemaRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls ListDocumentSchemas.
                     * @param request ListDocumentSchemasRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListDocumentSchemasResponse
                     */
                    public listDocumentSchemas(request: google.cloud.contentwarehouse.v1.IListDocumentSchemasRequest, callback: google.cloud.contentwarehouse.v1.DocumentSchemaService.ListDocumentSchemasCallback): void;

                    /**
                     * Calls ListDocumentSchemas.
                     * @param request ListDocumentSchemasRequest message or plain object
                     * @returns Promise
                     */
                    public listDocumentSchemas(request: google.cloud.contentwarehouse.v1.IListDocumentSchemasRequest): Promise<google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse>;
                }

                namespace DocumentSchemaService {

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentSchemaService|createDocumentSchema}.
                     * @param error Error, if any
                     * @param [response] DocumentSchema
                     */
                    type CreateDocumentSchemaCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.DocumentSchema) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentSchemaService|updateDocumentSchema}.
                     * @param error Error, if any
                     * @param [response] DocumentSchema
                     */
                    type UpdateDocumentSchemaCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.DocumentSchema) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentSchemaService|getDocumentSchema}.
                     * @param error Error, if any
                     * @param [response] DocumentSchema
                     */
                    type GetDocumentSchemaCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.DocumentSchema) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentSchemaService|deleteDocumentSchema}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteDocumentSchemaCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentSchemaService|listDocumentSchemas}.
                     * @param error Error, if any
                     * @param [response] ListDocumentSchemasResponse
                     */
                    type ListDocumentSchemasCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse) => void;
                }

                /** Properties of a CreateDocumentSchemaRequest. */
                interface ICreateDocumentSchemaRequest {

                    /** CreateDocumentSchemaRequest parent */
                    parent?: (string|null);

                    /** CreateDocumentSchemaRequest documentSchema */
                    documentSchema?: (google.cloud.contentwarehouse.v1.IDocumentSchema|null);
                }

                /** Represents a CreateDocumentSchemaRequest. */
                class CreateDocumentSchemaRequest implements ICreateDocumentSchemaRequest {

                    /**
                     * Constructs a new CreateDocumentSchemaRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentSchemaRequest);

                    /** CreateDocumentSchemaRequest parent. */
                    public parent: string;

                    /** CreateDocumentSchemaRequest documentSchema. */
                    public documentSchema?: (google.cloud.contentwarehouse.v1.IDocumentSchema|null);

                    /**
                     * Creates a new CreateDocumentSchemaRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateDocumentSchemaRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentSchemaRequest): google.cloud.contentwarehouse.v1.CreateDocumentSchemaRequest;

                    /**
                     * Encodes the specified CreateDocumentSchemaRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentSchemaRequest.verify|verify} messages.
                     * @param message CreateDocumentSchemaRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICreateDocumentSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateDocumentSchemaRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentSchemaRequest.verify|verify} messages.
                     * @param message CreateDocumentSchemaRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICreateDocumentSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateDocumentSchemaRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateDocumentSchemaRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CreateDocumentSchemaRequest;

                    /**
                     * Decodes a CreateDocumentSchemaRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateDocumentSchemaRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CreateDocumentSchemaRequest;

                    /**
                     * Verifies a CreateDocumentSchemaRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateDocumentSchemaRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateDocumentSchemaRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CreateDocumentSchemaRequest;

                    /**
                     * Creates a plain object from a CreateDocumentSchemaRequest message. Also converts values to other types if specified.
                     * @param message CreateDocumentSchemaRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CreateDocumentSchemaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateDocumentSchemaRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateDocumentSchemaRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetDocumentSchemaRequest. */
                interface IGetDocumentSchemaRequest {

                    /** GetDocumentSchemaRequest name */
                    name?: (string|null);
                }

                /** Represents a GetDocumentSchemaRequest. */
                class GetDocumentSchemaRequest implements IGetDocumentSchemaRequest {

                    /**
                     * Constructs a new GetDocumentSchemaRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IGetDocumentSchemaRequest);

                    /** GetDocumentSchemaRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetDocumentSchemaRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDocumentSchemaRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IGetDocumentSchemaRequest): google.cloud.contentwarehouse.v1.GetDocumentSchemaRequest;

                    /**
                     * Encodes the specified GetDocumentSchemaRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.GetDocumentSchemaRequest.verify|verify} messages.
                     * @param message GetDocumentSchemaRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IGetDocumentSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetDocumentSchemaRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.GetDocumentSchemaRequest.verify|verify} messages.
                     * @param message GetDocumentSchemaRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IGetDocumentSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetDocumentSchemaRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDocumentSchemaRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.GetDocumentSchemaRequest;

                    /**
                     * Decodes a GetDocumentSchemaRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDocumentSchemaRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.GetDocumentSchemaRequest;

                    /**
                     * Verifies a GetDocumentSchemaRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetDocumentSchemaRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDocumentSchemaRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.GetDocumentSchemaRequest;

                    /**
                     * Creates a plain object from a GetDocumentSchemaRequest message. Also converts values to other types if specified.
                     * @param message GetDocumentSchemaRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.GetDocumentSchemaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetDocumentSchemaRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetDocumentSchemaRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateDocumentSchemaRequest. */
                interface IUpdateDocumentSchemaRequest {

                    /** UpdateDocumentSchemaRequest name */
                    name?: (string|null);

                    /** UpdateDocumentSchemaRequest documentSchema */
                    documentSchema?: (google.cloud.contentwarehouse.v1.IDocumentSchema|null);
                }

                /** Represents an UpdateDocumentSchemaRequest. */
                class UpdateDocumentSchemaRequest implements IUpdateDocumentSchemaRequest {

                    /**
                     * Constructs a new UpdateDocumentSchemaRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IUpdateDocumentSchemaRequest);

                    /** UpdateDocumentSchemaRequest name. */
                    public name: string;

                    /** UpdateDocumentSchemaRequest documentSchema. */
                    public documentSchema?: (google.cloud.contentwarehouse.v1.IDocumentSchema|null);

                    /**
                     * Creates a new UpdateDocumentSchemaRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateDocumentSchemaRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IUpdateDocumentSchemaRequest): google.cloud.contentwarehouse.v1.UpdateDocumentSchemaRequest;

                    /**
                     * Encodes the specified UpdateDocumentSchemaRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateDocumentSchemaRequest.verify|verify} messages.
                     * @param message UpdateDocumentSchemaRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IUpdateDocumentSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateDocumentSchemaRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateDocumentSchemaRequest.verify|verify} messages.
                     * @param message UpdateDocumentSchemaRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IUpdateDocumentSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateDocumentSchemaRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateDocumentSchemaRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.UpdateDocumentSchemaRequest;

                    /**
                     * Decodes an UpdateDocumentSchemaRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateDocumentSchemaRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.UpdateDocumentSchemaRequest;

                    /**
                     * Verifies an UpdateDocumentSchemaRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateDocumentSchemaRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateDocumentSchemaRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.UpdateDocumentSchemaRequest;

                    /**
                     * Creates a plain object from an UpdateDocumentSchemaRequest message. Also converts values to other types if specified.
                     * @param message UpdateDocumentSchemaRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.UpdateDocumentSchemaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateDocumentSchemaRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateDocumentSchemaRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteDocumentSchemaRequest. */
                interface IDeleteDocumentSchemaRequest {

                    /** DeleteDocumentSchemaRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteDocumentSchemaRequest. */
                class DeleteDocumentSchemaRequest implements IDeleteDocumentSchemaRequest {

                    /**
                     * Constructs a new DeleteDocumentSchemaRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDeleteDocumentSchemaRequest);

                    /** DeleteDocumentSchemaRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteDocumentSchemaRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteDocumentSchemaRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDeleteDocumentSchemaRequest): google.cloud.contentwarehouse.v1.DeleteDocumentSchemaRequest;

                    /**
                     * Encodes the specified DeleteDocumentSchemaRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteDocumentSchemaRequest.verify|verify} messages.
                     * @param message DeleteDocumentSchemaRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDeleteDocumentSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteDocumentSchemaRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteDocumentSchemaRequest.verify|verify} messages.
                     * @param message DeleteDocumentSchemaRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDeleteDocumentSchemaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteDocumentSchemaRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteDocumentSchemaRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DeleteDocumentSchemaRequest;

                    /**
                     * Decodes a DeleteDocumentSchemaRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteDocumentSchemaRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DeleteDocumentSchemaRequest;

                    /**
                     * Verifies a DeleteDocumentSchemaRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteDocumentSchemaRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteDocumentSchemaRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DeleteDocumentSchemaRequest;

                    /**
                     * Creates a plain object from a DeleteDocumentSchemaRequest message. Also converts values to other types if specified.
                     * @param message DeleteDocumentSchemaRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DeleteDocumentSchemaRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteDocumentSchemaRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteDocumentSchemaRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListDocumentSchemasRequest. */
                interface IListDocumentSchemasRequest {

                    /** ListDocumentSchemasRequest parent */
                    parent?: (string|null);

                    /** ListDocumentSchemasRequest pageSize */
                    pageSize?: (number|null);

                    /** ListDocumentSchemasRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListDocumentSchemasRequest. */
                class ListDocumentSchemasRequest implements IListDocumentSchemasRequest {

                    /**
                     * Constructs a new ListDocumentSchemasRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListDocumentSchemasRequest);

                    /** ListDocumentSchemasRequest parent. */
                    public parent: string;

                    /** ListDocumentSchemasRequest pageSize. */
                    public pageSize: number;

                    /** ListDocumentSchemasRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListDocumentSchemasRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListDocumentSchemasRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListDocumentSchemasRequest): google.cloud.contentwarehouse.v1.ListDocumentSchemasRequest;

                    /**
                     * Encodes the specified ListDocumentSchemasRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListDocumentSchemasRequest.verify|verify} messages.
                     * @param message ListDocumentSchemasRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListDocumentSchemasRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListDocumentSchemasRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListDocumentSchemasRequest.verify|verify} messages.
                     * @param message ListDocumentSchemasRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListDocumentSchemasRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListDocumentSchemasRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListDocumentSchemasRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListDocumentSchemasRequest;

                    /**
                     * Decodes a ListDocumentSchemasRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListDocumentSchemasRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListDocumentSchemasRequest;

                    /**
                     * Verifies a ListDocumentSchemasRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListDocumentSchemasRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListDocumentSchemasRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListDocumentSchemasRequest;

                    /**
                     * Creates a plain object from a ListDocumentSchemasRequest message. Also converts values to other types if specified.
                     * @param message ListDocumentSchemasRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListDocumentSchemasRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListDocumentSchemasRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListDocumentSchemasRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListDocumentSchemasResponse. */
                interface IListDocumentSchemasResponse {

                    /** ListDocumentSchemasResponse documentSchemas */
                    documentSchemas?: (google.cloud.contentwarehouse.v1.IDocumentSchema[]|null);

                    /** ListDocumentSchemasResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListDocumentSchemasResponse. */
                class ListDocumentSchemasResponse implements IListDocumentSchemasResponse {

                    /**
                     * Constructs a new ListDocumentSchemasResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListDocumentSchemasResponse);

                    /** ListDocumentSchemasResponse documentSchemas. */
                    public documentSchemas: google.cloud.contentwarehouse.v1.IDocumentSchema[];

                    /** ListDocumentSchemasResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListDocumentSchemasResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListDocumentSchemasResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListDocumentSchemasResponse): google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse;

                    /**
                     * Encodes the specified ListDocumentSchemasResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse.verify|verify} messages.
                     * @param message ListDocumentSchemasResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListDocumentSchemasResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListDocumentSchemasResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse.verify|verify} messages.
                     * @param message ListDocumentSchemasResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListDocumentSchemasResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListDocumentSchemasResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListDocumentSchemasResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse;

                    /**
                     * Decodes a ListDocumentSchemasResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListDocumentSchemasResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse;

                    /**
                     * Verifies a ListDocumentSchemasResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListDocumentSchemasResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListDocumentSchemasResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse;

                    /**
                     * Creates a plain object from a ListDocumentSchemasResponse message. Also converts values to other types if specified.
                     * @param message ListDocumentSchemasResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListDocumentSchemasResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListDocumentSchemasResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListDocumentSchemasResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a DocumentService */
                class DocumentService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new DocumentService service.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     */
                    constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);

                    /**
                     * Creates new DocumentService service using the specified rpc implementation.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     * @returns RPC service. Useful where requests and/or responses are streamed.
                     */
                    public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): DocumentService;

                    /**
                     * Calls CreateDocument.
                     * @param request CreateDocumentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CreateDocumentResponse
                     */
                    public createDocument(request: google.cloud.contentwarehouse.v1.ICreateDocumentRequest, callback: google.cloud.contentwarehouse.v1.DocumentService.CreateDocumentCallback): void;

                    /**
                     * Calls CreateDocument.
                     * @param request CreateDocumentRequest message or plain object
                     * @returns Promise
                     */
                    public createDocument(request: google.cloud.contentwarehouse.v1.ICreateDocumentRequest): Promise<google.cloud.contentwarehouse.v1.CreateDocumentResponse>;

                    /**
                     * Calls GetDocument.
                     * @param request GetDocumentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Document
                     */
                    public getDocument(request: google.cloud.contentwarehouse.v1.IGetDocumentRequest, callback: google.cloud.contentwarehouse.v1.DocumentService.GetDocumentCallback): void;

                    /**
                     * Calls GetDocument.
                     * @param request GetDocumentRequest message or plain object
                     * @returns Promise
                     */
                    public getDocument(request: google.cloud.contentwarehouse.v1.IGetDocumentRequest): Promise<google.cloud.contentwarehouse.v1.Document>;

                    /**
                     * Calls UpdateDocument.
                     * @param request UpdateDocumentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateDocumentResponse
                     */
                    public updateDocument(request: google.cloud.contentwarehouse.v1.IUpdateDocumentRequest, callback: google.cloud.contentwarehouse.v1.DocumentService.UpdateDocumentCallback): void;

                    /**
                     * Calls UpdateDocument.
                     * @param request UpdateDocumentRequest message or plain object
                     * @returns Promise
                     */
                    public updateDocument(request: google.cloud.contentwarehouse.v1.IUpdateDocumentRequest): Promise<google.cloud.contentwarehouse.v1.UpdateDocumentResponse>;

                    /**
                     * Calls DeleteDocument.
                     * @param request DeleteDocumentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteDocument(request: google.cloud.contentwarehouse.v1.IDeleteDocumentRequest, callback: google.cloud.contentwarehouse.v1.DocumentService.DeleteDocumentCallback): void;

                    /**
                     * Calls DeleteDocument.
                     * @param request DeleteDocumentRequest message or plain object
                     * @returns Promise
                     */
                    public deleteDocument(request: google.cloud.contentwarehouse.v1.IDeleteDocumentRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls SearchDocuments.
                     * @param request SearchDocumentsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SearchDocumentsResponse
                     */
                    public searchDocuments(request: google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, callback: google.cloud.contentwarehouse.v1.DocumentService.SearchDocumentsCallback): void;

                    /**
                     * Calls SearchDocuments.
                     * @param request SearchDocumentsRequest message or plain object
                     * @returns Promise
                     */
                    public searchDocuments(request: google.cloud.contentwarehouse.v1.ISearchDocumentsRequest): Promise<google.cloud.contentwarehouse.v1.SearchDocumentsResponse>;

                    /**
                     * Calls LockDocument.
                     * @param request LockDocumentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Document
                     */
                    public lockDocument(request: google.cloud.contentwarehouse.v1.ILockDocumentRequest, callback: google.cloud.contentwarehouse.v1.DocumentService.LockDocumentCallback): void;

                    /**
                     * Calls LockDocument.
                     * @param request LockDocumentRequest message or plain object
                     * @returns Promise
                     */
                    public lockDocument(request: google.cloud.contentwarehouse.v1.ILockDocumentRequest): Promise<google.cloud.contentwarehouse.v1.Document>;

                    /**
                     * Calls FetchAcl.
                     * @param request FetchAclRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and FetchAclResponse
                     */
                    public fetchAcl(request: google.cloud.contentwarehouse.v1.IFetchAclRequest, callback: google.cloud.contentwarehouse.v1.DocumentService.FetchAclCallback): void;

                    /**
                     * Calls FetchAcl.
                     * @param request FetchAclRequest message or plain object
                     * @returns Promise
                     */
                    public fetchAcl(request: google.cloud.contentwarehouse.v1.IFetchAclRequest): Promise<google.cloud.contentwarehouse.v1.FetchAclResponse>;

                    /**
                     * Calls SetAcl.
                     * @param request SetAclRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SetAclResponse
                     */
                    public setAcl(request: google.cloud.contentwarehouse.v1.ISetAclRequest, callback: google.cloud.contentwarehouse.v1.DocumentService.SetAclCallback): void;

                    /**
                     * Calls SetAcl.
                     * @param request SetAclRequest message or plain object
                     * @returns Promise
                     */
                    public setAcl(request: google.cloud.contentwarehouse.v1.ISetAclRequest): Promise<google.cloud.contentwarehouse.v1.SetAclResponse>;
                }

                namespace DocumentService {

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentService|createDocument}.
                     * @param error Error, if any
                     * @param [response] CreateDocumentResponse
                     */
                    type CreateDocumentCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.CreateDocumentResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentService|getDocument}.
                     * @param error Error, if any
                     * @param [response] Document
                     */
                    type GetDocumentCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.Document) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentService|updateDocument}.
                     * @param error Error, if any
                     * @param [response] UpdateDocumentResponse
                     */
                    type UpdateDocumentCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.UpdateDocumentResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentService|deleteDocument}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteDocumentCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentService|searchDocuments}.
                     * @param error Error, if any
                     * @param [response] SearchDocumentsResponse
                     */
                    type SearchDocumentsCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.SearchDocumentsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentService|lockDocument}.
                     * @param error Error, if any
                     * @param [response] Document
                     */
                    type LockDocumentCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.Document) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentService|fetchAcl}.
                     * @param error Error, if any
                     * @param [response] FetchAclResponse
                     */
                    type FetchAclCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.FetchAclResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.DocumentService|setAcl}.
                     * @param error Error, if any
                     * @param [response] SetAclResponse
                     */
                    type SetAclCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.SetAclResponse) => void;
                }

                /** Properties of a CreateDocumentResponse. */
                interface ICreateDocumentResponse {

                    /** CreateDocumentResponse document */
                    document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                    /** CreateDocumentResponse ruleEngineOutput */
                    ruleEngineOutput?: (google.cloud.contentwarehouse.v1.IRuleEngineOutput|null);

                    /** CreateDocumentResponse metadata */
                    metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);

                    /** CreateDocumentResponse longRunningOperations */
                    longRunningOperations?: (google.longrunning.IOperation[]|null);
                }

                /** Represents a CreateDocumentResponse. */
                class CreateDocumentResponse implements ICreateDocumentResponse {

                    /**
                     * Constructs a new CreateDocumentResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentResponse);

                    /** CreateDocumentResponse document. */
                    public document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                    /** CreateDocumentResponse ruleEngineOutput. */
                    public ruleEngineOutput?: (google.cloud.contentwarehouse.v1.IRuleEngineOutput|null);

                    /** CreateDocumentResponse metadata. */
                    public metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);

                    /** CreateDocumentResponse longRunningOperations. */
                    public longRunningOperations: google.longrunning.IOperation[];

                    /**
                     * Creates a new CreateDocumentResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateDocumentResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentResponse): google.cloud.contentwarehouse.v1.CreateDocumentResponse;

                    /**
                     * Encodes the specified CreateDocumentResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentResponse.verify|verify} messages.
                     * @param message CreateDocumentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICreateDocumentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateDocumentResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentResponse.verify|verify} messages.
                     * @param message CreateDocumentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICreateDocumentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateDocumentResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateDocumentResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CreateDocumentResponse;

                    /**
                     * Decodes a CreateDocumentResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateDocumentResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CreateDocumentResponse;

                    /**
                     * Verifies a CreateDocumentResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateDocumentResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateDocumentResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CreateDocumentResponse;

                    /**
                     * Creates a plain object from a CreateDocumentResponse message. Also converts values to other types if specified.
                     * @param message CreateDocumentResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CreateDocumentResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateDocumentResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateDocumentResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateDocumentResponse. */
                interface IUpdateDocumentResponse {

                    /** UpdateDocumentResponse document */
                    document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                    /** UpdateDocumentResponse ruleEngineOutput */
                    ruleEngineOutput?: (google.cloud.contentwarehouse.v1.IRuleEngineOutput|null);

                    /** UpdateDocumentResponse metadata */
                    metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);
                }

                /** Represents an UpdateDocumentResponse. */
                class UpdateDocumentResponse implements IUpdateDocumentResponse {

                    /**
                     * Constructs a new UpdateDocumentResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IUpdateDocumentResponse);

                    /** UpdateDocumentResponse document. */
                    public document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                    /** UpdateDocumentResponse ruleEngineOutput. */
                    public ruleEngineOutput?: (google.cloud.contentwarehouse.v1.IRuleEngineOutput|null);

                    /** UpdateDocumentResponse metadata. */
                    public metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);

                    /**
                     * Creates a new UpdateDocumentResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateDocumentResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IUpdateDocumentResponse): google.cloud.contentwarehouse.v1.UpdateDocumentResponse;

                    /**
                     * Encodes the specified UpdateDocumentResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateDocumentResponse.verify|verify} messages.
                     * @param message UpdateDocumentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IUpdateDocumentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateDocumentResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateDocumentResponse.verify|verify} messages.
                     * @param message UpdateDocumentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IUpdateDocumentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateDocumentResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateDocumentResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.UpdateDocumentResponse;

                    /**
                     * Decodes an UpdateDocumentResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateDocumentResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.UpdateDocumentResponse;

                    /**
                     * Verifies an UpdateDocumentResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateDocumentResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateDocumentResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.UpdateDocumentResponse;

                    /**
                     * Creates a plain object from an UpdateDocumentResponse message. Also converts values to other types if specified.
                     * @param message UpdateDocumentResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.UpdateDocumentResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateDocumentResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateDocumentResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a QAResult. */
                interface IQAResult {

                    /** QAResult highlights */
                    highlights?: (google.cloud.contentwarehouse.v1.QAResult.IHighlight[]|null);

                    /** QAResult confidenceScore */
                    confidenceScore?: (number|null);
                }

                /** Represents a QAResult. */
                class QAResult implements IQAResult {

                    /**
                     * Constructs a new QAResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IQAResult);

                    /** QAResult highlights. */
                    public highlights: google.cloud.contentwarehouse.v1.QAResult.IHighlight[];

                    /** QAResult confidenceScore. */
                    public confidenceScore: number;

                    /**
                     * Creates a new QAResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QAResult instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IQAResult): google.cloud.contentwarehouse.v1.QAResult;

                    /**
                     * Encodes the specified QAResult message. Does not implicitly {@link google.cloud.contentwarehouse.v1.QAResult.verify|verify} messages.
                     * @param message QAResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IQAResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QAResult message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.QAResult.verify|verify} messages.
                     * @param message QAResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IQAResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a QAResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns QAResult
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.QAResult;

                    /**
                     * Decodes a QAResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns QAResult
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.QAResult;

                    /**
                     * Verifies a QAResult message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a QAResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns QAResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.QAResult;

                    /**
                     * Creates a plain object from a QAResult message. Also converts values to other types if specified.
                     * @param message QAResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.QAResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this QAResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for QAResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace QAResult {

                    /** Properties of a Highlight. */
                    interface IHighlight {

                        /** Highlight startIndex */
                        startIndex?: (number|null);

                        /** Highlight endIndex */
                        endIndex?: (number|null);
                    }

                    /** Represents a Highlight. */
                    class Highlight implements IHighlight {

                        /**
                         * Constructs a new Highlight.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.contentwarehouse.v1.QAResult.IHighlight);

                        /** Highlight startIndex. */
                        public startIndex: number;

                        /** Highlight endIndex. */
                        public endIndex: number;

                        /**
                         * Creates a new Highlight instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Highlight instance
                         */
                        public static create(properties?: google.cloud.contentwarehouse.v1.QAResult.IHighlight): google.cloud.contentwarehouse.v1.QAResult.Highlight;

                        /**
                         * Encodes the specified Highlight message. Does not implicitly {@link google.cloud.contentwarehouse.v1.QAResult.Highlight.verify|verify} messages.
                         * @param message Highlight message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.contentwarehouse.v1.QAResult.IHighlight, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Highlight message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.QAResult.Highlight.verify|verify} messages.
                         * @param message Highlight message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.contentwarehouse.v1.QAResult.IHighlight, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Highlight message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Highlight
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.QAResult.Highlight;

                        /**
                         * Decodes a Highlight message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Highlight
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.QAResult.Highlight;

                        /**
                         * Verifies a Highlight message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Highlight message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Highlight
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.QAResult.Highlight;

                        /**
                         * Creates a plain object from a Highlight message. Also converts values to other types if specified.
                         * @param message Highlight
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.contentwarehouse.v1.QAResult.Highlight, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Highlight to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Highlight
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a SearchDocumentsResponse. */
                interface ISearchDocumentsResponse {

                    /** SearchDocumentsResponse matchingDocuments */
                    matchingDocuments?: (google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument[]|null);

                    /** SearchDocumentsResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** SearchDocumentsResponse totalSize */
                    totalSize?: (number|null);

                    /** SearchDocumentsResponse metadata */
                    metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);

                    /** SearchDocumentsResponse histogramQueryResults */
                    histogramQueryResults?: (google.cloud.contentwarehouse.v1.IHistogramQueryResult[]|null);

                    /** SearchDocumentsResponse questionAnswer */
                    questionAnswer?: (string|null);
                }

                /** Represents a SearchDocumentsResponse. */
                class SearchDocumentsResponse implements ISearchDocumentsResponse {

                    /**
                     * Constructs a new SearchDocumentsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ISearchDocumentsResponse);

                    /** SearchDocumentsResponse matchingDocuments. */
                    public matchingDocuments: google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument[];

                    /** SearchDocumentsResponse nextPageToken. */
                    public nextPageToken: string;

                    /** SearchDocumentsResponse totalSize. */
                    public totalSize: number;

                    /** SearchDocumentsResponse metadata. */
                    public metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);

                    /** SearchDocumentsResponse histogramQueryResults. */
                    public histogramQueryResults: google.cloud.contentwarehouse.v1.IHistogramQueryResult[];

                    /** SearchDocumentsResponse questionAnswer. */
                    public questionAnswer: string;

                    /**
                     * Creates a new SearchDocumentsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchDocumentsResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ISearchDocumentsResponse): google.cloud.contentwarehouse.v1.SearchDocumentsResponse;

                    /**
                     * Encodes the specified SearchDocumentsResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.SearchDocumentsResponse.verify|verify} messages.
                     * @param message SearchDocumentsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ISearchDocumentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SearchDocumentsResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.SearchDocumentsResponse.verify|verify} messages.
                     * @param message SearchDocumentsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ISearchDocumentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SearchDocumentsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchDocumentsResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.SearchDocumentsResponse;

                    /**
                     * Decodes a SearchDocumentsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchDocumentsResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.SearchDocumentsResponse;

                    /**
                     * Verifies a SearchDocumentsResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SearchDocumentsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchDocumentsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.SearchDocumentsResponse;

                    /**
                     * Creates a plain object from a SearchDocumentsResponse message. Also converts values to other types if specified.
                     * @param message SearchDocumentsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.SearchDocumentsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SearchDocumentsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SearchDocumentsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SearchDocumentsResponse {

                    /** Properties of a MatchingDocument. */
                    interface IMatchingDocument {

                        /** MatchingDocument document */
                        document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                        /** MatchingDocument searchTextSnippet */
                        searchTextSnippet?: (string|null);

                        /** MatchingDocument qaResult */
                        qaResult?: (google.cloud.contentwarehouse.v1.IQAResult|null);

                        /** MatchingDocument matchedTokenPageIndices */
                        matchedTokenPageIndices?: ((number|Long|string)[]|null);
                    }

                    /** Represents a MatchingDocument. */
                    class MatchingDocument implements IMatchingDocument {

                        /**
                         * Constructs a new MatchingDocument.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument);

                        /** MatchingDocument document. */
                        public document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                        /** MatchingDocument searchTextSnippet. */
                        public searchTextSnippet: string;

                        /** MatchingDocument qaResult. */
                        public qaResult?: (google.cloud.contentwarehouse.v1.IQAResult|null);

                        /** MatchingDocument matchedTokenPageIndices. */
                        public matchedTokenPageIndices: (number|Long|string)[];

                        /**
                         * Creates a new MatchingDocument instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MatchingDocument instance
                         */
                        public static create(properties?: google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument): google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument;

                        /**
                         * Encodes the specified MatchingDocument message. Does not implicitly {@link google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument.verify|verify} messages.
                         * @param message MatchingDocument message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MatchingDocument message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument.verify|verify} messages.
                         * @param message MatchingDocument message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.contentwarehouse.v1.SearchDocumentsResponse.IMatchingDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MatchingDocument message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MatchingDocument
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument;

                        /**
                         * Decodes a MatchingDocument message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MatchingDocument
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument;

                        /**
                         * Verifies a MatchingDocument message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MatchingDocument message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MatchingDocument
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument;

                        /**
                         * Creates a plain object from a MatchingDocument message. Also converts values to other types if specified.
                         * @param message MatchingDocument
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.contentwarehouse.v1.SearchDocumentsResponse.MatchingDocument, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MatchingDocument to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MatchingDocument
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a FetchAclResponse. */
                interface IFetchAclResponse {

                    /** FetchAclResponse policy */
                    policy?: (google.iam.v1.IPolicy|null);

                    /** FetchAclResponse metadata */
                    metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);
                }

                /** Represents a FetchAclResponse. */
                class FetchAclResponse implements IFetchAclResponse {

                    /**
                     * Constructs a new FetchAclResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IFetchAclResponse);

                    /** FetchAclResponse policy. */
                    public policy?: (google.iam.v1.IPolicy|null);

                    /** FetchAclResponse metadata. */
                    public metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);

                    /**
                     * Creates a new FetchAclResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FetchAclResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IFetchAclResponse): google.cloud.contentwarehouse.v1.FetchAclResponse;

                    /**
                     * Encodes the specified FetchAclResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.FetchAclResponse.verify|verify} messages.
                     * @param message FetchAclResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IFetchAclResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FetchAclResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.FetchAclResponse.verify|verify} messages.
                     * @param message FetchAclResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IFetchAclResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FetchAclResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FetchAclResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.FetchAclResponse;

                    /**
                     * Decodes a FetchAclResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FetchAclResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.FetchAclResponse;

                    /**
                     * Verifies a FetchAclResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a FetchAclResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FetchAclResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.FetchAclResponse;

                    /**
                     * Creates a plain object from a FetchAclResponse message. Also converts values to other types if specified.
                     * @param message FetchAclResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.FetchAclResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FetchAclResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FetchAclResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetAclResponse. */
                interface ISetAclResponse {

                    /** SetAclResponse policy */
                    policy?: (google.iam.v1.IPolicy|null);

                    /** SetAclResponse metadata */
                    metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);
                }

                /** Represents a SetAclResponse. */
                class SetAclResponse implements ISetAclResponse {

                    /**
                     * Constructs a new SetAclResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ISetAclResponse);

                    /** SetAclResponse policy. */
                    public policy?: (google.iam.v1.IPolicy|null);

                    /** SetAclResponse metadata. */
                    public metadata?: (google.cloud.contentwarehouse.v1.IResponseMetadata|null);

                    /**
                     * Creates a new SetAclResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetAclResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ISetAclResponse): google.cloud.contentwarehouse.v1.SetAclResponse;

                    /**
                     * Encodes the specified SetAclResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.SetAclResponse.verify|verify} messages.
                     * @param message SetAclResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ISetAclResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetAclResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.SetAclResponse.verify|verify} messages.
                     * @param message SetAclResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ISetAclResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetAclResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetAclResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.SetAclResponse;

                    /**
                     * Decodes a SetAclResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetAclResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.SetAclResponse;

                    /**
                     * Verifies a SetAclResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SetAclResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetAclResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.SetAclResponse;

                    /**
                     * Creates a plain object from a SetAclResponse message. Also converts values to other types if specified.
                     * @param message SetAclResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.SetAclResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetAclResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetAclResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CloudAIDocumentOption. */
                interface ICloudAIDocumentOption {

                    /** CloudAIDocumentOption enableEntitiesConversions */
                    enableEntitiesConversions?: (boolean|null);

                    /** CloudAIDocumentOption customizedEntitiesPropertiesConversions */
                    customizedEntitiesPropertiesConversions?: ({ [k: string]: string }|null);
                }

                /** Represents a CloudAIDocumentOption. */
                class CloudAIDocumentOption implements ICloudAIDocumentOption {

                    /**
                     * Constructs a new CloudAIDocumentOption.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICloudAIDocumentOption);

                    /** CloudAIDocumentOption enableEntitiesConversions. */
                    public enableEntitiesConversions: boolean;

                    /** CloudAIDocumentOption customizedEntitiesPropertiesConversions. */
                    public customizedEntitiesPropertiesConversions: { [k: string]: string };

                    /**
                     * Creates a new CloudAIDocumentOption instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CloudAIDocumentOption instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICloudAIDocumentOption): google.cloud.contentwarehouse.v1.CloudAIDocumentOption;

                    /**
                     * Encodes the specified CloudAIDocumentOption message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CloudAIDocumentOption.verify|verify} messages.
                     * @param message CloudAIDocumentOption message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICloudAIDocumentOption, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CloudAIDocumentOption message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CloudAIDocumentOption.verify|verify} messages.
                     * @param message CloudAIDocumentOption message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICloudAIDocumentOption, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CloudAIDocumentOption message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CloudAIDocumentOption
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CloudAIDocumentOption;

                    /**
                     * Decodes a CloudAIDocumentOption message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CloudAIDocumentOption
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CloudAIDocumentOption;

                    /**
                     * Verifies a CloudAIDocumentOption message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CloudAIDocumentOption message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CloudAIDocumentOption
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CloudAIDocumentOption;

                    /**
                     * Creates a plain object from a CloudAIDocumentOption message. Also converts values to other types if specified.
                     * @param message CloudAIDocumentOption
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CloudAIDocumentOption, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CloudAIDocumentOption to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CloudAIDocumentOption
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateDocumentRequest. */
                interface ICreateDocumentRequest {

                    /** CreateDocumentRequest parent */
                    parent?: (string|null);

                    /** CreateDocumentRequest document */
                    document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                    /** CreateDocumentRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** CreateDocumentRequest policy */
                    policy?: (google.iam.v1.IPolicy|null);

                    /** CreateDocumentRequest cloudAiDocumentOption */
                    cloudAiDocumentOption?: (google.cloud.contentwarehouse.v1.ICloudAIDocumentOption|null);

                    /** CreateDocumentRequest createMask */
                    createMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents a CreateDocumentRequest. */
                class CreateDocumentRequest implements ICreateDocumentRequest {

                    /**
                     * Constructs a new CreateDocumentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentRequest);

                    /** CreateDocumentRequest parent. */
                    public parent: string;

                    /** CreateDocumentRequest document. */
                    public document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                    /** CreateDocumentRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** CreateDocumentRequest policy. */
                    public policy?: (google.iam.v1.IPolicy|null);

                    /** CreateDocumentRequest cloudAiDocumentOption. */
                    public cloudAiDocumentOption?: (google.cloud.contentwarehouse.v1.ICloudAIDocumentOption|null);

                    /** CreateDocumentRequest createMask. */
                    public createMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new CreateDocumentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateDocumentRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICreateDocumentRequest): google.cloud.contentwarehouse.v1.CreateDocumentRequest;

                    /**
                     * Encodes the specified CreateDocumentRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentRequest.verify|verify} messages.
                     * @param message CreateDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICreateDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateDocumentRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateDocumentRequest.verify|verify} messages.
                     * @param message CreateDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICreateDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateDocumentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CreateDocumentRequest;

                    /**
                     * Decodes a CreateDocumentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CreateDocumentRequest;

                    /**
                     * Verifies a CreateDocumentRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateDocumentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateDocumentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CreateDocumentRequest;

                    /**
                     * Creates a plain object from a CreateDocumentRequest message. Also converts values to other types if specified.
                     * @param message CreateDocumentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CreateDocumentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateDocumentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateDocumentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetDocumentRequest. */
                interface IGetDocumentRequest {

                    /** GetDocumentRequest name */
                    name?: (string|null);

                    /** GetDocumentRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);
                }

                /** Represents a GetDocumentRequest. */
                class GetDocumentRequest implements IGetDocumentRequest {

                    /**
                     * Constructs a new GetDocumentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IGetDocumentRequest);

                    /** GetDocumentRequest name. */
                    public name: string;

                    /** GetDocumentRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /**
                     * Creates a new GetDocumentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDocumentRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IGetDocumentRequest): google.cloud.contentwarehouse.v1.GetDocumentRequest;

                    /**
                     * Encodes the specified GetDocumentRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.GetDocumentRequest.verify|verify} messages.
                     * @param message GetDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IGetDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetDocumentRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.GetDocumentRequest.verify|verify} messages.
                     * @param message GetDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IGetDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetDocumentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.GetDocumentRequest;

                    /**
                     * Decodes a GetDocumentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.GetDocumentRequest;

                    /**
                     * Verifies a GetDocumentRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetDocumentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDocumentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.GetDocumentRequest;

                    /**
                     * Creates a plain object from a GetDocumentRequest message. Also converts values to other types if specified.
                     * @param message GetDocumentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.GetDocumentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetDocumentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetDocumentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateDocumentRequest. */
                interface IUpdateDocumentRequest {

                    /** UpdateDocumentRequest name */
                    name?: (string|null);

                    /** UpdateDocumentRequest document */
                    document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                    /** UpdateDocumentRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** UpdateDocumentRequest cloudAiDocumentOption */
                    cloudAiDocumentOption?: (google.cloud.contentwarehouse.v1.ICloudAIDocumentOption|null);

                    /** UpdateDocumentRequest updateOptions */
                    updateOptions?: (google.cloud.contentwarehouse.v1.IUpdateOptions|null);
                }

                /** Represents an UpdateDocumentRequest. */
                class UpdateDocumentRequest implements IUpdateDocumentRequest {

                    /**
                     * Constructs a new UpdateDocumentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IUpdateDocumentRequest);

                    /** UpdateDocumentRequest name. */
                    public name: string;

                    /** UpdateDocumentRequest document. */
                    public document?: (google.cloud.contentwarehouse.v1.IDocument|null);

                    /** UpdateDocumentRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** UpdateDocumentRequest cloudAiDocumentOption. */
                    public cloudAiDocumentOption?: (google.cloud.contentwarehouse.v1.ICloudAIDocumentOption|null);

                    /** UpdateDocumentRequest updateOptions. */
                    public updateOptions?: (google.cloud.contentwarehouse.v1.IUpdateOptions|null);

                    /**
                     * Creates a new UpdateDocumentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateDocumentRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IUpdateDocumentRequest): google.cloud.contentwarehouse.v1.UpdateDocumentRequest;

                    /**
                     * Encodes the specified UpdateDocumentRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateDocumentRequest.verify|verify} messages.
                     * @param message UpdateDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IUpdateDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateDocumentRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateDocumentRequest.verify|verify} messages.
                     * @param message UpdateDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IUpdateDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateDocumentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.UpdateDocumentRequest;

                    /**
                     * Decodes an UpdateDocumentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.UpdateDocumentRequest;

                    /**
                     * Verifies an UpdateDocumentRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateDocumentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateDocumentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.UpdateDocumentRequest;

                    /**
                     * Creates a plain object from an UpdateDocumentRequest message. Also converts values to other types if specified.
                     * @param message UpdateDocumentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.UpdateDocumentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateDocumentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateDocumentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteDocumentRequest. */
                interface IDeleteDocumentRequest {

                    /** DeleteDocumentRequest name */
                    name?: (string|null);

                    /** DeleteDocumentRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);
                }

                /** Represents a DeleteDocumentRequest. */
                class DeleteDocumentRequest implements IDeleteDocumentRequest {

                    /**
                     * Constructs a new DeleteDocumentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDeleteDocumentRequest);

                    /** DeleteDocumentRequest name. */
                    public name: string;

                    /** DeleteDocumentRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /**
                     * Creates a new DeleteDocumentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteDocumentRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDeleteDocumentRequest): google.cloud.contentwarehouse.v1.DeleteDocumentRequest;

                    /**
                     * Encodes the specified DeleteDocumentRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteDocumentRequest.verify|verify} messages.
                     * @param message DeleteDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDeleteDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteDocumentRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteDocumentRequest.verify|verify} messages.
                     * @param message DeleteDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDeleteDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteDocumentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DeleteDocumentRequest;

                    /**
                     * Decodes a DeleteDocumentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DeleteDocumentRequest;

                    /**
                     * Verifies a DeleteDocumentRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteDocumentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteDocumentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DeleteDocumentRequest;

                    /**
                     * Creates a plain object from a DeleteDocumentRequest message. Also converts values to other types if specified.
                     * @param message DeleteDocumentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DeleteDocumentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteDocumentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteDocumentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SearchDocumentsRequest. */
                interface ISearchDocumentsRequest {

                    /** SearchDocumentsRequest parent */
                    parent?: (string|null);

                    /** SearchDocumentsRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** SearchDocumentsRequest documentQuery */
                    documentQuery?: (google.cloud.contentwarehouse.v1.IDocumentQuery|null);

                    /** SearchDocumentsRequest offset */
                    offset?: (number|null);

                    /** SearchDocumentsRequest pageSize */
                    pageSize?: (number|null);

                    /** SearchDocumentsRequest pageToken */
                    pageToken?: (string|null);

                    /** SearchDocumentsRequest orderBy */
                    orderBy?: (string|null);

                    /** SearchDocumentsRequest histogramQueries */
                    histogramQueries?: (google.cloud.contentwarehouse.v1.IHistogramQuery[]|null);

                    /** SearchDocumentsRequest requireTotalSize */
                    requireTotalSize?: (boolean|null);

                    /** SearchDocumentsRequest totalResultSize */
                    totalResultSize?: (google.cloud.contentwarehouse.v1.SearchDocumentsRequest.TotalResultSize|keyof typeof google.cloud.contentwarehouse.v1.SearchDocumentsRequest.TotalResultSize|null);

                    /** SearchDocumentsRequest qaSizeLimit */
                    qaSizeLimit?: (number|null);
                }

                /** Represents a SearchDocumentsRequest. */
                class SearchDocumentsRequest implements ISearchDocumentsRequest {

                    /**
                     * Constructs a new SearchDocumentsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ISearchDocumentsRequest);

                    /** SearchDocumentsRequest parent. */
                    public parent: string;

                    /** SearchDocumentsRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** SearchDocumentsRequest documentQuery. */
                    public documentQuery?: (google.cloud.contentwarehouse.v1.IDocumentQuery|null);

                    /** SearchDocumentsRequest offset. */
                    public offset: number;

                    /** SearchDocumentsRequest pageSize. */
                    public pageSize: number;

                    /** SearchDocumentsRequest pageToken. */
                    public pageToken: string;

                    /** SearchDocumentsRequest orderBy. */
                    public orderBy: string;

                    /** SearchDocumentsRequest histogramQueries. */
                    public histogramQueries: google.cloud.contentwarehouse.v1.IHistogramQuery[];

                    /** SearchDocumentsRequest requireTotalSize. */
                    public requireTotalSize: boolean;

                    /** SearchDocumentsRequest totalResultSize. */
                    public totalResultSize: (google.cloud.contentwarehouse.v1.SearchDocumentsRequest.TotalResultSize|keyof typeof google.cloud.contentwarehouse.v1.SearchDocumentsRequest.TotalResultSize);

                    /** SearchDocumentsRequest qaSizeLimit. */
                    public qaSizeLimit: number;

                    /**
                     * Creates a new SearchDocumentsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchDocumentsRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ISearchDocumentsRequest): google.cloud.contentwarehouse.v1.SearchDocumentsRequest;

                    /**
                     * Encodes the specified SearchDocumentsRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.SearchDocumentsRequest.verify|verify} messages.
                     * @param message SearchDocumentsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SearchDocumentsRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.SearchDocumentsRequest.verify|verify} messages.
                     * @param message SearchDocumentsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ISearchDocumentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SearchDocumentsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchDocumentsRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.SearchDocumentsRequest;

                    /**
                     * Decodes a SearchDocumentsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchDocumentsRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.SearchDocumentsRequest;

                    /**
                     * Verifies a SearchDocumentsRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SearchDocumentsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchDocumentsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.SearchDocumentsRequest;

                    /**
                     * Creates a plain object from a SearchDocumentsRequest message. Also converts values to other types if specified.
                     * @param message SearchDocumentsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.SearchDocumentsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SearchDocumentsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SearchDocumentsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SearchDocumentsRequest {

                    /** TotalResultSize enum. */
                    enum TotalResultSize {
                        TOTAL_RESULT_SIZE_UNSPECIFIED = 0,
                        ESTIMATED_SIZE = 1,
                        ACTUAL_SIZE = 2
                    }
                }

                /** Properties of a LockDocumentRequest. */
                interface ILockDocumentRequest {

                    /** LockDocumentRequest name */
                    name?: (string|null);

                    /** LockDocumentRequest collectionId */
                    collectionId?: (string|null);

                    /** LockDocumentRequest lockingUser */
                    lockingUser?: (google.cloud.contentwarehouse.v1.IUserInfo|null);
                }

                /** Represents a LockDocumentRequest. */
                class LockDocumentRequest implements ILockDocumentRequest {

                    /**
                     * Constructs a new LockDocumentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ILockDocumentRequest);

                    /** LockDocumentRequest name. */
                    public name: string;

                    /** LockDocumentRequest collectionId. */
                    public collectionId: string;

                    /** LockDocumentRequest lockingUser. */
                    public lockingUser?: (google.cloud.contentwarehouse.v1.IUserInfo|null);

                    /**
                     * Creates a new LockDocumentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns LockDocumentRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ILockDocumentRequest): google.cloud.contentwarehouse.v1.LockDocumentRequest;

                    /**
                     * Encodes the specified LockDocumentRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.LockDocumentRequest.verify|verify} messages.
                     * @param message LockDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ILockDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified LockDocumentRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.LockDocumentRequest.verify|verify} messages.
                     * @param message LockDocumentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ILockDocumentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a LockDocumentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns LockDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.LockDocumentRequest;

                    /**
                     * Decodes a LockDocumentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns LockDocumentRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.LockDocumentRequest;

                    /**
                     * Verifies a LockDocumentRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a LockDocumentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns LockDocumentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.LockDocumentRequest;

                    /**
                     * Creates a plain object from a LockDocumentRequest message. Also converts values to other types if specified.
                     * @param message LockDocumentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.LockDocumentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this LockDocumentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for LockDocumentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FetchAclRequest. */
                interface IFetchAclRequest {

                    /** FetchAclRequest resource */
                    resource?: (string|null);

                    /** FetchAclRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** FetchAclRequest projectOwner */
                    projectOwner?: (boolean|null);
                }

                /** Represents a FetchAclRequest. */
                class FetchAclRequest implements IFetchAclRequest {

                    /**
                     * Constructs a new FetchAclRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IFetchAclRequest);

                    /** FetchAclRequest resource. */
                    public resource: string;

                    /** FetchAclRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** FetchAclRequest projectOwner. */
                    public projectOwner: boolean;

                    /**
                     * Creates a new FetchAclRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FetchAclRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IFetchAclRequest): google.cloud.contentwarehouse.v1.FetchAclRequest;

                    /**
                     * Encodes the specified FetchAclRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.FetchAclRequest.verify|verify} messages.
                     * @param message FetchAclRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IFetchAclRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FetchAclRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.FetchAclRequest.verify|verify} messages.
                     * @param message FetchAclRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IFetchAclRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FetchAclRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FetchAclRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.FetchAclRequest;

                    /**
                     * Decodes a FetchAclRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FetchAclRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.FetchAclRequest;

                    /**
                     * Verifies a FetchAclRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a FetchAclRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FetchAclRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.FetchAclRequest;

                    /**
                     * Creates a plain object from a FetchAclRequest message. Also converts values to other types if specified.
                     * @param message FetchAclRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.FetchAclRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FetchAclRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FetchAclRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetAclRequest. */
                interface ISetAclRequest {

                    /** SetAclRequest resource */
                    resource?: (string|null);

                    /** SetAclRequest policy */
                    policy?: (google.iam.v1.IPolicy|null);

                    /** SetAclRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** SetAclRequest projectOwner */
                    projectOwner?: (boolean|null);
                }

                /** Represents a SetAclRequest. */
                class SetAclRequest implements ISetAclRequest {

                    /**
                     * Constructs a new SetAclRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ISetAclRequest);

                    /** SetAclRequest resource. */
                    public resource: string;

                    /** SetAclRequest policy. */
                    public policy?: (google.iam.v1.IPolicy|null);

                    /** SetAclRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** SetAclRequest projectOwner. */
                    public projectOwner: boolean;

                    /**
                     * Creates a new SetAclRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetAclRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ISetAclRequest): google.cloud.contentwarehouse.v1.SetAclRequest;

                    /**
                     * Encodes the specified SetAclRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.SetAclRequest.verify|verify} messages.
                     * @param message SetAclRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ISetAclRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetAclRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.SetAclRequest.verify|verify} messages.
                     * @param message SetAclRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ISetAclRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetAclRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetAclRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.SetAclRequest;

                    /**
                     * Decodes a SetAclRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetAclRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.SetAclRequest;

                    /**
                     * Verifies a SetAclRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SetAclRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetAclRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.SetAclRequest;

                    /**
                     * Creates a plain object from a SetAclRequest message. Also converts values to other types if specified.
                     * @param message SetAclRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.SetAclRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetAclRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetAclRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DocumentQuery. */
                interface IDocumentQuery {

                    /** DocumentQuery query */
                    query?: (string|null);

                    /** DocumentQuery isNlQuery */
                    isNlQuery?: (boolean|null);

                    /** DocumentQuery customPropertyFilter */
                    customPropertyFilter?: (string|null);

                    /** DocumentQuery timeFilters */
                    timeFilters?: (google.cloud.contentwarehouse.v1.ITimeFilter[]|null);

                    /** DocumentQuery documentSchemaNames */
                    documentSchemaNames?: (string[]|null);

                    /** DocumentQuery propertyFilter */
                    propertyFilter?: (google.cloud.contentwarehouse.v1.IPropertyFilter[]|null);

                    /** DocumentQuery fileTypeFilter */
                    fileTypeFilter?: (google.cloud.contentwarehouse.v1.IFileTypeFilter|null);

                    /** DocumentQuery folderNameFilter */
                    folderNameFilter?: (string|null);

                    /** DocumentQuery documentNameFilter */
                    documentNameFilter?: (string[]|null);

                    /** DocumentQuery queryContext */
                    queryContext?: (string[]|null);

                    /** DocumentQuery documentCreatorFilter */
                    documentCreatorFilter?: (string[]|null);

                    /** DocumentQuery customWeightsMetadata */
                    customWeightsMetadata?: (google.cloud.contentwarehouse.v1.ICustomWeightsMetadata|null);
                }

                /** Represents a DocumentQuery. */
                class DocumentQuery implements IDocumentQuery {

                    /**
                     * Constructs a new DocumentQuery.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDocumentQuery);

                    /** DocumentQuery query. */
                    public query: string;

                    /** DocumentQuery isNlQuery. */
                    public isNlQuery: boolean;

                    /** DocumentQuery customPropertyFilter. */
                    public customPropertyFilter: string;

                    /** DocumentQuery timeFilters. */
                    public timeFilters: google.cloud.contentwarehouse.v1.ITimeFilter[];

                    /** DocumentQuery documentSchemaNames. */
                    public documentSchemaNames: string[];

                    /** DocumentQuery propertyFilter. */
                    public propertyFilter: google.cloud.contentwarehouse.v1.IPropertyFilter[];

                    /** DocumentQuery fileTypeFilter. */
                    public fileTypeFilter?: (google.cloud.contentwarehouse.v1.IFileTypeFilter|null);

                    /** DocumentQuery folderNameFilter. */
                    public folderNameFilter: string;

                    /** DocumentQuery documentNameFilter. */
                    public documentNameFilter: string[];

                    /** DocumentQuery queryContext. */
                    public queryContext: string[];

                    /** DocumentQuery documentCreatorFilter. */
                    public documentCreatorFilter: string[];

                    /** DocumentQuery customWeightsMetadata. */
                    public customWeightsMetadata?: (google.cloud.contentwarehouse.v1.ICustomWeightsMetadata|null);

                    /**
                     * Creates a new DocumentQuery instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DocumentQuery instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDocumentQuery): google.cloud.contentwarehouse.v1.DocumentQuery;

                    /**
                     * Encodes the specified DocumentQuery message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DocumentQuery.verify|verify} messages.
                     * @param message DocumentQuery message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDocumentQuery, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DocumentQuery message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DocumentQuery.verify|verify} messages.
                     * @param message DocumentQuery message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDocumentQuery, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DocumentQuery message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DocumentQuery
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DocumentQuery;

                    /**
                     * Decodes a DocumentQuery message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DocumentQuery
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DocumentQuery;

                    /**
                     * Verifies a DocumentQuery message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DocumentQuery message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DocumentQuery
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DocumentQuery;

                    /**
                     * Creates a plain object from a DocumentQuery message. Also converts values to other types if specified.
                     * @param message DocumentQuery
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DocumentQuery, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DocumentQuery to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DocumentQuery
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimeFilter. */
                interface ITimeFilter {

                    /** TimeFilter timeRange */
                    timeRange?: (google.type.IInterval|null);

                    /** TimeFilter timeField */
                    timeField?: (google.cloud.contentwarehouse.v1.TimeFilter.TimeField|keyof typeof google.cloud.contentwarehouse.v1.TimeFilter.TimeField|null);
                }

                /** Represents a TimeFilter. */
                class TimeFilter implements ITimeFilter {

                    /**
                     * Constructs a new TimeFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ITimeFilter);

                    /** TimeFilter timeRange. */
                    public timeRange?: (google.type.IInterval|null);

                    /** TimeFilter timeField. */
                    public timeField: (google.cloud.contentwarehouse.v1.TimeFilter.TimeField|keyof typeof google.cloud.contentwarehouse.v1.TimeFilter.TimeField);

                    /**
                     * Creates a new TimeFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimeFilter instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ITimeFilter): google.cloud.contentwarehouse.v1.TimeFilter;

                    /**
                     * Encodes the specified TimeFilter message. Does not implicitly {@link google.cloud.contentwarehouse.v1.TimeFilter.verify|verify} messages.
                     * @param message TimeFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ITimeFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimeFilter message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.TimeFilter.verify|verify} messages.
                     * @param message TimeFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ITimeFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimeFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimeFilter
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.TimeFilter;

                    /**
                     * Decodes a TimeFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimeFilter
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.TimeFilter;

                    /**
                     * Verifies a TimeFilter message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a TimeFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimeFilter
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.TimeFilter;

                    /**
                     * Creates a plain object from a TimeFilter message. Also converts values to other types if specified.
                     * @param message TimeFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.TimeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimeFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimeFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace TimeFilter {

                    /** TimeField enum. */
                    enum TimeField {
                        TIME_FIELD_UNSPECIFIED = 0,
                        CREATE_TIME = 1,
                        UPDATE_TIME = 2,
                        DISPOSITION_TIME = 3
                    }
                }

                /** Properties of a PropertyFilter. */
                interface IPropertyFilter {

                    /** PropertyFilter documentSchemaName */
                    documentSchemaName?: (string|null);

                    /** PropertyFilter condition */
                    condition?: (string|null);
                }

                /** Represents a PropertyFilter. */
                class PropertyFilter implements IPropertyFilter {

                    /**
                     * Constructs a new PropertyFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IPropertyFilter);

                    /** PropertyFilter documentSchemaName. */
                    public documentSchemaName: string;

                    /** PropertyFilter condition. */
                    public condition: string;

                    /**
                     * Creates a new PropertyFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PropertyFilter instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IPropertyFilter): google.cloud.contentwarehouse.v1.PropertyFilter;

                    /**
                     * Encodes the specified PropertyFilter message. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyFilter.verify|verify} messages.
                     * @param message PropertyFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.PropertyFilter.verify|verify} messages.
                     * @param message PropertyFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PropertyFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PropertyFilter
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.PropertyFilter;

                    /**
                     * Decodes a PropertyFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PropertyFilter
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.PropertyFilter;

                    /**
                     * Verifies a PropertyFilter message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PropertyFilter
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.PropertyFilter;

                    /**
                     * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified.
                     * @param message PropertyFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.PropertyFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PropertyFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PropertyFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FileTypeFilter. */
                interface IFileTypeFilter {

                    /** FileTypeFilter fileType */
                    fileType?: (google.cloud.contentwarehouse.v1.FileTypeFilter.FileType|keyof typeof google.cloud.contentwarehouse.v1.FileTypeFilter.FileType|null);
                }

                /** Represents a FileTypeFilter. */
                class FileTypeFilter implements IFileTypeFilter {

                    /**
                     * Constructs a new FileTypeFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IFileTypeFilter);

                    /** FileTypeFilter fileType. */
                    public fileType: (google.cloud.contentwarehouse.v1.FileTypeFilter.FileType|keyof typeof google.cloud.contentwarehouse.v1.FileTypeFilter.FileType);

                    /**
                     * Creates a new FileTypeFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FileTypeFilter instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IFileTypeFilter): google.cloud.contentwarehouse.v1.FileTypeFilter;

                    /**
                     * Encodes the specified FileTypeFilter message. Does not implicitly {@link google.cloud.contentwarehouse.v1.FileTypeFilter.verify|verify} messages.
                     * @param message FileTypeFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IFileTypeFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FileTypeFilter message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.FileTypeFilter.verify|verify} messages.
                     * @param message FileTypeFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IFileTypeFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FileTypeFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FileTypeFilter
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.FileTypeFilter;

                    /**
                     * Decodes a FileTypeFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FileTypeFilter
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.FileTypeFilter;

                    /**
                     * Verifies a FileTypeFilter message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a FileTypeFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FileTypeFilter
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.FileTypeFilter;

                    /**
                     * Creates a plain object from a FileTypeFilter message. Also converts values to other types if specified.
                     * @param message FileTypeFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.FileTypeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FileTypeFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FileTypeFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace FileTypeFilter {

                    /** FileType enum. */
                    enum FileType {
                        FILE_TYPE_UNSPECIFIED = 0,
                        ALL = 1,
                        FOLDER = 2,
                        DOCUMENT = 3,
                        ROOT_FOLDER = 4
                    }
                }

                /** Properties of a CustomWeightsMetadata. */
                interface ICustomWeightsMetadata {

                    /** CustomWeightsMetadata weightedSchemaProperties */
                    weightedSchemaProperties?: (google.cloud.contentwarehouse.v1.IWeightedSchemaProperty[]|null);
                }

                /** Represents a CustomWeightsMetadata. */
                class CustomWeightsMetadata implements ICustomWeightsMetadata {

                    /**
                     * Constructs a new CustomWeightsMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICustomWeightsMetadata);

                    /** CustomWeightsMetadata weightedSchemaProperties. */
                    public weightedSchemaProperties: google.cloud.contentwarehouse.v1.IWeightedSchemaProperty[];

                    /**
                     * Creates a new CustomWeightsMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CustomWeightsMetadata instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICustomWeightsMetadata): google.cloud.contentwarehouse.v1.CustomWeightsMetadata;

                    /**
                     * Encodes the specified CustomWeightsMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CustomWeightsMetadata.verify|verify} messages.
                     * @param message CustomWeightsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICustomWeightsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CustomWeightsMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CustomWeightsMetadata.verify|verify} messages.
                     * @param message CustomWeightsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICustomWeightsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CustomWeightsMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CustomWeightsMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CustomWeightsMetadata;

                    /**
                     * Decodes a CustomWeightsMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CustomWeightsMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CustomWeightsMetadata;

                    /**
                     * Verifies a CustomWeightsMetadata message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CustomWeightsMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CustomWeightsMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CustomWeightsMetadata;

                    /**
                     * Creates a plain object from a CustomWeightsMetadata message. Also converts values to other types if specified.
                     * @param message CustomWeightsMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CustomWeightsMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CustomWeightsMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CustomWeightsMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WeightedSchemaProperty. */
                interface IWeightedSchemaProperty {

                    /** WeightedSchemaProperty documentSchemaName */
                    documentSchemaName?: (string|null);

                    /** WeightedSchemaProperty propertyNames */
                    propertyNames?: (string[]|null);
                }

                /** Represents a WeightedSchemaProperty. */
                class WeightedSchemaProperty implements IWeightedSchemaProperty {

                    /**
                     * Constructs a new WeightedSchemaProperty.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IWeightedSchemaProperty);

                    /** WeightedSchemaProperty documentSchemaName. */
                    public documentSchemaName: string;

                    /** WeightedSchemaProperty propertyNames. */
                    public propertyNames: string[];

                    /**
                     * Creates a new WeightedSchemaProperty instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WeightedSchemaProperty instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IWeightedSchemaProperty): google.cloud.contentwarehouse.v1.WeightedSchemaProperty;

                    /**
                     * Encodes the specified WeightedSchemaProperty message. Does not implicitly {@link google.cloud.contentwarehouse.v1.WeightedSchemaProperty.verify|verify} messages.
                     * @param message WeightedSchemaProperty message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IWeightedSchemaProperty, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WeightedSchemaProperty message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.WeightedSchemaProperty.verify|verify} messages.
                     * @param message WeightedSchemaProperty message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IWeightedSchemaProperty, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WeightedSchemaProperty message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WeightedSchemaProperty
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.WeightedSchemaProperty;

                    /**
                     * Decodes a WeightedSchemaProperty message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WeightedSchemaProperty
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.WeightedSchemaProperty;

                    /**
                     * Verifies a WeightedSchemaProperty message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a WeightedSchemaProperty message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WeightedSchemaProperty
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.WeightedSchemaProperty;

                    /**
                     * Creates a plain object from a WeightedSchemaProperty message. Also converts values to other types if specified.
                     * @param message WeightedSchemaProperty
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.WeightedSchemaProperty, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WeightedSchemaProperty to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WeightedSchemaProperty
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a HistogramQuery. */
                interface IHistogramQuery {

                    /** HistogramQuery histogramQuery */
                    histogramQuery?: (string|null);

                    /** HistogramQuery requirePreciseResultSize */
                    requirePreciseResultSize?: (boolean|null);

                    /** HistogramQuery filters */
                    filters?: (google.cloud.contentwarehouse.v1.IHistogramQueryPropertyNameFilter|null);
                }

                /** Represents a HistogramQuery. */
                class HistogramQuery implements IHistogramQuery {

                    /**
                     * Constructs a new HistogramQuery.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IHistogramQuery);

                    /** HistogramQuery histogramQuery. */
                    public histogramQuery: string;

                    /** HistogramQuery requirePreciseResultSize. */
                    public requirePreciseResultSize: boolean;

                    /** HistogramQuery filters. */
                    public filters?: (google.cloud.contentwarehouse.v1.IHistogramQueryPropertyNameFilter|null);

                    /**
                     * Creates a new HistogramQuery instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns HistogramQuery instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IHistogramQuery): google.cloud.contentwarehouse.v1.HistogramQuery;

                    /**
                     * Encodes the specified HistogramQuery message. Does not implicitly {@link google.cloud.contentwarehouse.v1.HistogramQuery.verify|verify} messages.
                     * @param message HistogramQuery message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IHistogramQuery, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified HistogramQuery message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.HistogramQuery.verify|verify} messages.
                     * @param message HistogramQuery message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IHistogramQuery, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a HistogramQuery message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns HistogramQuery
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.HistogramQuery;

                    /**
                     * Decodes a HistogramQuery message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns HistogramQuery
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.HistogramQuery;

                    /**
                     * Verifies a HistogramQuery message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a HistogramQuery message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns HistogramQuery
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.HistogramQuery;

                    /**
                     * Creates a plain object from a HistogramQuery message. Also converts values to other types if specified.
                     * @param message HistogramQuery
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.HistogramQuery, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this HistogramQuery to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for HistogramQuery
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a HistogramQueryPropertyNameFilter. */
                interface IHistogramQueryPropertyNameFilter {

                    /** HistogramQueryPropertyNameFilter documentSchemas */
                    documentSchemas?: (string[]|null);

                    /** HistogramQueryPropertyNameFilter propertyNames */
                    propertyNames?: (string[]|null);

                    /** HistogramQueryPropertyNameFilter yAxis */
                    yAxis?: (google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter.HistogramYAxis|keyof typeof google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter.HistogramYAxis|null);
                }

                /** Represents a HistogramQueryPropertyNameFilter. */
                class HistogramQueryPropertyNameFilter implements IHistogramQueryPropertyNameFilter {

                    /**
                     * Constructs a new HistogramQueryPropertyNameFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IHistogramQueryPropertyNameFilter);

                    /** HistogramQueryPropertyNameFilter documentSchemas. */
                    public documentSchemas: string[];

                    /** HistogramQueryPropertyNameFilter propertyNames. */
                    public propertyNames: string[];

                    /** HistogramQueryPropertyNameFilter yAxis. */
                    public yAxis: (google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter.HistogramYAxis|keyof typeof google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter.HistogramYAxis);

                    /**
                     * Creates a new HistogramQueryPropertyNameFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns HistogramQueryPropertyNameFilter instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IHistogramQueryPropertyNameFilter): google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter;

                    /**
                     * Encodes the specified HistogramQueryPropertyNameFilter message. Does not implicitly {@link google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter.verify|verify} messages.
                     * @param message HistogramQueryPropertyNameFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IHistogramQueryPropertyNameFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified HistogramQueryPropertyNameFilter message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter.verify|verify} messages.
                     * @param message HistogramQueryPropertyNameFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IHistogramQueryPropertyNameFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a HistogramQueryPropertyNameFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns HistogramQueryPropertyNameFilter
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter;

                    /**
                     * Decodes a HistogramQueryPropertyNameFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns HistogramQueryPropertyNameFilter
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter;

                    /**
                     * Verifies a HistogramQueryPropertyNameFilter message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a HistogramQueryPropertyNameFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns HistogramQueryPropertyNameFilter
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter;

                    /**
                     * Creates a plain object from a HistogramQueryPropertyNameFilter message. Also converts values to other types if specified.
                     * @param message HistogramQueryPropertyNameFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.HistogramQueryPropertyNameFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this HistogramQueryPropertyNameFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for HistogramQueryPropertyNameFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace HistogramQueryPropertyNameFilter {

                    /** HistogramYAxis enum. */
                    enum HistogramYAxis {
                        HISTOGRAM_YAXIS_DOCUMENT = 0,
                        HISTOGRAM_YAXIS_PROPERTY = 1
                    }
                }

                /** Properties of a HistogramQueryResult. */
                interface IHistogramQueryResult {

                    /** HistogramQueryResult histogramQuery */
                    histogramQuery?: (string|null);

                    /** HistogramQueryResult histogram */
                    histogram?: ({ [k: string]: (number|Long|string) }|null);
                }

                /** Represents a HistogramQueryResult. */
                class HistogramQueryResult implements IHistogramQueryResult {

                    /**
                     * Constructs a new HistogramQueryResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IHistogramQueryResult);

                    /** HistogramQueryResult histogramQuery. */
                    public histogramQuery: string;

                    /** HistogramQueryResult histogram. */
                    public histogram: { [k: string]: (number|Long|string) };

                    /**
                     * Creates a new HistogramQueryResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns HistogramQueryResult instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IHistogramQueryResult): google.cloud.contentwarehouse.v1.HistogramQueryResult;

                    /**
                     * Encodes the specified HistogramQueryResult message. Does not implicitly {@link google.cloud.contentwarehouse.v1.HistogramQueryResult.verify|verify} messages.
                     * @param message HistogramQueryResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IHistogramQueryResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified HistogramQueryResult message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.HistogramQueryResult.verify|verify} messages.
                     * @param message HistogramQueryResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IHistogramQueryResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a HistogramQueryResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns HistogramQueryResult
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.HistogramQueryResult;

                    /**
                     * Decodes a HistogramQueryResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns HistogramQueryResult
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.HistogramQueryResult;

                    /**
                     * Verifies a HistogramQueryResult message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a HistogramQueryResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns HistogramQueryResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.HistogramQueryResult;

                    /**
                     * Creates a plain object from a HistogramQueryResult message. Also converts values to other types if specified.
                     * @param message HistogramQueryResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.HistogramQueryResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this HistogramQueryResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for HistogramQueryResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RuleSet. */
                interface IRuleSet {

                    /** RuleSet name */
                    name?: (string|null);

                    /** RuleSet description */
                    description?: (string|null);

                    /** RuleSet source */
                    source?: (string|null);

                    /** RuleSet rules */
                    rules?: (google.cloud.contentwarehouse.v1.IRule[]|null);
                }

                /** Represents a RuleSet. */
                class RuleSet implements IRuleSet {

                    /**
                     * Constructs a new RuleSet.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRuleSet);

                    /** RuleSet name. */
                    public name: string;

                    /** RuleSet description. */
                    public description: string;

                    /** RuleSet source. */
                    public source: string;

                    /** RuleSet rules. */
                    public rules: google.cloud.contentwarehouse.v1.IRule[];

                    /**
                     * Creates a new RuleSet instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RuleSet instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRuleSet): google.cloud.contentwarehouse.v1.RuleSet;

                    /**
                     * Encodes the specified RuleSet message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RuleSet.verify|verify} messages.
                     * @param message RuleSet message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRuleSet, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RuleSet message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RuleSet.verify|verify} messages.
                     * @param message RuleSet message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRuleSet, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RuleSet message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RuleSet
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RuleSet;

                    /**
                     * Decodes a RuleSet message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RuleSet
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RuleSet;

                    /**
                     * Verifies a RuleSet message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RuleSet message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RuleSet
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RuleSet;

                    /**
                     * Creates a plain object from a RuleSet message. Also converts values to other types if specified.
                     * @param message RuleSet
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RuleSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RuleSet to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RuleSet
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Rule. */
                interface IRule {

                    /** Rule description */
                    description?: (string|null);

                    /** Rule ruleId */
                    ruleId?: (string|null);

                    /** Rule triggerType */
                    triggerType?: (google.cloud.contentwarehouse.v1.Rule.TriggerType|keyof typeof google.cloud.contentwarehouse.v1.Rule.TriggerType|null);

                    /** Rule condition */
                    condition?: (string|null);

                    /** Rule actions */
                    actions?: (google.cloud.contentwarehouse.v1.IAction[]|null);
                }

                /** Represents a Rule. */
                class Rule implements IRule {

                    /**
                     * Constructs a new Rule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRule);

                    /** Rule description. */
                    public description: string;

                    /** Rule ruleId. */
                    public ruleId: string;

                    /** Rule triggerType. */
                    public triggerType: (google.cloud.contentwarehouse.v1.Rule.TriggerType|keyof typeof google.cloud.contentwarehouse.v1.Rule.TriggerType);

                    /** Rule condition. */
                    public condition: string;

                    /** Rule actions. */
                    public actions: google.cloud.contentwarehouse.v1.IAction[];

                    /**
                     * Creates a new Rule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Rule instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRule): google.cloud.contentwarehouse.v1.Rule;

                    /**
                     * Encodes the specified Rule message. Does not implicitly {@link google.cloud.contentwarehouse.v1.Rule.verify|verify} messages.
                     * @param message Rule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Rule message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.Rule.verify|verify} messages.
                     * @param message Rule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Rule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Rule
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.Rule;

                    /**
                     * Decodes a Rule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Rule
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.Rule;

                    /**
                     * Verifies a Rule message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Rule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Rule
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.Rule;

                    /**
                     * Creates a plain object from a Rule message. Also converts values to other types if specified.
                     * @param message Rule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.Rule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Rule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Rule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Rule {

                    /** TriggerType enum. */
                    enum TriggerType {
                        UNKNOWN = 0,
                        ON_CREATE = 1,
                        ON_UPDATE = 4,
                        ON_CREATE_LINK = 7,
                        ON_DELETE_LINK = 8
                    }
                }

                /** Properties of an Action. */
                interface IAction {

                    /** Action actionId */
                    actionId?: (string|null);

                    /** Action accessControl */
                    accessControl?: (google.cloud.contentwarehouse.v1.IAccessControlAction|null);

                    /** Action dataValidation */
                    dataValidation?: (google.cloud.contentwarehouse.v1.IDataValidationAction|null);

                    /** Action dataUpdate */
                    dataUpdate?: (google.cloud.contentwarehouse.v1.IDataUpdateAction|null);

                    /** Action addToFolder */
                    addToFolder?: (google.cloud.contentwarehouse.v1.IAddToFolderAction|null);

                    /** Action publishToPubSub */
                    publishToPubSub?: (google.cloud.contentwarehouse.v1.IPublishAction|null);

                    /** Action removeFromFolderAction */
                    removeFromFolderAction?: (google.cloud.contentwarehouse.v1.IRemoveFromFolderAction|null);

                    /** Action deleteDocumentAction */
                    deleteDocumentAction?: (google.cloud.contentwarehouse.v1.IDeleteDocumentAction|null);
                }

                /** Represents an Action. */
                class Action implements IAction {

                    /**
                     * Constructs a new Action.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IAction);

                    /** Action actionId. */
                    public actionId: string;

                    /** Action accessControl. */
                    public accessControl?: (google.cloud.contentwarehouse.v1.IAccessControlAction|null);

                    /** Action dataValidation. */
                    public dataValidation?: (google.cloud.contentwarehouse.v1.IDataValidationAction|null);

                    /** Action dataUpdate. */
                    public dataUpdate?: (google.cloud.contentwarehouse.v1.IDataUpdateAction|null);

                    /** Action addToFolder. */
                    public addToFolder?: (google.cloud.contentwarehouse.v1.IAddToFolderAction|null);

                    /** Action publishToPubSub. */
                    public publishToPubSub?: (google.cloud.contentwarehouse.v1.IPublishAction|null);

                    /** Action removeFromFolderAction. */
                    public removeFromFolderAction?: (google.cloud.contentwarehouse.v1.IRemoveFromFolderAction|null);

                    /** Action deleteDocumentAction. */
                    public deleteDocumentAction?: (google.cloud.contentwarehouse.v1.IDeleteDocumentAction|null);

                    /** Action action. */
                    public action?: ("accessControl"|"dataValidation"|"dataUpdate"|"addToFolder"|"publishToPubSub"|"removeFromFolderAction"|"deleteDocumentAction");

                    /**
                     * Creates a new Action instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Action instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IAction): google.cloud.contentwarehouse.v1.Action;

                    /**
                     * Encodes the specified Action message. Does not implicitly {@link google.cloud.contentwarehouse.v1.Action.verify|verify} messages.
                     * @param message Action message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Action message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.Action.verify|verify} messages.
                     * @param message Action message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an Action message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Action
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.Action;

                    /**
                     * Decodes an Action message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Action
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.Action;

                    /**
                     * Verifies an Action message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an Action message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Action
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.Action;

                    /**
                     * Creates a plain object from an Action message. Also converts values to other types if specified.
                     * @param message Action
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.Action, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Action to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Action
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AccessControlAction. */
                interface IAccessControlAction {

                    /** AccessControlAction operationType */
                    operationType?: (google.cloud.contentwarehouse.v1.AccessControlAction.OperationType|keyof typeof google.cloud.contentwarehouse.v1.AccessControlAction.OperationType|null);

                    /** AccessControlAction policy */
                    policy?: (google.iam.v1.IPolicy|null);
                }

                /** Represents an AccessControlAction. */
                class AccessControlAction implements IAccessControlAction {

                    /**
                     * Constructs a new AccessControlAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IAccessControlAction);

                    /** AccessControlAction operationType. */
                    public operationType: (google.cloud.contentwarehouse.v1.AccessControlAction.OperationType|keyof typeof google.cloud.contentwarehouse.v1.AccessControlAction.OperationType);

                    /** AccessControlAction policy. */
                    public policy?: (google.iam.v1.IPolicy|null);

                    /**
                     * Creates a new AccessControlAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AccessControlAction instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IAccessControlAction): google.cloud.contentwarehouse.v1.AccessControlAction;

                    /**
                     * Encodes the specified AccessControlAction message. Does not implicitly {@link google.cloud.contentwarehouse.v1.AccessControlAction.verify|verify} messages.
                     * @param message AccessControlAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AccessControlAction message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.AccessControlAction.verify|verify} messages.
                     * @param message AccessControlAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AccessControlAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AccessControlAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.AccessControlAction;

                    /**
                     * Decodes an AccessControlAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AccessControlAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.AccessControlAction;

                    /**
                     * Verifies an AccessControlAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an AccessControlAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AccessControlAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.AccessControlAction;

                    /**
                     * Creates a plain object from an AccessControlAction message. Also converts values to other types if specified.
                     * @param message AccessControlAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.AccessControlAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AccessControlAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AccessControlAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace AccessControlAction {

                    /** OperationType enum. */
                    enum OperationType {
                        UNKNOWN = 0,
                        ADD_POLICY_BINDING = 1,
                        REMOVE_POLICY_BINDING = 2,
                        REPLACE_POLICY_BINDING = 3
                    }
                }

                /** Properties of a DataValidationAction. */
                interface IDataValidationAction {

                    /** DataValidationAction conditions */
                    conditions?: ({ [k: string]: string }|null);
                }

                /** Represents a DataValidationAction. */
                class DataValidationAction implements IDataValidationAction {

                    /**
                     * Constructs a new DataValidationAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDataValidationAction);

                    /** DataValidationAction conditions. */
                    public conditions: { [k: string]: string };

                    /**
                     * Creates a new DataValidationAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DataValidationAction instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDataValidationAction): google.cloud.contentwarehouse.v1.DataValidationAction;

                    /**
                     * Encodes the specified DataValidationAction message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DataValidationAction.verify|verify} messages.
                     * @param message DataValidationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDataValidationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DataValidationAction message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DataValidationAction.verify|verify} messages.
                     * @param message DataValidationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDataValidationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DataValidationAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DataValidationAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DataValidationAction;

                    /**
                     * Decodes a DataValidationAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DataValidationAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DataValidationAction;

                    /**
                     * Verifies a DataValidationAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DataValidationAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DataValidationAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DataValidationAction;

                    /**
                     * Creates a plain object from a DataValidationAction message. Also converts values to other types if specified.
                     * @param message DataValidationAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DataValidationAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DataValidationAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DataValidationAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DataUpdateAction. */
                interface IDataUpdateAction {

                    /** DataUpdateAction entries */
                    entries?: ({ [k: string]: string }|null);
                }

                /** Represents a DataUpdateAction. */
                class DataUpdateAction implements IDataUpdateAction {

                    /**
                     * Constructs a new DataUpdateAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDataUpdateAction);

                    /** DataUpdateAction entries. */
                    public entries: { [k: string]: string };

                    /**
                     * Creates a new DataUpdateAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DataUpdateAction instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDataUpdateAction): google.cloud.contentwarehouse.v1.DataUpdateAction;

                    /**
                     * Encodes the specified DataUpdateAction message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DataUpdateAction.verify|verify} messages.
                     * @param message DataUpdateAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDataUpdateAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DataUpdateAction message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DataUpdateAction.verify|verify} messages.
                     * @param message DataUpdateAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDataUpdateAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DataUpdateAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DataUpdateAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DataUpdateAction;

                    /**
                     * Decodes a DataUpdateAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DataUpdateAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DataUpdateAction;

                    /**
                     * Verifies a DataUpdateAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DataUpdateAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DataUpdateAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DataUpdateAction;

                    /**
                     * Creates a plain object from a DataUpdateAction message. Also converts values to other types if specified.
                     * @param message DataUpdateAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DataUpdateAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DataUpdateAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DataUpdateAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddToFolderAction. */
                interface IAddToFolderAction {

                    /** AddToFolderAction folders */
                    folders?: (string[]|null);
                }

                /** Represents an AddToFolderAction. */
                class AddToFolderAction implements IAddToFolderAction {

                    /**
                     * Constructs a new AddToFolderAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IAddToFolderAction);

                    /** AddToFolderAction folders. */
                    public folders: string[];

                    /**
                     * Creates a new AddToFolderAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddToFolderAction instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IAddToFolderAction): google.cloud.contentwarehouse.v1.AddToFolderAction;

                    /**
                     * Encodes the specified AddToFolderAction message. Does not implicitly {@link google.cloud.contentwarehouse.v1.AddToFolderAction.verify|verify} messages.
                     * @param message AddToFolderAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IAddToFolderAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddToFolderAction message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.AddToFolderAction.verify|verify} messages.
                     * @param message AddToFolderAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IAddToFolderAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddToFolderAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddToFolderAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.AddToFolderAction;

                    /**
                     * Decodes an AddToFolderAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddToFolderAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.AddToFolderAction;

                    /**
                     * Verifies an AddToFolderAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an AddToFolderAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddToFolderAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.AddToFolderAction;

                    /**
                     * Creates a plain object from an AddToFolderAction message. Also converts values to other types if specified.
                     * @param message AddToFolderAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.AddToFolderAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddToFolderAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddToFolderAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFromFolderAction. */
                interface IRemoveFromFolderAction {

                    /** RemoveFromFolderAction condition */
                    condition?: (string|null);

                    /** RemoveFromFolderAction folder */
                    folder?: (string|null);
                }

                /** Represents a RemoveFromFolderAction. */
                class RemoveFromFolderAction implements IRemoveFromFolderAction {

                    /**
                     * Constructs a new RemoveFromFolderAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRemoveFromFolderAction);

                    /** RemoveFromFolderAction condition. */
                    public condition: string;

                    /** RemoveFromFolderAction folder. */
                    public folder: string;

                    /**
                     * Creates a new RemoveFromFolderAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFromFolderAction instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRemoveFromFolderAction): google.cloud.contentwarehouse.v1.RemoveFromFolderAction;

                    /**
                     * Encodes the specified RemoveFromFolderAction message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RemoveFromFolderAction.verify|verify} messages.
                     * @param message RemoveFromFolderAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRemoveFromFolderAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFromFolderAction message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RemoveFromFolderAction.verify|verify} messages.
                     * @param message RemoveFromFolderAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRemoveFromFolderAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFromFolderAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFromFolderAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RemoveFromFolderAction;

                    /**
                     * Decodes a RemoveFromFolderAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFromFolderAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RemoveFromFolderAction;

                    /**
                     * Verifies a RemoveFromFolderAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RemoveFromFolderAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFromFolderAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RemoveFromFolderAction;

                    /**
                     * Creates a plain object from a RemoveFromFolderAction message. Also converts values to other types if specified.
                     * @param message RemoveFromFolderAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RemoveFromFolderAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFromFolderAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFromFolderAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PublishAction. */
                interface IPublishAction {

                    /** PublishAction topicId */
                    topicId?: (string|null);

                    /** PublishAction messages */
                    messages?: (string[]|null);
                }

                /** Represents a PublishAction. */
                class PublishAction implements IPublishAction {

                    /**
                     * Constructs a new PublishAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IPublishAction);

                    /** PublishAction topicId. */
                    public topicId: string;

                    /** PublishAction messages. */
                    public messages: string[];

                    /**
                     * Creates a new PublishAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PublishAction instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IPublishAction): google.cloud.contentwarehouse.v1.PublishAction;

                    /**
                     * Encodes the specified PublishAction message. Does not implicitly {@link google.cloud.contentwarehouse.v1.PublishAction.verify|verify} messages.
                     * @param message PublishAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IPublishAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PublishAction message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.PublishAction.verify|verify} messages.
                     * @param message PublishAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IPublishAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PublishAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PublishAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.PublishAction;

                    /**
                     * Decodes a PublishAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PublishAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.PublishAction;

                    /**
                     * Verifies a PublishAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PublishAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PublishAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.PublishAction;

                    /**
                     * Creates a plain object from a PublishAction message. Also converts values to other types if specified.
                     * @param message PublishAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.PublishAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PublishAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PublishAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteDocumentAction. */
                interface IDeleteDocumentAction {

                    /** DeleteDocumentAction enableHardDelete */
                    enableHardDelete?: (boolean|null);
                }

                /** Represents a DeleteDocumentAction. */
                class DeleteDocumentAction implements IDeleteDocumentAction {

                    /**
                     * Constructs a new DeleteDocumentAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDeleteDocumentAction);

                    /** DeleteDocumentAction enableHardDelete. */
                    public enableHardDelete: boolean;

                    /**
                     * Creates a new DeleteDocumentAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteDocumentAction instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDeleteDocumentAction): google.cloud.contentwarehouse.v1.DeleteDocumentAction;

                    /**
                     * Encodes the specified DeleteDocumentAction message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteDocumentAction.verify|verify} messages.
                     * @param message DeleteDocumentAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDeleteDocumentAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteDocumentAction message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteDocumentAction.verify|verify} messages.
                     * @param message DeleteDocumentAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDeleteDocumentAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteDocumentAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteDocumentAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DeleteDocumentAction;

                    /**
                     * Decodes a DeleteDocumentAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteDocumentAction
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DeleteDocumentAction;

                    /**
                     * Verifies a DeleteDocumentAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteDocumentAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteDocumentAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DeleteDocumentAction;

                    /**
                     * Creates a plain object from a DeleteDocumentAction message. Also converts values to other types if specified.
                     * @param message DeleteDocumentAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DeleteDocumentAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteDocumentAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteDocumentAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RuleEngineOutput. */
                interface IRuleEngineOutput {

                    /** RuleEngineOutput documentName */
                    documentName?: (string|null);

                    /** RuleEngineOutput ruleEvaluatorOutput */
                    ruleEvaluatorOutput?: (google.cloud.contentwarehouse.v1.IRuleEvaluatorOutput|null);

                    /** RuleEngineOutput actionExecutorOutput */
                    actionExecutorOutput?: (google.cloud.contentwarehouse.v1.IActionExecutorOutput|null);
                }

                /** Represents a RuleEngineOutput. */
                class RuleEngineOutput implements IRuleEngineOutput {

                    /**
                     * Constructs a new RuleEngineOutput.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRuleEngineOutput);

                    /** RuleEngineOutput documentName. */
                    public documentName: string;

                    /** RuleEngineOutput ruleEvaluatorOutput. */
                    public ruleEvaluatorOutput?: (google.cloud.contentwarehouse.v1.IRuleEvaluatorOutput|null);

                    /** RuleEngineOutput actionExecutorOutput. */
                    public actionExecutorOutput?: (google.cloud.contentwarehouse.v1.IActionExecutorOutput|null);

                    /**
                     * Creates a new RuleEngineOutput instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RuleEngineOutput instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRuleEngineOutput): google.cloud.contentwarehouse.v1.RuleEngineOutput;

                    /**
                     * Encodes the specified RuleEngineOutput message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RuleEngineOutput.verify|verify} messages.
                     * @param message RuleEngineOutput message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRuleEngineOutput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RuleEngineOutput message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RuleEngineOutput.verify|verify} messages.
                     * @param message RuleEngineOutput message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRuleEngineOutput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RuleEngineOutput message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RuleEngineOutput
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RuleEngineOutput;

                    /**
                     * Decodes a RuleEngineOutput message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RuleEngineOutput
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RuleEngineOutput;

                    /**
                     * Verifies a RuleEngineOutput message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RuleEngineOutput message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RuleEngineOutput
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RuleEngineOutput;

                    /**
                     * Creates a plain object from a RuleEngineOutput message. Also converts values to other types if specified.
                     * @param message RuleEngineOutput
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RuleEngineOutput, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RuleEngineOutput to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RuleEngineOutput
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RuleEvaluatorOutput. */
                interface IRuleEvaluatorOutput {

                    /** RuleEvaluatorOutput triggeredRules */
                    triggeredRules?: (google.cloud.contentwarehouse.v1.IRule[]|null);

                    /** RuleEvaluatorOutput matchedRules */
                    matchedRules?: (google.cloud.contentwarehouse.v1.IRule[]|null);

                    /** RuleEvaluatorOutput invalidRules */
                    invalidRules?: (google.cloud.contentwarehouse.v1.IInvalidRule[]|null);
                }

                /** Represents a RuleEvaluatorOutput. */
                class RuleEvaluatorOutput implements IRuleEvaluatorOutput {

                    /**
                     * Constructs a new RuleEvaluatorOutput.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRuleEvaluatorOutput);

                    /** RuleEvaluatorOutput triggeredRules. */
                    public triggeredRules: google.cloud.contentwarehouse.v1.IRule[];

                    /** RuleEvaluatorOutput matchedRules. */
                    public matchedRules: google.cloud.contentwarehouse.v1.IRule[];

                    /** RuleEvaluatorOutput invalidRules. */
                    public invalidRules: google.cloud.contentwarehouse.v1.IInvalidRule[];

                    /**
                     * Creates a new RuleEvaluatorOutput instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RuleEvaluatorOutput instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRuleEvaluatorOutput): google.cloud.contentwarehouse.v1.RuleEvaluatorOutput;

                    /**
                     * Encodes the specified RuleEvaluatorOutput message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RuleEvaluatorOutput.verify|verify} messages.
                     * @param message RuleEvaluatorOutput message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRuleEvaluatorOutput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RuleEvaluatorOutput message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RuleEvaluatorOutput.verify|verify} messages.
                     * @param message RuleEvaluatorOutput message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRuleEvaluatorOutput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RuleEvaluatorOutput message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RuleEvaluatorOutput
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RuleEvaluatorOutput;

                    /**
                     * Decodes a RuleEvaluatorOutput message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RuleEvaluatorOutput
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RuleEvaluatorOutput;

                    /**
                     * Verifies a RuleEvaluatorOutput message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RuleEvaluatorOutput message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RuleEvaluatorOutput
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RuleEvaluatorOutput;

                    /**
                     * Creates a plain object from a RuleEvaluatorOutput message. Also converts values to other types if specified.
                     * @param message RuleEvaluatorOutput
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RuleEvaluatorOutput, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RuleEvaluatorOutput to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RuleEvaluatorOutput
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an InvalidRule. */
                interface IInvalidRule {

                    /** InvalidRule rule */
                    rule?: (google.cloud.contentwarehouse.v1.IRule|null);

                    /** InvalidRule error */
                    error?: (string|null);
                }

                /** Represents an InvalidRule. */
                class InvalidRule implements IInvalidRule {

                    /**
                     * Constructs a new InvalidRule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IInvalidRule);

                    /** InvalidRule rule. */
                    public rule?: (google.cloud.contentwarehouse.v1.IRule|null);

                    /** InvalidRule error. */
                    public error: string;

                    /**
                     * Creates a new InvalidRule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns InvalidRule instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IInvalidRule): google.cloud.contentwarehouse.v1.InvalidRule;

                    /**
                     * Encodes the specified InvalidRule message. Does not implicitly {@link google.cloud.contentwarehouse.v1.InvalidRule.verify|verify} messages.
                     * @param message InvalidRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IInvalidRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified InvalidRule message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.InvalidRule.verify|verify} messages.
                     * @param message InvalidRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IInvalidRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an InvalidRule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns InvalidRule
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.InvalidRule;

                    /**
                     * Decodes an InvalidRule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns InvalidRule
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.InvalidRule;

                    /**
                     * Verifies an InvalidRule message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an InvalidRule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns InvalidRule
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.InvalidRule;

                    /**
                     * Creates a plain object from an InvalidRule message. Also converts values to other types if specified.
                     * @param message InvalidRule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.InvalidRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this InvalidRule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for InvalidRule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActionExecutorOutput. */
                interface IActionExecutorOutput {

                    /** ActionExecutorOutput ruleActionsPairs */
                    ruleActionsPairs?: (google.cloud.contentwarehouse.v1.IRuleActionsPair[]|null);
                }

                /** Represents an ActionExecutorOutput. */
                class ActionExecutorOutput implements IActionExecutorOutput {

                    /**
                     * Constructs a new ActionExecutorOutput.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IActionExecutorOutput);

                    /** ActionExecutorOutput ruleActionsPairs. */
                    public ruleActionsPairs: google.cloud.contentwarehouse.v1.IRuleActionsPair[];

                    /**
                     * Creates a new ActionExecutorOutput instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActionExecutorOutput instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IActionExecutorOutput): google.cloud.contentwarehouse.v1.ActionExecutorOutput;

                    /**
                     * Encodes the specified ActionExecutorOutput message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ActionExecutorOutput.verify|verify} messages.
                     * @param message ActionExecutorOutput message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IActionExecutorOutput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActionExecutorOutput message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ActionExecutorOutput.verify|verify} messages.
                     * @param message ActionExecutorOutput message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IActionExecutorOutput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActionExecutorOutput message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActionExecutorOutput
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ActionExecutorOutput;

                    /**
                     * Decodes an ActionExecutorOutput message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActionExecutorOutput
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ActionExecutorOutput;

                    /**
                     * Verifies an ActionExecutorOutput message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an ActionExecutorOutput message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActionExecutorOutput
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ActionExecutorOutput;

                    /**
                     * Creates a plain object from an ActionExecutorOutput message. Also converts values to other types if specified.
                     * @param message ActionExecutorOutput
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ActionExecutorOutput, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActionExecutorOutput to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActionExecutorOutput
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RuleActionsPair. */
                interface IRuleActionsPair {

                    /** RuleActionsPair rule */
                    rule?: (google.cloud.contentwarehouse.v1.IRule|null);

                    /** RuleActionsPair actionOutputs */
                    actionOutputs?: (google.cloud.contentwarehouse.v1.IActionOutput[]|null);
                }

                /** Represents a RuleActionsPair. */
                class RuleActionsPair implements IRuleActionsPair {

                    /**
                     * Constructs a new RuleActionsPair.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRuleActionsPair);

                    /** RuleActionsPair rule. */
                    public rule?: (google.cloud.contentwarehouse.v1.IRule|null);

                    /** RuleActionsPair actionOutputs. */
                    public actionOutputs: google.cloud.contentwarehouse.v1.IActionOutput[];

                    /**
                     * Creates a new RuleActionsPair instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RuleActionsPair instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRuleActionsPair): google.cloud.contentwarehouse.v1.RuleActionsPair;

                    /**
                     * Encodes the specified RuleActionsPair message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RuleActionsPair.verify|verify} messages.
                     * @param message RuleActionsPair message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRuleActionsPair, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RuleActionsPair message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RuleActionsPair.verify|verify} messages.
                     * @param message RuleActionsPair message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRuleActionsPair, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RuleActionsPair message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RuleActionsPair
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RuleActionsPair;

                    /**
                     * Decodes a RuleActionsPair message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RuleActionsPair
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RuleActionsPair;

                    /**
                     * Verifies a RuleActionsPair message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RuleActionsPair message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RuleActionsPair
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RuleActionsPair;

                    /**
                     * Creates a plain object from a RuleActionsPair message. Also converts values to other types if specified.
                     * @param message RuleActionsPair
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RuleActionsPair, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RuleActionsPair to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RuleActionsPair
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActionOutput. */
                interface IActionOutput {

                    /** ActionOutput actionId */
                    actionId?: (string|null);

                    /** ActionOutput actionState */
                    actionState?: (google.cloud.contentwarehouse.v1.ActionOutput.State|keyof typeof google.cloud.contentwarehouse.v1.ActionOutput.State|null);

                    /** ActionOutput outputMessage */
                    outputMessage?: (string|null);
                }

                /** Represents an ActionOutput. */
                class ActionOutput implements IActionOutput {

                    /**
                     * Constructs a new ActionOutput.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IActionOutput);

                    /** ActionOutput actionId. */
                    public actionId: string;

                    /** ActionOutput actionState. */
                    public actionState: (google.cloud.contentwarehouse.v1.ActionOutput.State|keyof typeof google.cloud.contentwarehouse.v1.ActionOutput.State);

                    /** ActionOutput outputMessage. */
                    public outputMessage: string;

                    /**
                     * Creates a new ActionOutput instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActionOutput instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IActionOutput): google.cloud.contentwarehouse.v1.ActionOutput;

                    /**
                     * Encodes the specified ActionOutput message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ActionOutput.verify|verify} messages.
                     * @param message ActionOutput message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IActionOutput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActionOutput message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ActionOutput.verify|verify} messages.
                     * @param message ActionOutput message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IActionOutput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActionOutput message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActionOutput
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ActionOutput;

                    /**
                     * Decodes an ActionOutput message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActionOutput
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ActionOutput;

                    /**
                     * Verifies an ActionOutput message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an ActionOutput message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActionOutput
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ActionOutput;

                    /**
                     * Creates a plain object from an ActionOutput message. Also converts values to other types if specified.
                     * @param message ActionOutput
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ActionOutput, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActionOutput to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActionOutput
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ActionOutput {

                    /** State enum. */
                    enum State {
                        UNKNOWN = 0,
                        ACTION_SUCCEEDED = 1,
                        ACTION_FAILED = 2,
                        ACTION_TIMED_OUT = 3,
                        ACTION_PENDING = 4
                    }
                }

                /** Represents a PipelineService */
                class PipelineService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new PipelineService service.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     */
                    constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);

                    /**
                     * Creates new PipelineService service using the specified rpc implementation.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     * @returns RPC service. Useful where requests and/or responses are streamed.
                     */
                    public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): PipelineService;

                    /**
                     * Calls RunPipeline.
                     * @param request RunPipelineRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public runPipeline(request: google.cloud.contentwarehouse.v1.IRunPipelineRequest, callback: google.cloud.contentwarehouse.v1.PipelineService.RunPipelineCallback): void;

                    /**
                     * Calls RunPipeline.
                     * @param request RunPipelineRequest message or plain object
                     * @returns Promise
                     */
                    public runPipeline(request: google.cloud.contentwarehouse.v1.IRunPipelineRequest): Promise<google.longrunning.Operation>;
                }

                namespace PipelineService {

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.PipelineService|runPipeline}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RunPipelineCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a RunPipelineRequest. */
                interface IRunPipelineRequest {

                    /** RunPipelineRequest name */
                    name?: (string|null);

                    /** RunPipelineRequest gcsIngestPipeline */
                    gcsIngestPipeline?: (google.cloud.contentwarehouse.v1.IGcsIngestPipeline|null);

                    /** RunPipelineRequest gcsIngestWithDocAiProcessorsPipeline */
                    gcsIngestWithDocAiProcessorsPipeline?: (google.cloud.contentwarehouse.v1.IGcsIngestWithDocAiProcessorsPipeline|null);

                    /** RunPipelineRequest exportCdwPipeline */
                    exportCdwPipeline?: (google.cloud.contentwarehouse.v1.IExportToCdwPipeline|null);

                    /** RunPipelineRequest processWithDocAiPipeline */
                    processWithDocAiPipeline?: (google.cloud.contentwarehouse.v1.IProcessWithDocAiPipeline|null);

                    /** RunPipelineRequest requestMetadata */
                    requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);
                }

                /** Represents a RunPipelineRequest. */
                class RunPipelineRequest implements IRunPipelineRequest {

                    /**
                     * Constructs a new RunPipelineRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRunPipelineRequest);

                    /** RunPipelineRequest name. */
                    public name: string;

                    /** RunPipelineRequest gcsIngestPipeline. */
                    public gcsIngestPipeline?: (google.cloud.contentwarehouse.v1.IGcsIngestPipeline|null);

                    /** RunPipelineRequest gcsIngestWithDocAiProcessorsPipeline. */
                    public gcsIngestWithDocAiProcessorsPipeline?: (google.cloud.contentwarehouse.v1.IGcsIngestWithDocAiProcessorsPipeline|null);

                    /** RunPipelineRequest exportCdwPipeline. */
                    public exportCdwPipeline?: (google.cloud.contentwarehouse.v1.IExportToCdwPipeline|null);

                    /** RunPipelineRequest processWithDocAiPipeline. */
                    public processWithDocAiPipeline?: (google.cloud.contentwarehouse.v1.IProcessWithDocAiPipeline|null);

                    /** RunPipelineRequest requestMetadata. */
                    public requestMetadata?: (google.cloud.contentwarehouse.v1.IRequestMetadata|null);

                    /** RunPipelineRequest pipeline. */
                    public pipeline?: ("gcsIngestPipeline"|"gcsIngestWithDocAiProcessorsPipeline"|"exportCdwPipeline"|"processWithDocAiPipeline");

                    /**
                     * Creates a new RunPipelineRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RunPipelineRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRunPipelineRequest): google.cloud.contentwarehouse.v1.RunPipelineRequest;

                    /**
                     * Encodes the specified RunPipelineRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineRequest.verify|verify} messages.
                     * @param message RunPipelineRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRunPipelineRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RunPipelineRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineRequest.verify|verify} messages.
                     * @param message RunPipelineRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRunPipelineRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RunPipelineRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RunPipelineRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RunPipelineRequest;

                    /**
                     * Decodes a RunPipelineRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RunPipelineRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RunPipelineRequest;

                    /**
                     * Verifies a RunPipelineRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RunPipelineRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RunPipelineRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RunPipelineRequest;

                    /**
                     * Creates a plain object from a RunPipelineRequest message. Also converts values to other types if specified.
                     * @param message RunPipelineRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RunPipelineRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RunPipelineRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RunPipelineRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RunPipelineResponse. */
                interface IRunPipelineResponse {
                }

                /** Represents a RunPipelineResponse. */
                class RunPipelineResponse implements IRunPipelineResponse {

                    /**
                     * Constructs a new RunPipelineResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRunPipelineResponse);

                    /**
                     * Creates a new RunPipelineResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RunPipelineResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRunPipelineResponse): google.cloud.contentwarehouse.v1.RunPipelineResponse;

                    /**
                     * Encodes the specified RunPipelineResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineResponse.verify|verify} messages.
                     * @param message RunPipelineResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRunPipelineResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RunPipelineResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineResponse.verify|verify} messages.
                     * @param message RunPipelineResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRunPipelineResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RunPipelineResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RunPipelineResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RunPipelineResponse;

                    /**
                     * Decodes a RunPipelineResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RunPipelineResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RunPipelineResponse;

                    /**
                     * Verifies a RunPipelineResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RunPipelineResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RunPipelineResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RunPipelineResponse;

                    /**
                     * Creates a plain object from a RunPipelineResponse message. Also converts values to other types if specified.
                     * @param message RunPipelineResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RunPipelineResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RunPipelineResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RunPipelineResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RunPipelineMetadata. */
                interface IRunPipelineMetadata {

                    /** RunPipelineMetadata totalFileCount */
                    totalFileCount?: (number|null);

                    /** RunPipelineMetadata failedFileCount */
                    failedFileCount?: (number|null);

                    /** RunPipelineMetadata userInfo */
                    userInfo?: (google.cloud.contentwarehouse.v1.IUserInfo|null);

                    /** RunPipelineMetadata gcsIngestPipelineMetadata */
                    gcsIngestPipelineMetadata?: (google.cloud.contentwarehouse.v1.RunPipelineMetadata.IGcsIngestPipelineMetadata|null);

                    /** RunPipelineMetadata exportToCdwPipelineMetadata */
                    exportToCdwPipelineMetadata?: (google.cloud.contentwarehouse.v1.RunPipelineMetadata.IExportToCdwPipelineMetadata|null);

                    /** RunPipelineMetadata processWithDocAiPipelineMetadata */
                    processWithDocAiPipelineMetadata?: (google.cloud.contentwarehouse.v1.RunPipelineMetadata.IProcessWithDocAiPipelineMetadata|null);

                    /** RunPipelineMetadata individualDocumentStatuses */
                    individualDocumentStatuses?: (google.cloud.contentwarehouse.v1.RunPipelineMetadata.IIndividualDocumentStatus[]|null);
                }

                /** Represents a RunPipelineMetadata. */
                class RunPipelineMetadata implements IRunPipelineMetadata {

                    /**
                     * Constructs a new RunPipelineMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IRunPipelineMetadata);

                    /** RunPipelineMetadata totalFileCount. */
                    public totalFileCount: number;

                    /** RunPipelineMetadata failedFileCount. */
                    public failedFileCount: number;

                    /** RunPipelineMetadata userInfo. */
                    public userInfo?: (google.cloud.contentwarehouse.v1.IUserInfo|null);

                    /** RunPipelineMetadata gcsIngestPipelineMetadata. */
                    public gcsIngestPipelineMetadata?: (google.cloud.contentwarehouse.v1.RunPipelineMetadata.IGcsIngestPipelineMetadata|null);

                    /** RunPipelineMetadata exportToCdwPipelineMetadata. */
                    public exportToCdwPipelineMetadata?: (google.cloud.contentwarehouse.v1.RunPipelineMetadata.IExportToCdwPipelineMetadata|null);

                    /** RunPipelineMetadata processWithDocAiPipelineMetadata. */
                    public processWithDocAiPipelineMetadata?: (google.cloud.contentwarehouse.v1.RunPipelineMetadata.IProcessWithDocAiPipelineMetadata|null);

                    /** RunPipelineMetadata individualDocumentStatuses. */
                    public individualDocumentStatuses: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IIndividualDocumentStatus[];

                    /** RunPipelineMetadata pipelineMetadata. */
                    public pipelineMetadata?: ("gcsIngestPipelineMetadata"|"exportToCdwPipelineMetadata"|"processWithDocAiPipelineMetadata");

                    /**
                     * Creates a new RunPipelineMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RunPipelineMetadata instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IRunPipelineMetadata): google.cloud.contentwarehouse.v1.RunPipelineMetadata;

                    /**
                     * Encodes the specified RunPipelineMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.verify|verify} messages.
                     * @param message RunPipelineMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IRunPipelineMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RunPipelineMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.verify|verify} messages.
                     * @param message RunPipelineMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IRunPipelineMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RunPipelineMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RunPipelineMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RunPipelineMetadata;

                    /**
                     * Decodes a RunPipelineMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RunPipelineMetadata
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RunPipelineMetadata;

                    /**
                     * Verifies a RunPipelineMetadata message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RunPipelineMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RunPipelineMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RunPipelineMetadata;

                    /**
                     * Creates a plain object from a RunPipelineMetadata message. Also converts values to other types if specified.
                     * @param message RunPipelineMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RunPipelineMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RunPipelineMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace RunPipelineMetadata {

                    /** Properties of a GcsIngestPipelineMetadata. */
                    interface IGcsIngestPipelineMetadata {

                        /** GcsIngestPipelineMetadata inputPath */
                        inputPath?: (string|null);
                    }

                    /** Represents a GcsIngestPipelineMetadata. */
                    class GcsIngestPipelineMetadata implements IGcsIngestPipelineMetadata {

                        /**
                         * Constructs a new GcsIngestPipelineMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IGcsIngestPipelineMetadata);

                        /** GcsIngestPipelineMetadata inputPath. */
                        public inputPath: string;

                        /**
                         * Creates a new GcsIngestPipelineMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GcsIngestPipelineMetadata instance
                         */
                        public static create(properties?: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IGcsIngestPipelineMetadata): google.cloud.contentwarehouse.v1.RunPipelineMetadata.GcsIngestPipelineMetadata;

                        /**
                         * Encodes the specified GcsIngestPipelineMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.GcsIngestPipelineMetadata.verify|verify} messages.
                         * @param message GcsIngestPipelineMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IGcsIngestPipelineMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GcsIngestPipelineMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.GcsIngestPipelineMetadata.verify|verify} messages.
                         * @param message GcsIngestPipelineMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IGcsIngestPipelineMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GcsIngestPipelineMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GcsIngestPipelineMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RunPipelineMetadata.GcsIngestPipelineMetadata;

                        /**
                         * Decodes a GcsIngestPipelineMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GcsIngestPipelineMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RunPipelineMetadata.GcsIngestPipelineMetadata;

                        /**
                         * Verifies a GcsIngestPipelineMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GcsIngestPipelineMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GcsIngestPipelineMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RunPipelineMetadata.GcsIngestPipelineMetadata;

                        /**
                         * Creates a plain object from a GcsIngestPipelineMetadata message. Also converts values to other types if specified.
                         * @param message GcsIngestPipelineMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.GcsIngestPipelineMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GcsIngestPipelineMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GcsIngestPipelineMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExportToCdwPipelineMetadata. */
                    interface IExportToCdwPipelineMetadata {

                        /** ExportToCdwPipelineMetadata documents */
                        documents?: (string[]|null);

                        /** ExportToCdwPipelineMetadata docAiDataset */
                        docAiDataset?: (string|null);

                        /** ExportToCdwPipelineMetadata outputPath */
                        outputPath?: (string|null);
                    }

                    /** Represents an ExportToCdwPipelineMetadata. */
                    class ExportToCdwPipelineMetadata implements IExportToCdwPipelineMetadata {

                        /**
                         * Constructs a new ExportToCdwPipelineMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IExportToCdwPipelineMetadata);

                        /** ExportToCdwPipelineMetadata documents. */
                        public documents: string[];

                        /** ExportToCdwPipelineMetadata docAiDataset. */
                        public docAiDataset: string;

                        /** ExportToCdwPipelineMetadata outputPath. */
                        public outputPath: string;

                        /**
                         * Creates a new ExportToCdwPipelineMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExportToCdwPipelineMetadata instance
                         */
                        public static create(properties?: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IExportToCdwPipelineMetadata): google.cloud.contentwarehouse.v1.RunPipelineMetadata.ExportToCdwPipelineMetadata;

                        /**
                         * Encodes the specified ExportToCdwPipelineMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.ExportToCdwPipelineMetadata.verify|verify} messages.
                         * @param message ExportToCdwPipelineMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IExportToCdwPipelineMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExportToCdwPipelineMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.ExportToCdwPipelineMetadata.verify|verify} messages.
                         * @param message ExportToCdwPipelineMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IExportToCdwPipelineMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExportToCdwPipelineMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExportToCdwPipelineMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RunPipelineMetadata.ExportToCdwPipelineMetadata;

                        /**
                         * Decodes an ExportToCdwPipelineMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExportToCdwPipelineMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RunPipelineMetadata.ExportToCdwPipelineMetadata;

                        /**
                         * Verifies an ExportToCdwPipelineMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExportToCdwPipelineMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExportToCdwPipelineMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RunPipelineMetadata.ExportToCdwPipelineMetadata;

                        /**
                         * Creates a plain object from an ExportToCdwPipelineMetadata message. Also converts values to other types if specified.
                         * @param message ExportToCdwPipelineMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.ExportToCdwPipelineMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExportToCdwPipelineMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExportToCdwPipelineMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ProcessWithDocAiPipelineMetadata. */
                    interface IProcessWithDocAiPipelineMetadata {

                        /** ProcessWithDocAiPipelineMetadata documents */
                        documents?: (string[]|null);

                        /** ProcessWithDocAiPipelineMetadata processorInfo */
                        processorInfo?: (google.cloud.contentwarehouse.v1.IProcessorInfo|null);
                    }

                    /** Represents a ProcessWithDocAiPipelineMetadata. */
                    class ProcessWithDocAiPipelineMetadata implements IProcessWithDocAiPipelineMetadata {

                        /**
                         * Constructs a new ProcessWithDocAiPipelineMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IProcessWithDocAiPipelineMetadata);

                        /** ProcessWithDocAiPipelineMetadata documents. */
                        public documents: string[];

                        /** ProcessWithDocAiPipelineMetadata processorInfo. */
                        public processorInfo?: (google.cloud.contentwarehouse.v1.IProcessorInfo|null);

                        /**
                         * Creates a new ProcessWithDocAiPipelineMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProcessWithDocAiPipelineMetadata instance
                         */
                        public static create(properties?: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IProcessWithDocAiPipelineMetadata): google.cloud.contentwarehouse.v1.RunPipelineMetadata.ProcessWithDocAiPipelineMetadata;

                        /**
                         * Encodes the specified ProcessWithDocAiPipelineMetadata message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.ProcessWithDocAiPipelineMetadata.verify|verify} messages.
                         * @param message ProcessWithDocAiPipelineMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IProcessWithDocAiPipelineMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProcessWithDocAiPipelineMetadata message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.ProcessWithDocAiPipelineMetadata.verify|verify} messages.
                         * @param message ProcessWithDocAiPipelineMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IProcessWithDocAiPipelineMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProcessWithDocAiPipelineMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProcessWithDocAiPipelineMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RunPipelineMetadata.ProcessWithDocAiPipelineMetadata;

                        /**
                         * Decodes a ProcessWithDocAiPipelineMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProcessWithDocAiPipelineMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RunPipelineMetadata.ProcessWithDocAiPipelineMetadata;

                        /**
                         * Verifies a ProcessWithDocAiPipelineMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProcessWithDocAiPipelineMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProcessWithDocAiPipelineMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RunPipelineMetadata.ProcessWithDocAiPipelineMetadata;

                        /**
                         * Creates a plain object from a ProcessWithDocAiPipelineMetadata message. Also converts values to other types if specified.
                         * @param message ProcessWithDocAiPipelineMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.ProcessWithDocAiPipelineMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProcessWithDocAiPipelineMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProcessWithDocAiPipelineMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IndividualDocumentStatus. */
                    interface IIndividualDocumentStatus {

                        /** IndividualDocumentStatus documentId */
                        documentId?: (string|null);

                        /** IndividualDocumentStatus status */
                        status?: (google.rpc.IStatus|null);
                    }

                    /** Represents an IndividualDocumentStatus. */
                    class IndividualDocumentStatus implements IIndividualDocumentStatus {

                        /**
                         * Constructs a new IndividualDocumentStatus.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IIndividualDocumentStatus);

                        /** IndividualDocumentStatus documentId. */
                        public documentId: string;

                        /** IndividualDocumentStatus status. */
                        public status?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new IndividualDocumentStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IndividualDocumentStatus instance
                         */
                        public static create(properties?: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IIndividualDocumentStatus): google.cloud.contentwarehouse.v1.RunPipelineMetadata.IndividualDocumentStatus;

                        /**
                         * Encodes the specified IndividualDocumentStatus message. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.IndividualDocumentStatus.verify|verify} messages.
                         * @param message IndividualDocumentStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IIndividualDocumentStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IndividualDocumentStatus message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.RunPipelineMetadata.IndividualDocumentStatus.verify|verify} messages.
                         * @param message IndividualDocumentStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IIndividualDocumentStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IndividualDocumentStatus message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IndividualDocumentStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.RunPipelineMetadata.IndividualDocumentStatus;

                        /**
                         * Decodes an IndividualDocumentStatus message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IndividualDocumentStatus
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.RunPipelineMetadata.IndividualDocumentStatus;

                        /**
                         * Verifies an IndividualDocumentStatus message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates an IndividualDocumentStatus message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IndividualDocumentStatus
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.RunPipelineMetadata.IndividualDocumentStatus;

                        /**
                         * Creates a plain object from an IndividualDocumentStatus message. Also converts values to other types if specified.
                         * @param message IndividualDocumentStatus
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.contentwarehouse.v1.RunPipelineMetadata.IndividualDocumentStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IndividualDocumentStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IndividualDocumentStatus
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a ProcessorInfo. */
                interface IProcessorInfo {

                    /** ProcessorInfo processorName */
                    processorName?: (string|null);

                    /** ProcessorInfo documentType */
                    documentType?: (string|null);

                    /** ProcessorInfo schemaName */
                    schemaName?: (string|null);
                }

                /** Represents a ProcessorInfo. */
                class ProcessorInfo implements IProcessorInfo {

                    /**
                     * Constructs a new ProcessorInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IProcessorInfo);

                    /** ProcessorInfo processorName. */
                    public processorName: string;

                    /** ProcessorInfo documentType. */
                    public documentType: string;

                    /** ProcessorInfo schemaName. */
                    public schemaName: string;

                    /**
                     * Creates a new ProcessorInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProcessorInfo instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IProcessorInfo): google.cloud.contentwarehouse.v1.ProcessorInfo;

                    /**
                     * Encodes the specified ProcessorInfo message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ProcessorInfo.verify|verify} messages.
                     * @param message ProcessorInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IProcessorInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProcessorInfo message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ProcessorInfo.verify|verify} messages.
                     * @param message ProcessorInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IProcessorInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProcessorInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProcessorInfo
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ProcessorInfo;

                    /**
                     * Decodes a ProcessorInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProcessorInfo
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ProcessorInfo;

                    /**
                     * Verifies a ProcessorInfo message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ProcessorInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProcessorInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ProcessorInfo;

                    /**
                     * Creates a plain object from a ProcessorInfo message. Also converts values to other types if specified.
                     * @param message ProcessorInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ProcessorInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProcessorInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProcessorInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an IngestPipelineConfig. */
                interface IIngestPipelineConfig {

                    /** IngestPipelineConfig documentAclPolicy */
                    documentAclPolicy?: (google.iam.v1.IPolicy|null);

                    /** IngestPipelineConfig enableDocumentTextExtraction */
                    enableDocumentTextExtraction?: (boolean|null);

                    /** IngestPipelineConfig folder */
                    folder?: (string|null);

                    /** IngestPipelineConfig cloudFunction */
                    cloudFunction?: (string|null);
                }

                /** Represents an IngestPipelineConfig. */
                class IngestPipelineConfig implements IIngestPipelineConfig {

                    /**
                     * Constructs a new IngestPipelineConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IIngestPipelineConfig);

                    /** IngestPipelineConfig documentAclPolicy. */
                    public documentAclPolicy?: (google.iam.v1.IPolicy|null);

                    /** IngestPipelineConfig enableDocumentTextExtraction. */
                    public enableDocumentTextExtraction: boolean;

                    /** IngestPipelineConfig folder. */
                    public folder: string;

                    /** IngestPipelineConfig cloudFunction. */
                    public cloudFunction: string;

                    /**
                     * Creates a new IngestPipelineConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns IngestPipelineConfig instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IIngestPipelineConfig): google.cloud.contentwarehouse.v1.IngestPipelineConfig;

                    /**
                     * Encodes the specified IngestPipelineConfig message. Does not implicitly {@link google.cloud.contentwarehouse.v1.IngestPipelineConfig.verify|verify} messages.
                     * @param message IngestPipelineConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IIngestPipelineConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified IngestPipelineConfig message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.IngestPipelineConfig.verify|verify} messages.
                     * @param message IngestPipelineConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IIngestPipelineConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an IngestPipelineConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns IngestPipelineConfig
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.IngestPipelineConfig;

                    /**
                     * Decodes an IngestPipelineConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns IngestPipelineConfig
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.IngestPipelineConfig;

                    /**
                     * Verifies an IngestPipelineConfig message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an IngestPipelineConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns IngestPipelineConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.IngestPipelineConfig;

                    /**
                     * Creates a plain object from an IngestPipelineConfig message. Also converts values to other types if specified.
                     * @param message IngestPipelineConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.IngestPipelineConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this IngestPipelineConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for IngestPipelineConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GcsIngestPipeline. */
                interface IGcsIngestPipeline {

                    /** GcsIngestPipeline inputPath */
                    inputPath?: (string|null);

                    /** GcsIngestPipeline schemaName */
                    schemaName?: (string|null);

                    /** GcsIngestPipeline processorType */
                    processorType?: (string|null);

                    /** GcsIngestPipeline skipIngestedDocuments */
                    skipIngestedDocuments?: (boolean|null);

                    /** GcsIngestPipeline pipelineConfig */
                    pipelineConfig?: (google.cloud.contentwarehouse.v1.IIngestPipelineConfig|null);
                }

                /** Represents a GcsIngestPipeline. */
                class GcsIngestPipeline implements IGcsIngestPipeline {

                    /**
                     * Constructs a new GcsIngestPipeline.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IGcsIngestPipeline);

                    /** GcsIngestPipeline inputPath. */
                    public inputPath: string;

                    /** GcsIngestPipeline schemaName. */
                    public schemaName: string;

                    /** GcsIngestPipeline processorType. */
                    public processorType: string;

                    /** GcsIngestPipeline skipIngestedDocuments. */
                    public skipIngestedDocuments: boolean;

                    /** GcsIngestPipeline pipelineConfig. */
                    public pipelineConfig?: (google.cloud.contentwarehouse.v1.IIngestPipelineConfig|null);

                    /**
                     * Creates a new GcsIngestPipeline instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GcsIngestPipeline instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IGcsIngestPipeline): google.cloud.contentwarehouse.v1.GcsIngestPipeline;

                    /**
                     * Encodes the specified GcsIngestPipeline message. Does not implicitly {@link google.cloud.contentwarehouse.v1.GcsIngestPipeline.verify|verify} messages.
                     * @param message GcsIngestPipeline message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IGcsIngestPipeline, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GcsIngestPipeline message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.GcsIngestPipeline.verify|verify} messages.
                     * @param message GcsIngestPipeline message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IGcsIngestPipeline, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GcsIngestPipeline message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GcsIngestPipeline
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.GcsIngestPipeline;

                    /**
                     * Decodes a GcsIngestPipeline message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GcsIngestPipeline
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.GcsIngestPipeline;

                    /**
                     * Verifies a GcsIngestPipeline message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GcsIngestPipeline message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GcsIngestPipeline
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.GcsIngestPipeline;

                    /**
                     * Creates a plain object from a GcsIngestPipeline message. Also converts values to other types if specified.
                     * @param message GcsIngestPipeline
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.GcsIngestPipeline, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GcsIngestPipeline to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GcsIngestPipeline
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GcsIngestWithDocAiProcessorsPipeline. */
                interface IGcsIngestWithDocAiProcessorsPipeline {

                    /** GcsIngestWithDocAiProcessorsPipeline inputPath */
                    inputPath?: (string|null);

                    /** GcsIngestWithDocAiProcessorsPipeline splitClassifyProcessorInfo */
                    splitClassifyProcessorInfo?: (google.cloud.contentwarehouse.v1.IProcessorInfo|null);

                    /** GcsIngestWithDocAiProcessorsPipeline extractProcessorInfos */
                    extractProcessorInfos?: (google.cloud.contentwarehouse.v1.IProcessorInfo[]|null);

                    /** GcsIngestWithDocAiProcessorsPipeline processorResultsFolderPath */
                    processorResultsFolderPath?: (string|null);

                    /** GcsIngestWithDocAiProcessorsPipeline skipIngestedDocuments */
                    skipIngestedDocuments?: (boolean|null);

                    /** GcsIngestWithDocAiProcessorsPipeline pipelineConfig */
                    pipelineConfig?: (google.cloud.contentwarehouse.v1.IIngestPipelineConfig|null);
                }

                /** Represents a GcsIngestWithDocAiProcessorsPipeline. */
                class GcsIngestWithDocAiProcessorsPipeline implements IGcsIngestWithDocAiProcessorsPipeline {

                    /**
                     * Constructs a new GcsIngestWithDocAiProcessorsPipeline.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IGcsIngestWithDocAiProcessorsPipeline);

                    /** GcsIngestWithDocAiProcessorsPipeline inputPath. */
                    public inputPath: string;

                    /** GcsIngestWithDocAiProcessorsPipeline splitClassifyProcessorInfo. */
                    public splitClassifyProcessorInfo?: (google.cloud.contentwarehouse.v1.IProcessorInfo|null);

                    /** GcsIngestWithDocAiProcessorsPipeline extractProcessorInfos. */
                    public extractProcessorInfos: google.cloud.contentwarehouse.v1.IProcessorInfo[];

                    /** GcsIngestWithDocAiProcessorsPipeline processorResultsFolderPath. */
                    public processorResultsFolderPath: string;

                    /** GcsIngestWithDocAiProcessorsPipeline skipIngestedDocuments. */
                    public skipIngestedDocuments: boolean;

                    /** GcsIngestWithDocAiProcessorsPipeline pipelineConfig. */
                    public pipelineConfig?: (google.cloud.contentwarehouse.v1.IIngestPipelineConfig|null);

                    /**
                     * Creates a new GcsIngestWithDocAiProcessorsPipeline instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GcsIngestWithDocAiProcessorsPipeline instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IGcsIngestWithDocAiProcessorsPipeline): google.cloud.contentwarehouse.v1.GcsIngestWithDocAiProcessorsPipeline;

                    /**
                     * Encodes the specified GcsIngestWithDocAiProcessorsPipeline message. Does not implicitly {@link google.cloud.contentwarehouse.v1.GcsIngestWithDocAiProcessorsPipeline.verify|verify} messages.
                     * @param message GcsIngestWithDocAiProcessorsPipeline message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IGcsIngestWithDocAiProcessorsPipeline, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GcsIngestWithDocAiProcessorsPipeline message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.GcsIngestWithDocAiProcessorsPipeline.verify|verify} messages.
                     * @param message GcsIngestWithDocAiProcessorsPipeline message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IGcsIngestWithDocAiProcessorsPipeline, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GcsIngestWithDocAiProcessorsPipeline message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GcsIngestWithDocAiProcessorsPipeline
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.GcsIngestWithDocAiProcessorsPipeline;

                    /**
                     * Decodes a GcsIngestWithDocAiProcessorsPipeline message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GcsIngestWithDocAiProcessorsPipeline
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.GcsIngestWithDocAiProcessorsPipeline;

                    /**
                     * Verifies a GcsIngestWithDocAiProcessorsPipeline message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GcsIngestWithDocAiProcessorsPipeline message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GcsIngestWithDocAiProcessorsPipeline
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.GcsIngestWithDocAiProcessorsPipeline;

                    /**
                     * Creates a plain object from a GcsIngestWithDocAiProcessorsPipeline message. Also converts values to other types if specified.
                     * @param message GcsIngestWithDocAiProcessorsPipeline
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.GcsIngestWithDocAiProcessorsPipeline, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GcsIngestWithDocAiProcessorsPipeline to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GcsIngestWithDocAiProcessorsPipeline
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportToCdwPipeline. */
                interface IExportToCdwPipeline {

                    /** ExportToCdwPipeline documents */
                    documents?: (string[]|null);

                    /** ExportToCdwPipeline exportFolderPath */
                    exportFolderPath?: (string|null);

                    /** ExportToCdwPipeline docAiDataset */
                    docAiDataset?: (string|null);

                    /** ExportToCdwPipeline trainingSplitRatio */
                    trainingSplitRatio?: (number|null);
                }

                /** Represents an ExportToCdwPipeline. */
                class ExportToCdwPipeline implements IExportToCdwPipeline {

                    /**
                     * Constructs a new ExportToCdwPipeline.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IExportToCdwPipeline);

                    /** ExportToCdwPipeline documents. */
                    public documents: string[];

                    /** ExportToCdwPipeline exportFolderPath. */
                    public exportFolderPath: string;

                    /** ExportToCdwPipeline docAiDataset. */
                    public docAiDataset: string;

                    /** ExportToCdwPipeline trainingSplitRatio. */
                    public trainingSplitRatio: number;

                    /**
                     * Creates a new ExportToCdwPipeline instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportToCdwPipeline instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IExportToCdwPipeline): google.cloud.contentwarehouse.v1.ExportToCdwPipeline;

                    /**
                     * Encodes the specified ExportToCdwPipeline message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ExportToCdwPipeline.verify|verify} messages.
                     * @param message ExportToCdwPipeline message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IExportToCdwPipeline, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportToCdwPipeline message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ExportToCdwPipeline.verify|verify} messages.
                     * @param message ExportToCdwPipeline message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IExportToCdwPipeline, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportToCdwPipeline message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportToCdwPipeline
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ExportToCdwPipeline;

                    /**
                     * Decodes an ExportToCdwPipeline message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportToCdwPipeline
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ExportToCdwPipeline;

                    /**
                     * Verifies an ExportToCdwPipeline message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an ExportToCdwPipeline message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportToCdwPipeline
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ExportToCdwPipeline;

                    /**
                     * Creates a plain object from an ExportToCdwPipeline message. Also converts values to other types if specified.
                     * @param message ExportToCdwPipeline
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ExportToCdwPipeline, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportToCdwPipeline to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportToCdwPipeline
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProcessWithDocAiPipeline. */
                interface IProcessWithDocAiPipeline {

                    /** ProcessWithDocAiPipeline documents */
                    documents?: (string[]|null);

                    /** ProcessWithDocAiPipeline exportFolderPath */
                    exportFolderPath?: (string|null);

                    /** ProcessWithDocAiPipeline processorInfo */
                    processorInfo?: (google.cloud.contentwarehouse.v1.IProcessorInfo|null);

                    /** ProcessWithDocAiPipeline processorResultsFolderPath */
                    processorResultsFolderPath?: (string|null);
                }

                /** Represents a ProcessWithDocAiPipeline. */
                class ProcessWithDocAiPipeline implements IProcessWithDocAiPipeline {

                    /**
                     * Constructs a new ProcessWithDocAiPipeline.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IProcessWithDocAiPipeline);

                    /** ProcessWithDocAiPipeline documents. */
                    public documents: string[];

                    /** ProcessWithDocAiPipeline exportFolderPath. */
                    public exportFolderPath: string;

                    /** ProcessWithDocAiPipeline processorInfo. */
                    public processorInfo?: (google.cloud.contentwarehouse.v1.IProcessorInfo|null);

                    /** ProcessWithDocAiPipeline processorResultsFolderPath. */
                    public processorResultsFolderPath: string;

                    /**
                     * Creates a new ProcessWithDocAiPipeline instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProcessWithDocAiPipeline instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IProcessWithDocAiPipeline): google.cloud.contentwarehouse.v1.ProcessWithDocAiPipeline;

                    /**
                     * Encodes the specified ProcessWithDocAiPipeline message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ProcessWithDocAiPipeline.verify|verify} messages.
                     * @param message ProcessWithDocAiPipeline message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IProcessWithDocAiPipeline, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProcessWithDocAiPipeline message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ProcessWithDocAiPipeline.verify|verify} messages.
                     * @param message ProcessWithDocAiPipeline message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IProcessWithDocAiPipeline, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProcessWithDocAiPipeline message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProcessWithDocAiPipeline
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ProcessWithDocAiPipeline;

                    /**
                     * Decodes a ProcessWithDocAiPipeline message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProcessWithDocAiPipeline
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ProcessWithDocAiPipeline;

                    /**
                     * Verifies a ProcessWithDocAiPipeline message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ProcessWithDocAiPipeline message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProcessWithDocAiPipeline
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ProcessWithDocAiPipeline;

                    /**
                     * Creates a plain object from a ProcessWithDocAiPipeline message. Also converts values to other types if specified.
                     * @param message ProcessWithDocAiPipeline
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ProcessWithDocAiPipeline, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProcessWithDocAiPipeline to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProcessWithDocAiPipeline
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a RuleSetService */
                class RuleSetService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new RuleSetService service.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     */
                    constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);

                    /**
                     * Creates new RuleSetService service using the specified rpc implementation.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     * @returns RPC service. Useful where requests and/or responses are streamed.
                     */
                    public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): RuleSetService;

                    /**
                     * Calls CreateRuleSet.
                     * @param request CreateRuleSetRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RuleSet
                     */
                    public createRuleSet(request: google.cloud.contentwarehouse.v1.ICreateRuleSetRequest, callback: google.cloud.contentwarehouse.v1.RuleSetService.CreateRuleSetCallback): void;

                    /**
                     * Calls CreateRuleSet.
                     * @param request CreateRuleSetRequest message or plain object
                     * @returns Promise
                     */
                    public createRuleSet(request: google.cloud.contentwarehouse.v1.ICreateRuleSetRequest): Promise<google.cloud.contentwarehouse.v1.RuleSet>;

                    /**
                     * Calls GetRuleSet.
                     * @param request GetRuleSetRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RuleSet
                     */
                    public getRuleSet(request: google.cloud.contentwarehouse.v1.IGetRuleSetRequest, callback: google.cloud.contentwarehouse.v1.RuleSetService.GetRuleSetCallback): void;

                    /**
                     * Calls GetRuleSet.
                     * @param request GetRuleSetRequest message or plain object
                     * @returns Promise
                     */
                    public getRuleSet(request: google.cloud.contentwarehouse.v1.IGetRuleSetRequest): Promise<google.cloud.contentwarehouse.v1.RuleSet>;

                    /**
                     * Calls UpdateRuleSet.
                     * @param request UpdateRuleSetRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RuleSet
                     */
                    public updateRuleSet(request: google.cloud.contentwarehouse.v1.IUpdateRuleSetRequest, callback: google.cloud.contentwarehouse.v1.RuleSetService.UpdateRuleSetCallback): void;

                    /**
                     * Calls UpdateRuleSet.
                     * @param request UpdateRuleSetRequest message or plain object
                     * @returns Promise
                     */
                    public updateRuleSet(request: google.cloud.contentwarehouse.v1.IUpdateRuleSetRequest): Promise<google.cloud.contentwarehouse.v1.RuleSet>;

                    /**
                     * Calls DeleteRuleSet.
                     * @param request DeleteRuleSetRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteRuleSet(request: google.cloud.contentwarehouse.v1.IDeleteRuleSetRequest, callback: google.cloud.contentwarehouse.v1.RuleSetService.DeleteRuleSetCallback): void;

                    /**
                     * Calls DeleteRuleSet.
                     * @param request DeleteRuleSetRequest message or plain object
                     * @returns Promise
                     */
                    public deleteRuleSet(request: google.cloud.contentwarehouse.v1.IDeleteRuleSetRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls ListRuleSets.
                     * @param request ListRuleSetsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListRuleSetsResponse
                     */
                    public listRuleSets(request: google.cloud.contentwarehouse.v1.IListRuleSetsRequest, callback: google.cloud.contentwarehouse.v1.RuleSetService.ListRuleSetsCallback): void;

                    /**
                     * Calls ListRuleSets.
                     * @param request ListRuleSetsRequest message or plain object
                     * @returns Promise
                     */
                    public listRuleSets(request: google.cloud.contentwarehouse.v1.IListRuleSetsRequest): Promise<google.cloud.contentwarehouse.v1.ListRuleSetsResponse>;
                }

                namespace RuleSetService {

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.RuleSetService|createRuleSet}.
                     * @param error Error, if any
                     * @param [response] RuleSet
                     */
                    type CreateRuleSetCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.RuleSet) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.RuleSetService|getRuleSet}.
                     * @param error Error, if any
                     * @param [response] RuleSet
                     */
                    type GetRuleSetCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.RuleSet) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.RuleSetService|updateRuleSet}.
                     * @param error Error, if any
                     * @param [response] RuleSet
                     */
                    type UpdateRuleSetCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.RuleSet) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.RuleSetService|deleteRuleSet}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteRuleSetCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.RuleSetService|listRuleSets}.
                     * @param error Error, if any
                     * @param [response] ListRuleSetsResponse
                     */
                    type ListRuleSetsCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.ListRuleSetsResponse) => void;
                }

                /** Properties of a CreateRuleSetRequest. */
                interface ICreateRuleSetRequest {

                    /** CreateRuleSetRequest parent */
                    parent?: (string|null);

                    /** CreateRuleSetRequest ruleSet */
                    ruleSet?: (google.cloud.contentwarehouse.v1.IRuleSet|null);
                }

                /** Represents a CreateRuleSetRequest. */
                class CreateRuleSetRequest implements ICreateRuleSetRequest {

                    /**
                     * Constructs a new CreateRuleSetRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICreateRuleSetRequest);

                    /** CreateRuleSetRequest parent. */
                    public parent: string;

                    /** CreateRuleSetRequest ruleSet. */
                    public ruleSet?: (google.cloud.contentwarehouse.v1.IRuleSet|null);

                    /**
                     * Creates a new CreateRuleSetRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateRuleSetRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICreateRuleSetRequest): google.cloud.contentwarehouse.v1.CreateRuleSetRequest;

                    /**
                     * Encodes the specified CreateRuleSetRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateRuleSetRequest.verify|verify} messages.
                     * @param message CreateRuleSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICreateRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateRuleSetRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateRuleSetRequest.verify|verify} messages.
                     * @param message CreateRuleSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICreateRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateRuleSetRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateRuleSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CreateRuleSetRequest;

                    /**
                     * Decodes a CreateRuleSetRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateRuleSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CreateRuleSetRequest;

                    /**
                     * Verifies a CreateRuleSetRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateRuleSetRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateRuleSetRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CreateRuleSetRequest;

                    /**
                     * Creates a plain object from a CreateRuleSetRequest message. Also converts values to other types if specified.
                     * @param message CreateRuleSetRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CreateRuleSetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateRuleSetRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateRuleSetRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetRuleSetRequest. */
                interface IGetRuleSetRequest {

                    /** GetRuleSetRequest name */
                    name?: (string|null);
                }

                /** Represents a GetRuleSetRequest. */
                class GetRuleSetRequest implements IGetRuleSetRequest {

                    /**
                     * Constructs a new GetRuleSetRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IGetRuleSetRequest);

                    /** GetRuleSetRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetRuleSetRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetRuleSetRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IGetRuleSetRequest): google.cloud.contentwarehouse.v1.GetRuleSetRequest;

                    /**
                     * Encodes the specified GetRuleSetRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.GetRuleSetRequest.verify|verify} messages.
                     * @param message GetRuleSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IGetRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetRuleSetRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.GetRuleSetRequest.verify|verify} messages.
                     * @param message GetRuleSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IGetRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetRuleSetRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetRuleSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.GetRuleSetRequest;

                    /**
                     * Decodes a GetRuleSetRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetRuleSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.GetRuleSetRequest;

                    /**
                     * Verifies a GetRuleSetRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetRuleSetRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetRuleSetRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.GetRuleSetRequest;

                    /**
                     * Creates a plain object from a GetRuleSetRequest message. Also converts values to other types if specified.
                     * @param message GetRuleSetRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.GetRuleSetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetRuleSetRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetRuleSetRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateRuleSetRequest. */
                interface IUpdateRuleSetRequest {

                    /** UpdateRuleSetRequest name */
                    name?: (string|null);

                    /** UpdateRuleSetRequest ruleSet */
                    ruleSet?: (google.cloud.contentwarehouse.v1.IRuleSet|null);
                }

                /** Represents an UpdateRuleSetRequest. */
                class UpdateRuleSetRequest implements IUpdateRuleSetRequest {

                    /**
                     * Constructs a new UpdateRuleSetRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IUpdateRuleSetRequest);

                    /** UpdateRuleSetRequest name. */
                    public name: string;

                    /** UpdateRuleSetRequest ruleSet. */
                    public ruleSet?: (google.cloud.contentwarehouse.v1.IRuleSet|null);

                    /**
                     * Creates a new UpdateRuleSetRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateRuleSetRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IUpdateRuleSetRequest): google.cloud.contentwarehouse.v1.UpdateRuleSetRequest;

                    /**
                     * Encodes the specified UpdateRuleSetRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateRuleSetRequest.verify|verify} messages.
                     * @param message UpdateRuleSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IUpdateRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateRuleSetRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateRuleSetRequest.verify|verify} messages.
                     * @param message UpdateRuleSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IUpdateRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateRuleSetRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateRuleSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.UpdateRuleSetRequest;

                    /**
                     * Decodes an UpdateRuleSetRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateRuleSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.UpdateRuleSetRequest;

                    /**
                     * Verifies an UpdateRuleSetRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateRuleSetRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateRuleSetRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.UpdateRuleSetRequest;

                    /**
                     * Creates a plain object from an UpdateRuleSetRequest message. Also converts values to other types if specified.
                     * @param message UpdateRuleSetRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.UpdateRuleSetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateRuleSetRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateRuleSetRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteRuleSetRequest. */
                interface IDeleteRuleSetRequest {

                    /** DeleteRuleSetRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteRuleSetRequest. */
                class DeleteRuleSetRequest implements IDeleteRuleSetRequest {

                    /**
                     * Constructs a new DeleteRuleSetRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDeleteRuleSetRequest);

                    /** DeleteRuleSetRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteRuleSetRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteRuleSetRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDeleteRuleSetRequest): google.cloud.contentwarehouse.v1.DeleteRuleSetRequest;

                    /**
                     * Encodes the specified DeleteRuleSetRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteRuleSetRequest.verify|verify} messages.
                     * @param message DeleteRuleSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDeleteRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteRuleSetRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteRuleSetRequest.verify|verify} messages.
                     * @param message DeleteRuleSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDeleteRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteRuleSetRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteRuleSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DeleteRuleSetRequest;

                    /**
                     * Decodes a DeleteRuleSetRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteRuleSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DeleteRuleSetRequest;

                    /**
                     * Verifies a DeleteRuleSetRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteRuleSetRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteRuleSetRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DeleteRuleSetRequest;

                    /**
                     * Creates a plain object from a DeleteRuleSetRequest message. Also converts values to other types if specified.
                     * @param message DeleteRuleSetRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DeleteRuleSetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteRuleSetRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteRuleSetRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListRuleSetsRequest. */
                interface IListRuleSetsRequest {

                    /** ListRuleSetsRequest parent */
                    parent?: (string|null);

                    /** ListRuleSetsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListRuleSetsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListRuleSetsRequest. */
                class ListRuleSetsRequest implements IListRuleSetsRequest {

                    /**
                     * Constructs a new ListRuleSetsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListRuleSetsRequest);

                    /** ListRuleSetsRequest parent. */
                    public parent: string;

                    /** ListRuleSetsRequest pageSize. */
                    public pageSize: number;

                    /** ListRuleSetsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListRuleSetsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListRuleSetsRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListRuleSetsRequest): google.cloud.contentwarehouse.v1.ListRuleSetsRequest;

                    /**
                     * Encodes the specified ListRuleSetsRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListRuleSetsRequest.verify|verify} messages.
                     * @param message ListRuleSetsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListRuleSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListRuleSetsRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListRuleSetsRequest.verify|verify} messages.
                     * @param message ListRuleSetsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListRuleSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListRuleSetsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListRuleSetsRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListRuleSetsRequest;

                    /**
                     * Decodes a ListRuleSetsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListRuleSetsRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListRuleSetsRequest;

                    /**
                     * Verifies a ListRuleSetsRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListRuleSetsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListRuleSetsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListRuleSetsRequest;

                    /**
                     * Creates a plain object from a ListRuleSetsRequest message. Also converts values to other types if specified.
                     * @param message ListRuleSetsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListRuleSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListRuleSetsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListRuleSetsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListRuleSetsResponse. */
                interface IListRuleSetsResponse {

                    /** ListRuleSetsResponse ruleSets */
                    ruleSets?: (google.cloud.contentwarehouse.v1.IRuleSet[]|null);

                    /** ListRuleSetsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListRuleSetsResponse. */
                class ListRuleSetsResponse implements IListRuleSetsResponse {

                    /**
                     * Constructs a new ListRuleSetsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListRuleSetsResponse);

                    /** ListRuleSetsResponse ruleSets. */
                    public ruleSets: google.cloud.contentwarehouse.v1.IRuleSet[];

                    /** ListRuleSetsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListRuleSetsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListRuleSetsResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListRuleSetsResponse): google.cloud.contentwarehouse.v1.ListRuleSetsResponse;

                    /**
                     * Encodes the specified ListRuleSetsResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListRuleSetsResponse.verify|verify} messages.
                     * @param message ListRuleSetsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListRuleSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListRuleSetsResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListRuleSetsResponse.verify|verify} messages.
                     * @param message ListRuleSetsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListRuleSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListRuleSetsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListRuleSetsResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListRuleSetsResponse;

                    /**
                     * Decodes a ListRuleSetsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListRuleSetsResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListRuleSetsResponse;

                    /**
                     * Verifies a ListRuleSetsResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListRuleSetsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListRuleSetsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListRuleSetsResponse;

                    /**
                     * Creates a plain object from a ListRuleSetsResponse message. Also converts values to other types if specified.
                     * @param message ListRuleSetsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListRuleSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListRuleSetsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListRuleSetsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SynonymSet. */
                interface ISynonymSet {

                    /** SynonymSet name */
                    name?: (string|null);

                    /** SynonymSet context */
                    context?: (string|null);

                    /** SynonymSet synonyms */
                    synonyms?: (google.cloud.contentwarehouse.v1.SynonymSet.ISynonym[]|null);
                }

                /** Represents a SynonymSet. */
                class SynonymSet implements ISynonymSet {

                    /**
                     * Constructs a new SynonymSet.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ISynonymSet);

                    /** SynonymSet name. */
                    public name: string;

                    /** SynonymSet context. */
                    public context: string;

                    /** SynonymSet synonyms. */
                    public synonyms: google.cloud.contentwarehouse.v1.SynonymSet.ISynonym[];

                    /**
                     * Creates a new SynonymSet instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SynonymSet instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ISynonymSet): google.cloud.contentwarehouse.v1.SynonymSet;

                    /**
                     * Encodes the specified SynonymSet message. Does not implicitly {@link google.cloud.contentwarehouse.v1.SynonymSet.verify|verify} messages.
                     * @param message SynonymSet message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ISynonymSet, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SynonymSet message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.SynonymSet.verify|verify} messages.
                     * @param message SynonymSet message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ISynonymSet, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SynonymSet message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SynonymSet
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.SynonymSet;

                    /**
                     * Decodes a SynonymSet message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SynonymSet
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.SynonymSet;

                    /**
                     * Verifies a SynonymSet message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SynonymSet message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SynonymSet
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.SynonymSet;

                    /**
                     * Creates a plain object from a SynonymSet message. Also converts values to other types if specified.
                     * @param message SynonymSet
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.SynonymSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SynonymSet to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SynonymSet
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SynonymSet {

                    /** Properties of a Synonym. */
                    interface ISynonym {

                        /** Synonym words */
                        words?: (string[]|null);
                    }

                    /** Represents a Synonym. */
                    class Synonym implements ISynonym {

                        /**
                         * Constructs a new Synonym.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.contentwarehouse.v1.SynonymSet.ISynonym);

                        /** Synonym words. */
                        public words: string[];

                        /**
                         * Creates a new Synonym instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Synonym instance
                         */
                        public static create(properties?: google.cloud.contentwarehouse.v1.SynonymSet.ISynonym): google.cloud.contentwarehouse.v1.SynonymSet.Synonym;

                        /**
                         * Encodes the specified Synonym message. Does not implicitly {@link google.cloud.contentwarehouse.v1.SynonymSet.Synonym.verify|verify} messages.
                         * @param message Synonym message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.contentwarehouse.v1.SynonymSet.ISynonym, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Synonym message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.SynonymSet.Synonym.verify|verify} messages.
                         * @param message Synonym message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.contentwarehouse.v1.SynonymSet.ISynonym, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Synonym message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Synonym
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.SynonymSet.Synonym;

                        /**
                         * Decodes a Synonym message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Synonym
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.SynonymSet.Synonym;

                        /**
                         * Verifies a Synonym message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Synonym message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Synonym
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.SynonymSet.Synonym;

                        /**
                         * Creates a plain object from a Synonym message. Also converts values to other types if specified.
                         * @param message Synonym
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.contentwarehouse.v1.SynonymSet.Synonym, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Synonym to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Synonym
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Represents a SynonymSetService */
                class SynonymSetService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new SynonymSetService service.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     */
                    constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);

                    /**
                     * Creates new SynonymSetService service using the specified rpc implementation.
                     * @param rpcImpl RPC implementation
                     * @param [requestDelimited=false] Whether requests are length-delimited
                     * @param [responseDelimited=false] Whether responses are length-delimited
                     * @returns RPC service. Useful where requests and/or responses are streamed.
                     */
                    public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): SynonymSetService;

                    /**
                     * Calls CreateSynonymSet.
                     * @param request CreateSynonymSetRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SynonymSet
                     */
                    public createSynonymSet(request: google.cloud.contentwarehouse.v1.ICreateSynonymSetRequest, callback: google.cloud.contentwarehouse.v1.SynonymSetService.CreateSynonymSetCallback): void;

                    /**
                     * Calls CreateSynonymSet.
                     * @param request CreateSynonymSetRequest message or plain object
                     * @returns Promise
                     */
                    public createSynonymSet(request: google.cloud.contentwarehouse.v1.ICreateSynonymSetRequest): Promise<google.cloud.contentwarehouse.v1.SynonymSet>;

                    /**
                     * Calls GetSynonymSet.
                     * @param request GetSynonymSetRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SynonymSet
                     */
                    public getSynonymSet(request: google.cloud.contentwarehouse.v1.IGetSynonymSetRequest, callback: google.cloud.contentwarehouse.v1.SynonymSetService.GetSynonymSetCallback): void;

                    /**
                     * Calls GetSynonymSet.
                     * @param request GetSynonymSetRequest message or plain object
                     * @returns Promise
                     */
                    public getSynonymSet(request: google.cloud.contentwarehouse.v1.IGetSynonymSetRequest): Promise<google.cloud.contentwarehouse.v1.SynonymSet>;

                    /**
                     * Calls UpdateSynonymSet.
                     * @param request UpdateSynonymSetRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SynonymSet
                     */
                    public updateSynonymSet(request: google.cloud.contentwarehouse.v1.IUpdateSynonymSetRequest, callback: google.cloud.contentwarehouse.v1.SynonymSetService.UpdateSynonymSetCallback): void;

                    /**
                     * Calls UpdateSynonymSet.
                     * @param request UpdateSynonymSetRequest message or plain object
                     * @returns Promise
                     */
                    public updateSynonymSet(request: google.cloud.contentwarehouse.v1.IUpdateSynonymSetRequest): Promise<google.cloud.contentwarehouse.v1.SynonymSet>;

                    /**
                     * Calls DeleteSynonymSet.
                     * @param request DeleteSynonymSetRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteSynonymSet(request: google.cloud.contentwarehouse.v1.IDeleteSynonymSetRequest, callback: google.cloud.contentwarehouse.v1.SynonymSetService.DeleteSynonymSetCallback): void;

                    /**
                     * Calls DeleteSynonymSet.
                     * @param request DeleteSynonymSetRequest message or plain object
                     * @returns Promise
                     */
                    public deleteSynonymSet(request: google.cloud.contentwarehouse.v1.IDeleteSynonymSetRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls ListSynonymSets.
                     * @param request ListSynonymSetsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListSynonymSetsResponse
                     */
                    public listSynonymSets(request: google.cloud.contentwarehouse.v1.IListSynonymSetsRequest, callback: google.cloud.contentwarehouse.v1.SynonymSetService.ListSynonymSetsCallback): void;

                    /**
                     * Calls ListSynonymSets.
                     * @param request ListSynonymSetsRequest message or plain object
                     * @returns Promise
                     */
                    public listSynonymSets(request: google.cloud.contentwarehouse.v1.IListSynonymSetsRequest): Promise<google.cloud.contentwarehouse.v1.ListSynonymSetsResponse>;
                }

                namespace SynonymSetService {

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.SynonymSetService|createSynonymSet}.
                     * @param error Error, if any
                     * @param [response] SynonymSet
                     */
                    type CreateSynonymSetCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.SynonymSet) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.SynonymSetService|getSynonymSet}.
                     * @param error Error, if any
                     * @param [response] SynonymSet
                     */
                    type GetSynonymSetCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.SynonymSet) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.SynonymSetService|updateSynonymSet}.
                     * @param error Error, if any
                     * @param [response] SynonymSet
                     */
                    type UpdateSynonymSetCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.SynonymSet) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.SynonymSetService|deleteSynonymSet}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteSynonymSetCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.contentwarehouse.v1.SynonymSetService|listSynonymSets}.
                     * @param error Error, if any
                     * @param [response] ListSynonymSetsResponse
                     */
                    type ListSynonymSetsCallback = (error: (Error|null), response?: google.cloud.contentwarehouse.v1.ListSynonymSetsResponse) => void;
                }

                /** Properties of a CreateSynonymSetRequest. */
                interface ICreateSynonymSetRequest {

                    /** CreateSynonymSetRequest parent */
                    parent?: (string|null);

                    /** CreateSynonymSetRequest synonymSet */
                    synonymSet?: (google.cloud.contentwarehouse.v1.ISynonymSet|null);
                }

                /** Represents a CreateSynonymSetRequest. */
                class CreateSynonymSetRequest implements ICreateSynonymSetRequest {

                    /**
                     * Constructs a new CreateSynonymSetRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.ICreateSynonymSetRequest);

                    /** CreateSynonymSetRequest parent. */
                    public parent: string;

                    /** CreateSynonymSetRequest synonymSet. */
                    public synonymSet?: (google.cloud.contentwarehouse.v1.ISynonymSet|null);

                    /**
                     * Creates a new CreateSynonymSetRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateSynonymSetRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.ICreateSynonymSetRequest): google.cloud.contentwarehouse.v1.CreateSynonymSetRequest;

                    /**
                     * Encodes the specified CreateSynonymSetRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateSynonymSetRequest.verify|verify} messages.
                     * @param message CreateSynonymSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.ICreateSynonymSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateSynonymSetRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.CreateSynonymSetRequest.verify|verify} messages.
                     * @param message CreateSynonymSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.ICreateSynonymSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateSynonymSetRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateSynonymSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.CreateSynonymSetRequest;

                    /**
                     * Decodes a CreateSynonymSetRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateSynonymSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.CreateSynonymSetRequest;

                    /**
                     * Verifies a CreateSynonymSetRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateSynonymSetRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateSynonymSetRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.CreateSynonymSetRequest;

                    /**
                     * Creates a plain object from a CreateSynonymSetRequest message. Also converts values to other types if specified.
                     * @param message CreateSynonymSetRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.CreateSynonymSetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateSynonymSetRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateSynonymSetRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetSynonymSetRequest. */
                interface IGetSynonymSetRequest {

                    /** GetSynonymSetRequest name */
                    name?: (string|null);
                }

                /** Represents a GetSynonymSetRequest. */
                class GetSynonymSetRequest implements IGetSynonymSetRequest {

                    /**
                     * Constructs a new GetSynonymSetRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IGetSynonymSetRequest);

                    /** GetSynonymSetRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetSynonymSetRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetSynonymSetRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IGetSynonymSetRequest): google.cloud.contentwarehouse.v1.GetSynonymSetRequest;

                    /**
                     * Encodes the specified GetSynonymSetRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.GetSynonymSetRequest.verify|verify} messages.
                     * @param message GetSynonymSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IGetSynonymSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetSynonymSetRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.GetSynonymSetRequest.verify|verify} messages.
                     * @param message GetSynonymSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IGetSynonymSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetSynonymSetRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetSynonymSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.GetSynonymSetRequest;

                    /**
                     * Decodes a GetSynonymSetRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetSynonymSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.GetSynonymSetRequest;

                    /**
                     * Verifies a GetSynonymSetRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetSynonymSetRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetSynonymSetRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.GetSynonymSetRequest;

                    /**
                     * Creates a plain object from a GetSynonymSetRequest message. Also converts values to other types if specified.
                     * @param message GetSynonymSetRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.GetSynonymSetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetSynonymSetRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetSynonymSetRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListSynonymSetsRequest. */
                interface IListSynonymSetsRequest {

                    /** ListSynonymSetsRequest parent */
                    parent?: (string|null);

                    /** ListSynonymSetsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListSynonymSetsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListSynonymSetsRequest. */
                class ListSynonymSetsRequest implements IListSynonymSetsRequest {

                    /**
                     * Constructs a new ListSynonymSetsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListSynonymSetsRequest);

                    /** ListSynonymSetsRequest parent. */
                    public parent: string;

                    /** ListSynonymSetsRequest pageSize. */
                    public pageSize: number;

                    /** ListSynonymSetsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListSynonymSetsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListSynonymSetsRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListSynonymSetsRequest): google.cloud.contentwarehouse.v1.ListSynonymSetsRequest;

                    /**
                     * Encodes the specified ListSynonymSetsRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListSynonymSetsRequest.verify|verify} messages.
                     * @param message ListSynonymSetsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListSynonymSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListSynonymSetsRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListSynonymSetsRequest.verify|verify} messages.
                     * @param message ListSynonymSetsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListSynonymSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListSynonymSetsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListSynonymSetsRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListSynonymSetsRequest;

                    /**
                     * Decodes a ListSynonymSetsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListSynonymSetsRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListSynonymSetsRequest;

                    /**
                     * Verifies a ListSynonymSetsRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListSynonymSetsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListSynonymSetsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListSynonymSetsRequest;

                    /**
                     * Creates a plain object from a ListSynonymSetsRequest message. Also converts values to other types if specified.
                     * @param message ListSynonymSetsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListSynonymSetsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListSynonymSetsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListSynonymSetsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListSynonymSetsResponse. */
                interface IListSynonymSetsResponse {

                    /** ListSynonymSetsResponse synonymSets */
                    synonymSets?: (google.cloud.contentwarehouse.v1.ISynonymSet[]|null);

                    /** ListSynonymSetsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListSynonymSetsResponse. */
                class ListSynonymSetsResponse implements IListSynonymSetsResponse {

                    /**
                     * Constructs a new ListSynonymSetsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IListSynonymSetsResponse);

                    /** ListSynonymSetsResponse synonymSets. */
                    public synonymSets: google.cloud.contentwarehouse.v1.ISynonymSet[];

                    /** ListSynonymSetsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListSynonymSetsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListSynonymSetsResponse instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IListSynonymSetsResponse): google.cloud.contentwarehouse.v1.ListSynonymSetsResponse;

                    /**
                     * Encodes the specified ListSynonymSetsResponse message. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListSynonymSetsResponse.verify|verify} messages.
                     * @param message ListSynonymSetsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IListSynonymSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListSynonymSetsResponse message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.ListSynonymSetsResponse.verify|verify} messages.
                     * @param message ListSynonymSetsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IListSynonymSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListSynonymSetsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListSynonymSetsResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.ListSynonymSetsResponse;

                    /**
                     * Decodes a ListSynonymSetsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListSynonymSetsResponse
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.ListSynonymSetsResponse;

                    /**
                     * Verifies a ListSynonymSetsResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListSynonymSetsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListSynonymSetsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.ListSynonymSetsResponse;

                    /**
                     * Creates a plain object from a ListSynonymSetsResponse message. Also converts values to other types if specified.
                     * @param message ListSynonymSetsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.ListSynonymSetsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListSynonymSetsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListSynonymSetsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateSynonymSetRequest. */
                interface IUpdateSynonymSetRequest {

                    /** UpdateSynonymSetRequest name */
                    name?: (string|null);

                    /** UpdateSynonymSetRequest synonymSet */
                    synonymSet?: (google.cloud.contentwarehouse.v1.ISynonymSet|null);
                }

                /** Represents an UpdateSynonymSetRequest. */
                class UpdateSynonymSetRequest implements IUpdateSynonymSetRequest {

                    /**
                     * Constructs a new UpdateSynonymSetRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IUpdateSynonymSetRequest);

                    /** UpdateSynonymSetRequest name. */
                    public name: string;

                    /** UpdateSynonymSetRequest synonymSet. */
                    public synonymSet?: (google.cloud.contentwarehouse.v1.ISynonymSet|null);

                    /**
                     * Creates a new UpdateSynonymSetRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateSynonymSetRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IUpdateSynonymSetRequest): google.cloud.contentwarehouse.v1.UpdateSynonymSetRequest;

                    /**
                     * Encodes the specified UpdateSynonymSetRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateSynonymSetRequest.verify|verify} messages.
                     * @param message UpdateSynonymSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IUpdateSynonymSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateSynonymSetRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.UpdateSynonymSetRequest.verify|verify} messages.
                     * @param message UpdateSynonymSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IUpdateSynonymSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateSynonymSetRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateSynonymSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.UpdateSynonymSetRequest;

                    /**
                     * Decodes an UpdateSynonymSetRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateSynonymSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.UpdateSynonymSetRequest;

                    /**
                     * Verifies an UpdateSynonymSetRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateSynonymSetRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateSynonymSetRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.UpdateSynonymSetRequest;

                    /**
                     * Creates a plain object from an UpdateSynonymSetRequest message. Also converts values to other types if specified.
                     * @param message UpdateSynonymSetRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.UpdateSynonymSetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateSynonymSetRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateSynonymSetRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteSynonymSetRequest. */
                interface IDeleteSynonymSetRequest {

                    /** DeleteSynonymSetRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteSynonymSetRequest. */
                class DeleteSynonymSetRequest implements IDeleteSynonymSetRequest {

                    /**
                     * Constructs a new DeleteSynonymSetRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.contentwarehouse.v1.IDeleteSynonymSetRequest);

                    /** DeleteSynonymSetRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteSynonymSetRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteSynonymSetRequest instance
                     */
                    public static create(properties?: google.cloud.contentwarehouse.v1.IDeleteSynonymSetRequest): google.cloud.contentwarehouse.v1.DeleteSynonymSetRequest;

                    /**
                     * Encodes the specified DeleteSynonymSetRequest message. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteSynonymSetRequest.verify|verify} messages.
                     * @param message DeleteSynonymSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.contentwarehouse.v1.IDeleteSynonymSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteSynonymSetRequest message, length delimited. Does not implicitly {@link google.cloud.contentwarehouse.v1.DeleteSynonymSetRequest.verify|verify} messages.
                     * @param message DeleteSynonymSetRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.contentwarehouse.v1.IDeleteSynonymSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteSynonymSetRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteSynonymSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.contentwarehouse.v1.DeleteSynonymSetRequest;

                    /**
                     * Decodes a DeleteSynonymSetRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteSynonymSetRequest
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.contentwarehouse.v1.DeleteSynonymSetRequest;

                    /**
                     * Verifies a DeleteSynonymSetRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteSynonymSetRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteSynonymSetRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.contentwarehouse.v1.DeleteSynonymSetRequest;

                    /**
                     * Creates a plain object from a DeleteSynonymSetRequest message. Also converts values to other types if specified.
                     * @param message DeleteSynonymSetRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.contentwarehouse.v1.DeleteSynonymSetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteSynonymSetRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteSynonymSetRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace documentai. */
        namespace documentai {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a Document. */
                interface IDocument {

                    /** Document uri */
                    uri?: (string|null);

                    /** Document content */
                    content?: (Uint8Array|string|null);

                    /** Document mimeType */
                    mimeType?: (string|null);

                    /** Document text */
                    text?: (string|null);

                    /** Document textStyles */
                    textStyles?: (google.cloud.documentai.v1.Document.IStyle[]|null);

                    /** Document pages */
                    pages?: (google.cloud.documentai.v1.Document.IPage[]|null);

                    /** Document entities */
                    entities?: (google.cloud.documentai.v1.Document.IEntity[]|null);

                    /** Document entityRelations */
                    entityRelations?: (google.cloud.documentai.v1.Document.IEntityRelation[]|null);

                    /** Document textChanges */
                    textChanges?: (google.cloud.documentai.v1.Document.ITextChange[]|null);

                    /** Document shardInfo */
                    shardInfo?: (google.cloud.documentai.v1.Document.IShardInfo|null);

                    /** Document error */
                    error?: (google.rpc.IStatus|null);

                    /** Document revisions */
                    revisions?: (google.cloud.documentai.v1.Document.IRevision[]|null);

                    /** Document documentLayout */
                    documentLayout?: (google.cloud.documentai.v1.Document.IDocumentLayout|null);

                    /** Document chunkedDocument */
                    chunkedDocument?: (google.cloud.documentai.v1.Document.IChunkedDocument|null);
                }

                /** Represents a Document. */
                class Document implements IDocument {

                    /**
                     * Constructs a new Document.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.documentai.v1.IDocument);

                    /** Document uri. */
                    public uri?: (string|null);

                    /** Document content. */
                    public content?: (Uint8Array|string|null);

                    /** Document mimeType. */
                    public mimeType: string;

                    /** Document text. */
                    public text: string;

                    /** Document textStyles. */
                    public textStyles: google.cloud.documentai.v1.Document.IStyle[];

                    /** Document pages. */
                    public pages: google.cloud.documentai.v1.Document.IPage[];

                    /** Document entities. */
                    public entities: google.cloud.documentai.v1.Document.IEntity[];

                    /** Document entityRelations. */
                    public entityRelations: google.cloud.documentai.v1.Document.IEntityRelation[];

                    /** Document textChanges. */
                    public textChanges: google.cloud.documentai.v1.Document.ITextChange[];

                    /** Document shardInfo. */
                    public shardInfo?: (google.cloud.documentai.v1.Document.IShardInfo|null);

                    /** Document error. */
                    public error?: (google.rpc.IStatus|null);

                    /** Document revisions. */
                    public revisions: google.cloud.documentai.v1.Document.IRevision[];

                    /** Document documentLayout. */
                    public documentLayout?: (google.cloud.documentai.v1.Document.IDocumentLayout|null);

                    /** Document chunkedDocument. */
                    public chunkedDocument?: (google.cloud.documentai.v1.Document.IChunkedDocument|null);

                    /** Document source. */
                    public source?: ("uri"|"content");

                    /**
                     * Creates a new Document instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Document instance
                     */
                    public static create(properties?: google.cloud.documentai.v1.IDocument): google.cloud.documentai.v1.Document;

                    /**
                     * Encodes the specified Document message. Does not implicitly {@link google.cloud.documentai.v1.Document.verify|verify} messages.
                     * @param message Document message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.documentai.v1.IDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Document message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.verify|verify} messages.
                     * @param message Document message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.documentai.v1.IDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Document message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Document
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document;

                    /**
                     * Decodes a Document message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Document
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document;

                    /**
                     * Verifies a Document message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Document message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Document
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document;

                    /**
                     * Creates a plain object from a Document message. Also converts values to other types if specified.
                     * @param message Document
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.documentai.v1.Document, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Document to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Document
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Document {

                    /** Properties of a ShardInfo. */
                    interface IShardInfo {

                        /** ShardInfo shardIndex */
                        shardIndex?: (number|Long|string|null);

                        /** ShardInfo shardCount */
                        shardCount?: (number|Long|string|null);

                        /** ShardInfo textOffset */
                        textOffset?: (number|Long|string|null);
                    }

                    /** Represents a ShardInfo. */
                    class ShardInfo implements IShardInfo {

                        /**
                         * Constructs a new ShardInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IShardInfo);

                        /** ShardInfo shardIndex. */
                        public shardIndex: (number|Long|string);

                        /** ShardInfo shardCount. */
                        public shardCount: (number|Long|string);

                        /** ShardInfo textOffset. */
                        public textOffset: (number|Long|string);

                        /**
                         * Creates a new ShardInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ShardInfo instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IShardInfo): google.cloud.documentai.v1.Document.ShardInfo;

                        /**
                         * Encodes the specified ShardInfo message. Does not implicitly {@link google.cloud.documentai.v1.Document.ShardInfo.verify|verify} messages.
                         * @param message ShardInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IShardInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShardInfo message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.ShardInfo.verify|verify} messages.
                         * @param message ShardInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IShardInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShardInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ShardInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.ShardInfo;

                        /**
                         * Decodes a ShardInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ShardInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.ShardInfo;

                        /**
                         * Verifies a ShardInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShardInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ShardInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.ShardInfo;

                        /**
                         * Creates a plain object from a ShardInfo message. Also converts values to other types if specified.
                         * @param message ShardInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.ShardInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShardInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ShardInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Style. */
                    interface IStyle {

                        /** Style textAnchor */
                        textAnchor?: (google.cloud.documentai.v1.Document.ITextAnchor|null);

                        /** Style color */
                        color?: (google.type.IColor|null);

                        /** Style backgroundColor */
                        backgroundColor?: (google.type.IColor|null);

                        /** Style fontWeight */
                        fontWeight?: (string|null);

                        /** Style textStyle */
                        textStyle?: (string|null);

                        /** Style textDecoration */
                        textDecoration?: (string|null);

                        /** Style fontSize */
                        fontSize?: (google.cloud.documentai.v1.Document.Style.IFontSize|null);

                        /** Style fontFamily */
                        fontFamily?: (string|null);
                    }

                    /** Represents a Style. */
                    class Style implements IStyle {

                        /**
                         * Constructs a new Style.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IStyle);

                        /** Style textAnchor. */
                        public textAnchor?: (google.cloud.documentai.v1.Document.ITextAnchor|null);

                        /** Style color. */
                        public color?: (google.type.IColor|null);

                        /** Style backgroundColor. */
                        public backgroundColor?: (google.type.IColor|null);

                        /** Style fontWeight. */
                        public fontWeight: string;

                        /** Style textStyle. */
                        public textStyle: string;

                        /** Style textDecoration. */
                        public textDecoration: string;

                        /** Style fontSize. */
                        public fontSize?: (google.cloud.documentai.v1.Document.Style.IFontSize|null);

                        /** Style fontFamily. */
                        public fontFamily: string;

                        /**
                         * Creates a new Style instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Style instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IStyle): google.cloud.documentai.v1.Document.Style;

                        /**
                         * Encodes the specified Style message. Does not implicitly {@link google.cloud.documentai.v1.Document.Style.verify|verify} messages.
                         * @param message Style message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IStyle, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Style message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Style.verify|verify} messages.
                         * @param message Style message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IStyle, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Style message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Style
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Style;

                        /**
                         * Decodes a Style message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Style
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Style;

                        /**
                         * Verifies a Style message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Style message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Style
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Style;

                        /**
                         * Creates a plain object from a Style message. Also converts values to other types if specified.
                         * @param message Style
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.Style, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Style to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Style
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Style {

                        /** Properties of a FontSize. */
                        interface IFontSize {

                            /** FontSize size */
                            size?: (number|null);

                            /** FontSize unit */
                            unit?: (string|null);
                        }

                        /** Represents a FontSize. */
                        class FontSize implements IFontSize {

                            /**
                             * Constructs a new FontSize.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Style.IFontSize);

                            /** FontSize size. */
                            public size: number;

                            /** FontSize unit. */
                            public unit: string;

                            /**
                             * Creates a new FontSize instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FontSize instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Style.IFontSize): google.cloud.documentai.v1.Document.Style.FontSize;

                            /**
                             * Encodes the specified FontSize message. Does not implicitly {@link google.cloud.documentai.v1.Document.Style.FontSize.verify|verify} messages.
                             * @param message FontSize message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Style.IFontSize, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FontSize message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Style.FontSize.verify|verify} messages.
                             * @param message FontSize message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Style.IFontSize, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FontSize message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FontSize
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Style.FontSize;

                            /**
                             * Decodes a FontSize message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FontSize
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Style.FontSize;

                            /**
                             * Verifies a FontSize message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a FontSize message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FontSize
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Style.FontSize;

                            /**
                             * Creates a plain object from a FontSize message. Also converts values to other types if specified.
                             * @param message FontSize
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Style.FontSize, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FontSize to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FontSize
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a Page. */
                    interface IPage {

                        /** Page pageNumber */
                        pageNumber?: (number|null);

                        /** Page image */
                        image?: (google.cloud.documentai.v1.Document.Page.IImage|null);

                        /** Page transforms */
                        transforms?: (google.cloud.documentai.v1.Document.Page.IMatrix[]|null);

                        /** Page dimension */
                        dimension?: (google.cloud.documentai.v1.Document.Page.IDimension|null);

                        /** Page layout */
                        layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                        /** Page detectedLanguages */
                        detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);

                        /** Page blocks */
                        blocks?: (google.cloud.documentai.v1.Document.Page.IBlock[]|null);

                        /** Page paragraphs */
                        paragraphs?: (google.cloud.documentai.v1.Document.Page.IParagraph[]|null);

                        /** Page lines */
                        lines?: (google.cloud.documentai.v1.Document.Page.ILine[]|null);

                        /** Page tokens */
                        tokens?: (google.cloud.documentai.v1.Document.Page.IToken[]|null);

                        /** Page visualElements */
                        visualElements?: (google.cloud.documentai.v1.Document.Page.IVisualElement[]|null);

                        /** Page tables */
                        tables?: (google.cloud.documentai.v1.Document.Page.ITable[]|null);

                        /** Page formFields */
                        formFields?: (google.cloud.documentai.v1.Document.Page.IFormField[]|null);

                        /** Page symbols */
                        symbols?: (google.cloud.documentai.v1.Document.Page.ISymbol[]|null);

                        /** Page detectedBarcodes */
                        detectedBarcodes?: (google.cloud.documentai.v1.Document.Page.IDetectedBarcode[]|null);

                        /** Page imageQualityScores */
                        imageQualityScores?: (google.cloud.documentai.v1.Document.Page.IImageQualityScores|null);

                        /** Page provenance */
                        provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);
                    }

                    /** Represents a Page. */
                    class Page implements IPage {

                        /**
                         * Constructs a new Page.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IPage);

                        /** Page pageNumber. */
                        public pageNumber: number;

                        /** Page image. */
                        public image?: (google.cloud.documentai.v1.Document.Page.IImage|null);

                        /** Page transforms. */
                        public transforms: google.cloud.documentai.v1.Document.Page.IMatrix[];

                        /** Page dimension. */
                        public dimension?: (google.cloud.documentai.v1.Document.Page.IDimension|null);

                        /** Page layout. */
                        public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                        /** Page detectedLanguages. */
                        public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                        /** Page blocks. */
                        public blocks: google.cloud.documentai.v1.Document.Page.IBlock[];

                        /** Page paragraphs. */
                        public paragraphs: google.cloud.documentai.v1.Document.Page.IParagraph[];

                        /** Page lines. */
                        public lines: google.cloud.documentai.v1.Document.Page.ILine[];

                        /** Page tokens. */
                        public tokens: google.cloud.documentai.v1.Document.Page.IToken[];

                        /** Page visualElements. */
                        public visualElements: google.cloud.documentai.v1.Document.Page.IVisualElement[];

                        /** Page tables. */
                        public tables: google.cloud.documentai.v1.Document.Page.ITable[];

                        /** Page formFields. */
                        public formFields: google.cloud.documentai.v1.Document.Page.IFormField[];

                        /** Page symbols. */
                        public symbols: google.cloud.documentai.v1.Document.Page.ISymbol[];

                        /** Page detectedBarcodes. */
                        public detectedBarcodes: google.cloud.documentai.v1.Document.Page.IDetectedBarcode[];

                        /** Page imageQualityScores. */
                        public imageQualityScores?: (google.cloud.documentai.v1.Document.Page.IImageQualityScores|null);

                        /** Page provenance. */
                        public provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                        /**
                         * Creates a new Page instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Page instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IPage): google.cloud.documentai.v1.Document.Page;

                        /**
                         * Encodes the specified Page message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.verify|verify} messages.
                         * @param message Page message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IPage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Page message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.verify|verify} messages.
                         * @param message Page message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IPage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Page message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Page
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page;

                        /**
                         * Decodes a Page message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Page
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page;

                        /**
                         * Verifies a Page message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Page message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Page
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page;

                        /**
                         * Creates a plain object from a Page message. Also converts values to other types if specified.
                         * @param message Page
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.Page, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Page to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Page
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Page {

                        /** Properties of a Dimension. */
                        interface IDimension {

                            /** Dimension width */
                            width?: (number|null);

                            /** Dimension height */
                            height?: (number|null);

                            /** Dimension unit */
                            unit?: (string|null);
                        }

                        /** Represents a Dimension. */
                        class Dimension implements IDimension {

                            /**
                             * Constructs a new Dimension.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IDimension);

                            /** Dimension width. */
                            public width: number;

                            /** Dimension height. */
                            public height: number;

                            /** Dimension unit. */
                            public unit: string;

                            /**
                             * Creates a new Dimension instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Dimension instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IDimension): google.cloud.documentai.v1.Document.Page.Dimension;

                            /**
                             * Encodes the specified Dimension message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Dimension.verify|verify} messages.
                             * @param message Dimension message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Dimension message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Dimension.verify|verify} messages.
                             * @param message Dimension message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Dimension message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Dimension
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Dimension;

                            /**
                             * Decodes a Dimension message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Dimension
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Dimension;

                            /**
                             * Verifies a Dimension message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Dimension message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Dimension
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Dimension;

                            /**
                             * Creates a plain object from a Dimension message. Also converts values to other types if specified.
                             * @param message Dimension
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Dimension, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Dimension to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Dimension
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an Image. */
                        interface IImage {

                            /** Image content */
                            content?: (Uint8Array|string|null);

                            /** Image mimeType */
                            mimeType?: (string|null);

                            /** Image width */
                            width?: (number|null);

                            /** Image height */
                            height?: (number|null);
                        }

                        /** Represents an Image. */
                        class Image implements IImage {

                            /**
                             * Constructs a new Image.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IImage);

                            /** Image content. */
                            public content: (Uint8Array|string);

                            /** Image mimeType. */
                            public mimeType: string;

                            /** Image width. */
                            public width: number;

                            /** Image height. */
                            public height: number;

                            /**
                             * Creates a new Image instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Image instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IImage): google.cloud.documentai.v1.Document.Page.Image;

                            /**
                             * Encodes the specified Image message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Image.verify|verify} messages.
                             * @param message Image message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IImage, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Image message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Image.verify|verify} messages.
                             * @param message Image message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IImage, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an Image message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Image
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Image;

                            /**
                             * Decodes an Image message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Image
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Image;

                            /**
                             * Verifies an Image message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates an Image message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Image
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Image;

                            /**
                             * Creates a plain object from an Image message. Also converts values to other types if specified.
                             * @param message Image
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Image, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Image to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Image
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Matrix. */
                        interface IMatrix {

                            /** Matrix rows */
                            rows?: (number|null);

                            /** Matrix cols */
                            cols?: (number|null);

                            /** Matrix type */
                            type?: (number|null);

                            /** Matrix data */
                            data?: (Uint8Array|string|null);
                        }

                        /** Represents a Matrix. */
                        class Matrix implements IMatrix {

                            /**
                             * Constructs a new Matrix.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IMatrix);

                            /** Matrix rows. */
                            public rows: number;

                            /** Matrix cols. */
                            public cols: number;

                            /** Matrix type. */
                            public type: number;

                            /** Matrix data. */
                            public data: (Uint8Array|string);

                            /**
                             * Creates a new Matrix instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Matrix instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IMatrix): google.cloud.documentai.v1.Document.Page.Matrix;

                            /**
                             * Encodes the specified Matrix message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Matrix.verify|verify} messages.
                             * @param message Matrix message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IMatrix, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Matrix message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Matrix.verify|verify} messages.
                             * @param message Matrix message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IMatrix, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Matrix message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Matrix
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Matrix;

                            /**
                             * Decodes a Matrix message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Matrix
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Matrix;

                            /**
                             * Verifies a Matrix message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Matrix message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Matrix
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Matrix;

                            /**
                             * Creates a plain object from a Matrix message. Also converts values to other types if specified.
                             * @param message Matrix
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Matrix, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Matrix to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Matrix
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Layout. */
                        interface ILayout {

                            /** Layout textAnchor */
                            textAnchor?: (google.cloud.documentai.v1.Document.ITextAnchor|null);

                            /** Layout confidence */
                            confidence?: (number|null);

                            /** Layout boundingPoly */
                            boundingPoly?: (google.cloud.documentai.v1.IBoundingPoly|null);

                            /** Layout orientation */
                            orientation?: (google.cloud.documentai.v1.Document.Page.Layout.Orientation|keyof typeof google.cloud.documentai.v1.Document.Page.Layout.Orientation|null);
                        }

                        /** Represents a Layout. */
                        class Layout implements ILayout {

                            /**
                             * Constructs a new Layout.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.ILayout);

                            /** Layout textAnchor. */
                            public textAnchor?: (google.cloud.documentai.v1.Document.ITextAnchor|null);

                            /** Layout confidence. */
                            public confidence: number;

                            /** Layout boundingPoly. */
                            public boundingPoly?: (google.cloud.documentai.v1.IBoundingPoly|null);

                            /** Layout orientation. */
                            public orientation: (google.cloud.documentai.v1.Document.Page.Layout.Orientation|keyof typeof google.cloud.documentai.v1.Document.Page.Layout.Orientation);

                            /**
                             * Creates a new Layout instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Layout instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.ILayout): google.cloud.documentai.v1.Document.Page.Layout;

                            /**
                             * Encodes the specified Layout message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Layout.verify|verify} messages.
                             * @param message Layout message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.ILayout, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Layout message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Layout.verify|verify} messages.
                             * @param message Layout message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.ILayout, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Layout message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Layout
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Layout;

                            /**
                             * Decodes a Layout message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Layout
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Layout;

                            /**
                             * Verifies a Layout message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Layout message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Layout
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Layout;

                            /**
                             * Creates a plain object from a Layout message. Also converts values to other types if specified.
                             * @param message Layout
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Layout, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Layout to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Layout
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace Layout {

                            /** Orientation enum. */
                            enum Orientation {
                                ORIENTATION_UNSPECIFIED = 0,
                                PAGE_UP = 1,
                                PAGE_RIGHT = 2,
                                PAGE_DOWN = 3,
                                PAGE_LEFT = 4
                            }
                        }

                        /** Properties of a Block. */
                        interface IBlock {

                            /** Block layout */
                            layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Block detectedLanguages */
                            detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);

                            /** Block provenance */
                            provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);
                        }

                        /** Represents a Block. */
                        class Block implements IBlock {

                            /**
                             * Constructs a new Block.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IBlock);

                            /** Block layout. */
                            public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Block detectedLanguages. */
                            public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /** Block provenance. */
                            public provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                            /**
                             * Creates a new Block instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Block instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IBlock): google.cloud.documentai.v1.Document.Page.Block;

                            /**
                             * Encodes the specified Block message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Block.verify|verify} messages.
                             * @param message Block message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Block message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Block.verify|verify} messages.
                             * @param message Block message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Block message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Block
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Block;

                            /**
                             * Decodes a Block message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Block
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Block;

                            /**
                             * Verifies a Block message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Block message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Block
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Block;

                            /**
                             * Creates a plain object from a Block message. Also converts values to other types if specified.
                             * @param message Block
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Block, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Block to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Block
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Paragraph. */
                        interface IParagraph {

                            /** Paragraph layout */
                            layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Paragraph detectedLanguages */
                            detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);

                            /** Paragraph provenance */
                            provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);
                        }

                        /** Represents a Paragraph. */
                        class Paragraph implements IParagraph {

                            /**
                             * Constructs a new Paragraph.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IParagraph);

                            /** Paragraph layout. */
                            public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Paragraph detectedLanguages. */
                            public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /** Paragraph provenance. */
                            public provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                            /**
                             * Creates a new Paragraph instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Paragraph instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IParagraph): google.cloud.documentai.v1.Document.Page.Paragraph;

                            /**
                             * Encodes the specified Paragraph message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Paragraph.verify|verify} messages.
                             * @param message Paragraph message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IParagraph, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Paragraph message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Paragraph.verify|verify} messages.
                             * @param message Paragraph message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IParagraph, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Paragraph message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Paragraph
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Paragraph;

                            /**
                             * Decodes a Paragraph message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Paragraph
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Paragraph;

                            /**
                             * Verifies a Paragraph message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Paragraph message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Paragraph
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Paragraph;

                            /**
                             * Creates a plain object from a Paragraph message. Also converts values to other types if specified.
                             * @param message Paragraph
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Paragraph, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Paragraph to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Paragraph
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Line. */
                        interface ILine {

                            /** Line layout */
                            layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Line detectedLanguages */
                            detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);

                            /** Line provenance */
                            provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);
                        }

                        /** Represents a Line. */
                        class Line implements ILine {

                            /**
                             * Constructs a new Line.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.ILine);

                            /** Line layout. */
                            public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Line detectedLanguages. */
                            public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /** Line provenance. */
                            public provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                            /**
                             * Creates a new Line instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Line instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.ILine): google.cloud.documentai.v1.Document.Page.Line;

                            /**
                             * Encodes the specified Line message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Line.verify|verify} messages.
                             * @param message Line message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.ILine, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Line message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Line.verify|verify} messages.
                             * @param message Line message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.ILine, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Line message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Line
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Line;

                            /**
                             * Decodes a Line message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Line
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Line;

                            /**
                             * Verifies a Line message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Line message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Line
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Line;

                            /**
                             * Creates a plain object from a Line message. Also converts values to other types if specified.
                             * @param message Line
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Line, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Line to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Line
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Token. */
                        interface IToken {

                            /** Token layout */
                            layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Token detectedBreak */
                            detectedBreak?: (google.cloud.documentai.v1.Document.Page.Token.IDetectedBreak|null);

                            /** Token detectedLanguages */
                            detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);

                            /** Token provenance */
                            provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                            /** Token styleInfo */
                            styleInfo?: (google.cloud.documentai.v1.Document.Page.Token.IStyleInfo|null);
                        }

                        /** Represents a Token. */
                        class Token implements IToken {

                            /**
                             * Constructs a new Token.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IToken);

                            /** Token layout. */
                            public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Token detectedBreak. */
                            public detectedBreak?: (google.cloud.documentai.v1.Document.Page.Token.IDetectedBreak|null);

                            /** Token detectedLanguages. */
                            public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /** Token provenance. */
                            public provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                            /** Token styleInfo. */
                            public styleInfo?: (google.cloud.documentai.v1.Document.Page.Token.IStyleInfo|null);

                            /**
                             * Creates a new Token instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Token instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IToken): google.cloud.documentai.v1.Document.Page.Token;

                            /**
                             * Encodes the specified Token message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Token.verify|verify} messages.
                             * @param message Token message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IToken, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Token message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Token.verify|verify} messages.
                             * @param message Token message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IToken, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Token message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Token
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Token;

                            /**
                             * Decodes a Token message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Token
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Token;

                            /**
                             * Verifies a Token message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Token message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Token
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Token;

                            /**
                             * Creates a plain object from a Token message. Also converts values to other types if specified.
                             * @param message Token
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Token, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Token to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Token
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace Token {

                            /** Properties of a DetectedBreak. */
                            interface IDetectedBreak {

                                /** DetectedBreak type */
                                type?: (google.cloud.documentai.v1.Document.Page.Token.DetectedBreak.Type|keyof typeof google.cloud.documentai.v1.Document.Page.Token.DetectedBreak.Type|null);
                            }

                            /** Represents a DetectedBreak. */
                            class DetectedBreak implements IDetectedBreak {

                                /**
                                 * Constructs a new DetectedBreak.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.Page.Token.IDetectedBreak);

                                /** DetectedBreak type. */
                                public type: (google.cloud.documentai.v1.Document.Page.Token.DetectedBreak.Type|keyof typeof google.cloud.documentai.v1.Document.Page.Token.DetectedBreak.Type);

                                /**
                                 * Creates a new DetectedBreak instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns DetectedBreak instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.Page.Token.IDetectedBreak): google.cloud.documentai.v1.Document.Page.Token.DetectedBreak;

                                /**
                                 * Encodes the specified DetectedBreak message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Token.DetectedBreak.verify|verify} messages.
                                 * @param message DetectedBreak message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.Page.Token.IDetectedBreak, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified DetectedBreak message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Token.DetectedBreak.verify|verify} messages.
                                 * @param message DetectedBreak message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.Token.IDetectedBreak, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a DetectedBreak message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns DetectedBreak
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Token.DetectedBreak;

                                /**
                                 * Decodes a DetectedBreak message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns DetectedBreak
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Token.DetectedBreak;

                                /**
                                 * Verifies a DetectedBreak message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a DetectedBreak message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns DetectedBreak
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Token.DetectedBreak;

                                /**
                                 * Creates a plain object from a DetectedBreak message. Also converts values to other types if specified.
                                 * @param message DetectedBreak
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.Page.Token.DetectedBreak, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this DetectedBreak to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for DetectedBreak
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            namespace DetectedBreak {

                                /** Type enum. */
                                enum Type {
                                    TYPE_UNSPECIFIED = 0,
                                    SPACE = 1,
                                    WIDE_SPACE = 2,
                                    HYPHEN = 3
                                }
                            }

                            /** Properties of a StyleInfo. */
                            interface IStyleInfo {

                                /** StyleInfo fontSize */
                                fontSize?: (number|null);

                                /** StyleInfo pixelFontSize */
                                pixelFontSize?: (number|null);

                                /** StyleInfo letterSpacing */
                                letterSpacing?: (number|null);

                                /** StyleInfo fontType */
                                fontType?: (string|null);

                                /** StyleInfo bold */
                                bold?: (boolean|null);

                                /** StyleInfo italic */
                                italic?: (boolean|null);

                                /** StyleInfo underlined */
                                underlined?: (boolean|null);

                                /** StyleInfo strikeout */
                                strikeout?: (boolean|null);

                                /** StyleInfo subscript */
                                subscript?: (boolean|null);

                                /** StyleInfo superscript */
                                superscript?: (boolean|null);

                                /** StyleInfo smallcaps */
                                smallcaps?: (boolean|null);

                                /** StyleInfo fontWeight */
                                fontWeight?: (number|null);

                                /** StyleInfo handwritten */
                                handwritten?: (boolean|null);

                                /** StyleInfo textColor */
                                textColor?: (google.type.IColor|null);

                                /** StyleInfo backgroundColor */
                                backgroundColor?: (google.type.IColor|null);
                            }

                            /** Represents a StyleInfo. */
                            class StyleInfo implements IStyleInfo {

                                /**
                                 * Constructs a new StyleInfo.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.Page.Token.IStyleInfo);

                                /** StyleInfo fontSize. */
                                public fontSize: number;

                                /** StyleInfo pixelFontSize. */
                                public pixelFontSize: number;

                                /** StyleInfo letterSpacing. */
                                public letterSpacing: number;

                                /** StyleInfo fontType. */
                                public fontType: string;

                                /** StyleInfo bold. */
                                public bold: boolean;

                                /** StyleInfo italic. */
                                public italic: boolean;

                                /** StyleInfo underlined. */
                                public underlined: boolean;

                                /** StyleInfo strikeout. */
                                public strikeout: boolean;

                                /** StyleInfo subscript. */
                                public subscript: boolean;

                                /** StyleInfo superscript. */
                                public superscript: boolean;

                                /** StyleInfo smallcaps. */
                                public smallcaps: boolean;

                                /** StyleInfo fontWeight. */
                                public fontWeight: number;

                                /** StyleInfo handwritten. */
                                public handwritten: boolean;

                                /** StyleInfo textColor. */
                                public textColor?: (google.type.IColor|null);

                                /** StyleInfo backgroundColor. */
                                public backgroundColor?: (google.type.IColor|null);

                                /**
                                 * Creates a new StyleInfo instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns StyleInfo instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.Page.Token.IStyleInfo): google.cloud.documentai.v1.Document.Page.Token.StyleInfo;

                                /**
                                 * Encodes the specified StyleInfo message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Token.StyleInfo.verify|verify} messages.
                                 * @param message StyleInfo message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.Page.Token.IStyleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified StyleInfo message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Token.StyleInfo.verify|verify} messages.
                                 * @param message StyleInfo message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.Token.IStyleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a StyleInfo message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns StyleInfo
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Token.StyleInfo;

                                /**
                                 * Decodes a StyleInfo message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns StyleInfo
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Token.StyleInfo;

                                /**
                                 * Verifies a StyleInfo message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a StyleInfo message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns StyleInfo
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Token.StyleInfo;

                                /**
                                 * Creates a plain object from a StyleInfo message. Also converts values to other types if specified.
                                 * @param message StyleInfo
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.Page.Token.StyleInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this StyleInfo to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for StyleInfo
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }

                        /** Properties of a Symbol. */
                        interface ISymbol {

                            /** Symbol layout */
                            layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Symbol detectedLanguages */
                            detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);
                        }

                        /** Represents a Symbol. */
                        class Symbol implements ISymbol {

                            /**
                             * Constructs a new Symbol.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.ISymbol);

                            /** Symbol layout. */
                            public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Symbol detectedLanguages. */
                            public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /**
                             * Creates a new Symbol instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Symbol instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.ISymbol): google.cloud.documentai.v1.Document.Page.Symbol;

                            /**
                             * Encodes the specified Symbol message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Symbol.verify|verify} messages.
                             * @param message Symbol message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.ISymbol, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Symbol message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Symbol.verify|verify} messages.
                             * @param message Symbol message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.ISymbol, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Symbol message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Symbol
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Symbol;

                            /**
                             * Decodes a Symbol message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Symbol
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Symbol;

                            /**
                             * Verifies a Symbol message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Symbol message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Symbol
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Symbol;

                            /**
                             * Creates a plain object from a Symbol message. Also converts values to other types if specified.
                             * @param message Symbol
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Symbol, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Symbol to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Symbol
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a VisualElement. */
                        interface IVisualElement {

                            /** VisualElement layout */
                            layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** VisualElement type */
                            type?: (string|null);

                            /** VisualElement detectedLanguages */
                            detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);
                        }

                        /** Represents a VisualElement. */
                        class VisualElement implements IVisualElement {

                            /**
                             * Constructs a new VisualElement.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IVisualElement);

                            /** VisualElement layout. */
                            public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** VisualElement type. */
                            public type: string;

                            /** VisualElement detectedLanguages. */
                            public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /**
                             * Creates a new VisualElement instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns VisualElement instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IVisualElement): google.cloud.documentai.v1.Document.Page.VisualElement;

                            /**
                             * Encodes the specified VisualElement message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.VisualElement.verify|verify} messages.
                             * @param message VisualElement message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IVisualElement, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified VisualElement message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.VisualElement.verify|verify} messages.
                             * @param message VisualElement message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IVisualElement, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a VisualElement message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns VisualElement
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.VisualElement;

                            /**
                             * Decodes a VisualElement message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns VisualElement
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.VisualElement;

                            /**
                             * Verifies a VisualElement message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a VisualElement message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns VisualElement
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.VisualElement;

                            /**
                             * Creates a plain object from a VisualElement message. Also converts values to other types if specified.
                             * @param message VisualElement
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.VisualElement, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this VisualElement to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for VisualElement
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Table. */
                        interface ITable {

                            /** Table layout */
                            layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Table headerRows */
                            headerRows?: (google.cloud.documentai.v1.Document.Page.Table.ITableRow[]|null);

                            /** Table bodyRows */
                            bodyRows?: (google.cloud.documentai.v1.Document.Page.Table.ITableRow[]|null);

                            /** Table detectedLanguages */
                            detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);

                            /** Table provenance */
                            provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);
                        }

                        /** Represents a Table. */
                        class Table implements ITable {

                            /**
                             * Constructs a new Table.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.ITable);

                            /** Table layout. */
                            public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** Table headerRows. */
                            public headerRows: google.cloud.documentai.v1.Document.Page.Table.ITableRow[];

                            /** Table bodyRows. */
                            public bodyRows: google.cloud.documentai.v1.Document.Page.Table.ITableRow[];

                            /** Table detectedLanguages. */
                            public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /** Table provenance. */
                            public provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                            /**
                             * Creates a new Table instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Table instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.ITable): google.cloud.documentai.v1.Document.Page.Table;

                            /**
                             * Encodes the specified Table message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Table.verify|verify} messages.
                             * @param message Table message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.ITable, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Table message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Table.verify|verify} messages.
                             * @param message Table message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.ITable, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Table message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Table
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Table;

                            /**
                             * Decodes a Table message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Table
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Table;

                            /**
                             * Verifies a Table message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Table message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Table
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Table;

                            /**
                             * Creates a plain object from a Table message. Also converts values to other types if specified.
                             * @param message Table
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.Table, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Table to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Table
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace Table {

                            /** Properties of a TableRow. */
                            interface ITableRow {

                                /** TableRow cells */
                                cells?: (google.cloud.documentai.v1.Document.Page.Table.ITableCell[]|null);
                            }

                            /** Represents a TableRow. */
                            class TableRow implements ITableRow {

                                /**
                                 * Constructs a new TableRow.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.Page.Table.ITableRow);

                                /** TableRow cells. */
                                public cells: google.cloud.documentai.v1.Document.Page.Table.ITableCell[];

                                /**
                                 * Creates a new TableRow instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns TableRow instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.Page.Table.ITableRow): google.cloud.documentai.v1.Document.Page.Table.TableRow;

                                /**
                                 * Encodes the specified TableRow message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Table.TableRow.verify|verify} messages.
                                 * @param message TableRow message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.Page.Table.ITableRow, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified TableRow message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Table.TableRow.verify|verify} messages.
                                 * @param message TableRow message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.Table.ITableRow, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a TableRow message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns TableRow
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Table.TableRow;

                                /**
                                 * Decodes a TableRow message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns TableRow
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Table.TableRow;

                                /**
                                 * Verifies a TableRow message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a TableRow message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns TableRow
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Table.TableRow;

                                /**
                                 * Creates a plain object from a TableRow message. Also converts values to other types if specified.
                                 * @param message TableRow
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.Page.Table.TableRow, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this TableRow to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for TableRow
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a TableCell. */
                            interface ITableCell {

                                /** TableCell layout */
                                layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                                /** TableCell rowSpan */
                                rowSpan?: (number|null);

                                /** TableCell colSpan */
                                colSpan?: (number|null);

                                /** TableCell detectedLanguages */
                                detectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);
                            }

                            /** Represents a TableCell. */
                            class TableCell implements ITableCell {

                                /**
                                 * Constructs a new TableCell.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.Page.Table.ITableCell);

                                /** TableCell layout. */
                                public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                                /** TableCell rowSpan. */
                                public rowSpan: number;

                                /** TableCell colSpan. */
                                public colSpan: number;

                                /** TableCell detectedLanguages. */
                                public detectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                                /**
                                 * Creates a new TableCell instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns TableCell instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.Page.Table.ITableCell): google.cloud.documentai.v1.Document.Page.Table.TableCell;

                                /**
                                 * Encodes the specified TableCell message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Table.TableCell.verify|verify} messages.
                                 * @param message TableCell message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.Page.Table.ITableCell, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified TableCell message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.Table.TableCell.verify|verify} messages.
                                 * @param message TableCell message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.Table.ITableCell, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a TableCell message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns TableCell
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.Table.TableCell;

                                /**
                                 * Decodes a TableCell message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns TableCell
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.Table.TableCell;

                                /**
                                 * Verifies a TableCell message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a TableCell message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns TableCell
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.Table.TableCell;

                                /**
                                 * Creates a plain object from a TableCell message. Also converts values to other types if specified.
                                 * @param message TableCell
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.Page.Table.TableCell, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this TableCell to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for TableCell
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }

                        /** Properties of a FormField. */
                        interface IFormField {

                            /** FormField fieldName */
                            fieldName?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** FormField fieldValue */
                            fieldValue?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** FormField nameDetectedLanguages */
                            nameDetectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);

                            /** FormField valueDetectedLanguages */
                            valueDetectedLanguages?: (google.cloud.documentai.v1.Document.Page.IDetectedLanguage[]|null);

                            /** FormField valueType */
                            valueType?: (string|null);

                            /** FormField correctedKeyText */
                            correctedKeyText?: (string|null);

                            /** FormField correctedValueText */
                            correctedValueText?: (string|null);

                            /** FormField provenance */
                            provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);
                        }

                        /** Represents a FormField. */
                        class FormField implements IFormField {

                            /**
                             * Constructs a new FormField.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IFormField);

                            /** FormField fieldName. */
                            public fieldName?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** FormField fieldValue. */
                            public fieldValue?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** FormField nameDetectedLanguages. */
                            public nameDetectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /** FormField valueDetectedLanguages. */
                            public valueDetectedLanguages: google.cloud.documentai.v1.Document.Page.IDetectedLanguage[];

                            /** FormField valueType. */
                            public valueType: string;

                            /** FormField correctedKeyText. */
                            public correctedKeyText: string;

                            /** FormField correctedValueText. */
                            public correctedValueText: string;

                            /** FormField provenance. */
                            public provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                            /**
                             * Creates a new FormField instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FormField instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IFormField): google.cloud.documentai.v1.Document.Page.FormField;

                            /**
                             * Encodes the specified FormField message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.FormField.verify|verify} messages.
                             * @param message FormField message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IFormField, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FormField message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.FormField.verify|verify} messages.
                             * @param message FormField message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IFormField, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FormField message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FormField
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.FormField;

                            /**
                             * Decodes a FormField message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FormField
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.FormField;

                            /**
                             * Verifies a FormField message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a FormField message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FormField
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.FormField;

                            /**
                             * Creates a plain object from a FormField message. Also converts values to other types if specified.
                             * @param message FormField
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.FormField, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FormField to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FormField
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a DetectedBarcode. */
                        interface IDetectedBarcode {

                            /** DetectedBarcode layout */
                            layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** DetectedBarcode barcode */
                            barcode?: (google.cloud.documentai.v1.IBarcode|null);
                        }

                        /** Represents a DetectedBarcode. */
                        class DetectedBarcode implements IDetectedBarcode {

                            /**
                             * Constructs a new DetectedBarcode.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IDetectedBarcode);

                            /** DetectedBarcode layout. */
                            public layout?: (google.cloud.documentai.v1.Document.Page.ILayout|null);

                            /** DetectedBarcode barcode. */
                            public barcode?: (google.cloud.documentai.v1.IBarcode|null);

                            /**
                             * Creates a new DetectedBarcode instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DetectedBarcode instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IDetectedBarcode): google.cloud.documentai.v1.Document.Page.DetectedBarcode;

                            /**
                             * Encodes the specified DetectedBarcode message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.DetectedBarcode.verify|verify} messages.
                             * @param message DetectedBarcode message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IDetectedBarcode, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DetectedBarcode message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.DetectedBarcode.verify|verify} messages.
                             * @param message DetectedBarcode message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IDetectedBarcode, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DetectedBarcode message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DetectedBarcode
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.DetectedBarcode;

                            /**
                             * Decodes a DetectedBarcode message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DetectedBarcode
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.DetectedBarcode;

                            /**
                             * Verifies a DetectedBarcode message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DetectedBarcode message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DetectedBarcode
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.DetectedBarcode;

                            /**
                             * Creates a plain object from a DetectedBarcode message. Also converts values to other types if specified.
                             * @param message DetectedBarcode
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.DetectedBarcode, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DetectedBarcode to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DetectedBarcode
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a DetectedLanguage. */
                        interface IDetectedLanguage {

                            /** DetectedLanguage languageCode */
                            languageCode?: (string|null);

                            /** DetectedLanguage confidence */
                            confidence?: (number|null);
                        }

                        /** Represents a DetectedLanguage. */
                        class DetectedLanguage implements IDetectedLanguage {

                            /**
                             * Constructs a new DetectedLanguage.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IDetectedLanguage);

                            /** DetectedLanguage languageCode. */
                            public languageCode: string;

                            /** DetectedLanguage confidence. */
                            public confidence: number;

                            /**
                             * Creates a new DetectedLanguage instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DetectedLanguage instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IDetectedLanguage): google.cloud.documentai.v1.Document.Page.DetectedLanguage;

                            /**
                             * Encodes the specified DetectedLanguage message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.DetectedLanguage.verify|verify} messages.
                             * @param message DetectedLanguage message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IDetectedLanguage, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DetectedLanguage message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.DetectedLanguage.verify|verify} messages.
                             * @param message DetectedLanguage message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IDetectedLanguage, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DetectedLanguage message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DetectedLanguage
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.DetectedLanguage;

                            /**
                             * Decodes a DetectedLanguage message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DetectedLanguage
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.DetectedLanguage;

                            /**
                             * Verifies a DetectedLanguage message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DetectedLanguage message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DetectedLanguage
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.DetectedLanguage;

                            /**
                             * Creates a plain object from a DetectedLanguage message. Also converts values to other types if specified.
                             * @param message DetectedLanguage
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.DetectedLanguage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DetectedLanguage to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DetectedLanguage
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an ImageQualityScores. */
                        interface IImageQualityScores {

                            /** ImageQualityScores qualityScore */
                            qualityScore?: (number|null);

                            /** ImageQualityScores detectedDefects */
                            detectedDefects?: (google.cloud.documentai.v1.Document.Page.ImageQualityScores.IDetectedDefect[]|null);
                        }

                        /** Represents an ImageQualityScores. */
                        class ImageQualityScores implements IImageQualityScores {

                            /**
                             * Constructs a new ImageQualityScores.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Page.IImageQualityScores);

                            /** ImageQualityScores qualityScore. */
                            public qualityScore: number;

                            /** ImageQualityScores detectedDefects. */
                            public detectedDefects: google.cloud.documentai.v1.Document.Page.ImageQualityScores.IDetectedDefect[];

                            /**
                             * Creates a new ImageQualityScores instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ImageQualityScores instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Page.IImageQualityScores): google.cloud.documentai.v1.Document.Page.ImageQualityScores;

                            /**
                             * Encodes the specified ImageQualityScores message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.ImageQualityScores.verify|verify} messages.
                             * @param message ImageQualityScores message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Page.IImageQualityScores, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ImageQualityScores message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.ImageQualityScores.verify|verify} messages.
                             * @param message ImageQualityScores message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.IImageQualityScores, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an ImageQualityScores message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ImageQualityScores
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.ImageQualityScores;

                            /**
                             * Decodes an ImageQualityScores message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ImageQualityScores
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.ImageQualityScores;

                            /**
                             * Verifies an ImageQualityScores message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates an ImageQualityScores message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ImageQualityScores
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.ImageQualityScores;

                            /**
                             * Creates a plain object from an ImageQualityScores message. Also converts values to other types if specified.
                             * @param message ImageQualityScores
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Page.ImageQualityScores, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ImageQualityScores to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ImageQualityScores
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace ImageQualityScores {

                            /** Properties of a DetectedDefect. */
                            interface IDetectedDefect {

                                /** DetectedDefect type */
                                type?: (string|null);

                                /** DetectedDefect confidence */
                                confidence?: (number|null);
                            }

                            /** Represents a DetectedDefect. */
                            class DetectedDefect implements IDetectedDefect {

                                /**
                                 * Constructs a new DetectedDefect.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.Page.ImageQualityScores.IDetectedDefect);

                                /** DetectedDefect type. */
                                public type: string;

                                /** DetectedDefect confidence. */
                                public confidence: number;

                                /**
                                 * Creates a new DetectedDefect instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns DetectedDefect instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.Page.ImageQualityScores.IDetectedDefect): google.cloud.documentai.v1.Document.Page.ImageQualityScores.DetectedDefect;

                                /**
                                 * Encodes the specified DetectedDefect message. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.ImageQualityScores.DetectedDefect.verify|verify} messages.
                                 * @param message DetectedDefect message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.Page.ImageQualityScores.IDetectedDefect, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified DetectedDefect message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Page.ImageQualityScores.DetectedDefect.verify|verify} messages.
                                 * @param message DetectedDefect message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.Page.ImageQualityScores.IDetectedDefect, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a DetectedDefect message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns DetectedDefect
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Page.ImageQualityScores.DetectedDefect;

                                /**
                                 * Decodes a DetectedDefect message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns DetectedDefect
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Page.ImageQualityScores.DetectedDefect;

                                /**
                                 * Verifies a DetectedDefect message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a DetectedDefect message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns DetectedDefect
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Page.ImageQualityScores.DetectedDefect;

                                /**
                                 * Creates a plain object from a DetectedDefect message. Also converts values to other types if specified.
                                 * @param message DetectedDefect
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.Page.ImageQualityScores.DetectedDefect, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this DetectedDefect to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for DetectedDefect
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }
                    }

                    /** Properties of an Entity. */
                    interface IEntity {

                        /** Entity textAnchor */
                        textAnchor?: (google.cloud.documentai.v1.Document.ITextAnchor|null);

                        /** Entity type */
                        type?: (string|null);

                        /** Entity mentionText */
                        mentionText?: (string|null);

                        /** Entity mentionId */
                        mentionId?: (string|null);

                        /** Entity confidence */
                        confidence?: (number|null);

                        /** Entity pageAnchor */
                        pageAnchor?: (google.cloud.documentai.v1.Document.IPageAnchor|null);

                        /** Entity id */
                        id?: (string|null);

                        /** Entity normalizedValue */
                        normalizedValue?: (google.cloud.documentai.v1.Document.Entity.INormalizedValue|null);

                        /** Entity properties */
                        properties?: (google.cloud.documentai.v1.Document.IEntity[]|null);

                        /** Entity provenance */
                        provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                        /** Entity redacted */
                        redacted?: (boolean|null);
                    }

                    /** Represents an Entity. */
                    class Entity implements IEntity {

                        /**
                         * Constructs a new Entity.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IEntity);

                        /** Entity textAnchor. */
                        public textAnchor?: (google.cloud.documentai.v1.Document.ITextAnchor|null);

                        /** Entity type. */
                        public type: string;

                        /** Entity mentionText. */
                        public mentionText: string;

                        /** Entity mentionId. */
                        public mentionId: string;

                        /** Entity confidence. */
                        public confidence: number;

                        /** Entity pageAnchor. */
                        public pageAnchor?: (google.cloud.documentai.v1.Document.IPageAnchor|null);

                        /** Entity id. */
                        public id: string;

                        /** Entity normalizedValue. */
                        public normalizedValue?: (google.cloud.documentai.v1.Document.Entity.INormalizedValue|null);

                        /** Entity properties. */
                        public properties: google.cloud.documentai.v1.Document.IEntity[];

                        /** Entity provenance. */
                        public provenance?: (google.cloud.documentai.v1.Document.IProvenance|null);

                        /** Entity redacted. */
                        public redacted: boolean;

                        /**
                         * Creates a new Entity instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Entity instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IEntity): google.cloud.documentai.v1.Document.Entity;

                        /**
                         * Encodes the specified Entity message. Does not implicitly {@link google.cloud.documentai.v1.Document.Entity.verify|verify} messages.
                         * @param message Entity message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IEntity, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Entity.verify|verify} messages.
                         * @param message Entity message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IEntity, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Entity message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Entity
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Entity;

                        /**
                         * Decodes an Entity message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Entity
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Entity;

                        /**
                         * Verifies an Entity message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates an Entity message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Entity
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Entity;

                        /**
                         * Creates a plain object from an Entity message. Also converts values to other types if specified.
                         * @param message Entity
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Entity to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Entity
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Entity {

                        /** Properties of a NormalizedValue. */
                        interface INormalizedValue {

                            /** NormalizedValue moneyValue */
                            moneyValue?: (google.type.IMoney|null);

                            /** NormalizedValue dateValue */
                            dateValue?: (google.type.IDate|null);

                            /** NormalizedValue datetimeValue */
                            datetimeValue?: (google.type.IDateTime|null);

                            /** NormalizedValue addressValue */
                            addressValue?: (google.type.IPostalAddress|null);

                            /** NormalizedValue booleanValue */
                            booleanValue?: (boolean|null);

                            /** NormalizedValue integerValue */
                            integerValue?: (number|null);

                            /** NormalizedValue floatValue */
                            floatValue?: (number|null);

                            /** NormalizedValue text */
                            text?: (string|null);
                        }

                        /** Represents a NormalizedValue. */
                        class NormalizedValue implements INormalizedValue {

                            /**
                             * Constructs a new NormalizedValue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Entity.INormalizedValue);

                            /** NormalizedValue moneyValue. */
                            public moneyValue?: (google.type.IMoney|null);

                            /** NormalizedValue dateValue. */
                            public dateValue?: (google.type.IDate|null);

                            /** NormalizedValue datetimeValue. */
                            public datetimeValue?: (google.type.IDateTime|null);

                            /** NormalizedValue addressValue. */
                            public addressValue?: (google.type.IPostalAddress|null);

                            /** NormalizedValue booleanValue. */
                            public booleanValue?: (boolean|null);

                            /** NormalizedValue integerValue. */
                            public integerValue?: (number|null);

                            /** NormalizedValue floatValue. */
                            public floatValue?: (number|null);

                            /** NormalizedValue text. */
                            public text: string;

                            /** NormalizedValue structuredValue. */
                            public structuredValue?: ("moneyValue"|"dateValue"|"datetimeValue"|"addressValue"|"booleanValue"|"integerValue"|"floatValue");

                            /**
                             * Creates a new NormalizedValue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns NormalizedValue instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Entity.INormalizedValue): google.cloud.documentai.v1.Document.Entity.NormalizedValue;

                            /**
                             * Encodes the specified NormalizedValue message. Does not implicitly {@link google.cloud.documentai.v1.Document.Entity.NormalizedValue.verify|verify} messages.
                             * @param message NormalizedValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Entity.INormalizedValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified NormalizedValue message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Entity.NormalizedValue.verify|verify} messages.
                             * @param message NormalizedValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Entity.INormalizedValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a NormalizedValue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns NormalizedValue
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Entity.NormalizedValue;

                            /**
                             * Decodes a NormalizedValue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns NormalizedValue
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Entity.NormalizedValue;

                            /**
                             * Verifies a NormalizedValue message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a NormalizedValue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns NormalizedValue
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Entity.NormalizedValue;

                            /**
                             * Creates a plain object from a NormalizedValue message. Also converts values to other types if specified.
                             * @param message NormalizedValue
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Entity.NormalizedValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this NormalizedValue to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for NormalizedValue
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of an EntityRelation. */
                    interface IEntityRelation {

                        /** EntityRelation subjectId */
                        subjectId?: (string|null);

                        /** EntityRelation objectId */
                        objectId?: (string|null);

                        /** EntityRelation relation */
                        relation?: (string|null);
                    }

                    /** Represents an EntityRelation. */
                    class EntityRelation implements IEntityRelation {

                        /**
                         * Constructs a new EntityRelation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IEntityRelation);

                        /** EntityRelation subjectId. */
                        public subjectId: string;

                        /** EntityRelation objectId. */
                        public objectId: string;

                        /** EntityRelation relation. */
                        public relation: string;

                        /**
                         * Creates a new EntityRelation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EntityRelation instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IEntityRelation): google.cloud.documentai.v1.Document.EntityRelation;

                        /**
                         * Encodes the specified EntityRelation message. Does not implicitly {@link google.cloud.documentai.v1.Document.EntityRelation.verify|verify} messages.
                         * @param message EntityRelation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IEntityRelation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EntityRelation message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.EntityRelation.verify|verify} messages.
                         * @param message EntityRelation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IEntityRelation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EntityRelation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EntityRelation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.EntityRelation;

                        /**
                         * Decodes an EntityRelation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EntityRelation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.EntityRelation;

                        /**
                         * Verifies an EntityRelation message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates an EntityRelation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EntityRelation
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.EntityRelation;

                        /**
                         * Creates a plain object from an EntityRelation message. Also converts values to other types if specified.
                         * @param message EntityRelation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.EntityRelation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EntityRelation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EntityRelation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TextAnchor. */
                    interface ITextAnchor {

                        /** TextAnchor textSegments */
                        textSegments?: (google.cloud.documentai.v1.Document.TextAnchor.ITextSegment[]|null);

                        /** TextAnchor content */
                        content?: (string|null);
                    }

                    /** Represents a TextAnchor. */
                    class TextAnchor implements ITextAnchor {

                        /**
                         * Constructs a new TextAnchor.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.ITextAnchor);

                        /** TextAnchor textSegments. */
                        public textSegments: google.cloud.documentai.v1.Document.TextAnchor.ITextSegment[];

                        /** TextAnchor content. */
                        public content: string;

                        /**
                         * Creates a new TextAnchor instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TextAnchor instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.ITextAnchor): google.cloud.documentai.v1.Document.TextAnchor;

                        /**
                         * Encodes the specified TextAnchor message. Does not implicitly {@link google.cloud.documentai.v1.Document.TextAnchor.verify|verify} messages.
                         * @param message TextAnchor message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.ITextAnchor, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TextAnchor message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.TextAnchor.verify|verify} messages.
                         * @param message TextAnchor message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.ITextAnchor, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TextAnchor message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TextAnchor
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.TextAnchor;

                        /**
                         * Decodes a TextAnchor message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TextAnchor
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.TextAnchor;

                        /**
                         * Verifies a TextAnchor message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TextAnchor message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TextAnchor
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.TextAnchor;

                        /**
                         * Creates a plain object from a TextAnchor message. Also converts values to other types if specified.
                         * @param message TextAnchor
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.TextAnchor, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TextAnchor to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TextAnchor
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace TextAnchor {

                        /** Properties of a TextSegment. */
                        interface ITextSegment {

                            /** TextSegment startIndex */
                            startIndex?: (number|Long|string|null);

                            /** TextSegment endIndex */
                            endIndex?: (number|Long|string|null);
                        }

                        /** Represents a TextSegment. */
                        class TextSegment implements ITextSegment {

                            /**
                             * Constructs a new TextSegment.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.TextAnchor.ITextSegment);

                            /** TextSegment startIndex. */
                            public startIndex: (number|Long|string);

                            /** TextSegment endIndex. */
                            public endIndex: (number|Long|string);

                            /**
                             * Creates a new TextSegment instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TextSegment instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.TextAnchor.ITextSegment): google.cloud.documentai.v1.Document.TextAnchor.TextSegment;

                            /**
                             * Encodes the specified TextSegment message. Does not implicitly {@link google.cloud.documentai.v1.Document.TextAnchor.TextSegment.verify|verify} messages.
                             * @param message TextSegment message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.TextAnchor.ITextSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TextSegment message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.TextAnchor.TextSegment.verify|verify} messages.
                             * @param message TextSegment message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.TextAnchor.ITextSegment, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TextSegment message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns TextSegment
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.TextAnchor.TextSegment;

                            /**
                             * Decodes a TextSegment message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns TextSegment
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.TextAnchor.TextSegment;

                            /**
                             * Verifies a TextSegment message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TextSegment message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns TextSegment
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.TextAnchor.TextSegment;

                            /**
                             * Creates a plain object from a TextSegment message. Also converts values to other types if specified.
                             * @param message TextSegment
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.TextAnchor.TextSegment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TextSegment to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for TextSegment
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a PageAnchor. */
                    interface IPageAnchor {

                        /** PageAnchor pageRefs */
                        pageRefs?: (google.cloud.documentai.v1.Document.PageAnchor.IPageRef[]|null);
                    }

                    /** Represents a PageAnchor. */
                    class PageAnchor implements IPageAnchor {

                        /**
                         * Constructs a new PageAnchor.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IPageAnchor);

                        /** PageAnchor pageRefs. */
                        public pageRefs: google.cloud.documentai.v1.Document.PageAnchor.IPageRef[];

                        /**
                         * Creates a new PageAnchor instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PageAnchor instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IPageAnchor): google.cloud.documentai.v1.Document.PageAnchor;

                        /**
                         * Encodes the specified PageAnchor message. Does not implicitly {@link google.cloud.documentai.v1.Document.PageAnchor.verify|verify} messages.
                         * @param message PageAnchor message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IPageAnchor, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PageAnchor message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.PageAnchor.verify|verify} messages.
                         * @param message PageAnchor message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IPageAnchor, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PageAnchor message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PageAnchor
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.PageAnchor;

                        /**
                         * Decodes a PageAnchor message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PageAnchor
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.PageAnchor;

                        /**
                         * Verifies a PageAnchor message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PageAnchor message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PageAnchor
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.PageAnchor;

                        /**
                         * Creates a plain object from a PageAnchor message. Also converts values to other types if specified.
                         * @param message PageAnchor
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.PageAnchor, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PageAnchor to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PageAnchor
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PageAnchor {

                        /** Properties of a PageRef. */
                        interface IPageRef {

                            /** PageRef page */
                            page?: (number|Long|string|null);

                            /** PageRef layoutType */
                            layoutType?: (google.cloud.documentai.v1.Document.PageAnchor.PageRef.LayoutType|keyof typeof google.cloud.documentai.v1.Document.PageAnchor.PageRef.LayoutType|null);

                            /** PageRef layoutId */
                            layoutId?: (string|null);

                            /** PageRef boundingPoly */
                            boundingPoly?: (google.cloud.documentai.v1.IBoundingPoly|null);

                            /** PageRef confidence */
                            confidence?: (number|null);
                        }

                        /** Represents a PageRef. */
                        class PageRef implements IPageRef {

                            /**
                             * Constructs a new PageRef.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.PageAnchor.IPageRef);

                            /** PageRef page. */
                            public page: (number|Long|string);

                            /** PageRef layoutType. */
                            public layoutType: (google.cloud.documentai.v1.Document.PageAnchor.PageRef.LayoutType|keyof typeof google.cloud.documentai.v1.Document.PageAnchor.PageRef.LayoutType);

                            /** PageRef layoutId. */
                            public layoutId: string;

                            /** PageRef boundingPoly. */
                            public boundingPoly?: (google.cloud.documentai.v1.IBoundingPoly|null);

                            /** PageRef confidence. */
                            public confidence: number;

                            /**
                             * Creates a new PageRef instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PageRef instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.PageAnchor.IPageRef): google.cloud.documentai.v1.Document.PageAnchor.PageRef;

                            /**
                             * Encodes the specified PageRef message. Does not implicitly {@link google.cloud.documentai.v1.Document.PageAnchor.PageRef.verify|verify} messages.
                             * @param message PageRef message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.PageAnchor.IPageRef, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PageRef message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.PageAnchor.PageRef.verify|verify} messages.
                             * @param message PageRef message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.PageAnchor.IPageRef, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PageRef message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns PageRef
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.PageAnchor.PageRef;

                            /**
                             * Decodes a PageRef message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PageRef
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.PageAnchor.PageRef;

                            /**
                             * Verifies a PageRef message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PageRef message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns PageRef
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.PageAnchor.PageRef;

                            /**
                             * Creates a plain object from a PageRef message. Also converts values to other types if specified.
                             * @param message PageRef
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.PageAnchor.PageRef, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PageRef to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for PageRef
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace PageRef {

                            /** LayoutType enum. */
                            enum LayoutType {
                                LAYOUT_TYPE_UNSPECIFIED = 0,
                                BLOCK = 1,
                                PARAGRAPH = 2,
                                LINE = 3,
                                TOKEN = 4,
                                VISUAL_ELEMENT = 5,
                                TABLE = 6,
                                FORM_FIELD = 7
                            }
                        }
                    }

                    /** Properties of a Provenance. */
                    interface IProvenance {

                        /** Provenance revision */
                        revision?: (number|null);

                        /** Provenance id */
                        id?: (number|null);

                        /** Provenance parents */
                        parents?: (google.cloud.documentai.v1.Document.Provenance.IParent[]|null);

                        /** Provenance type */
                        type?: (google.cloud.documentai.v1.Document.Provenance.OperationType|keyof typeof google.cloud.documentai.v1.Document.Provenance.OperationType|null);
                    }

                    /** Represents a Provenance. */
                    class Provenance implements IProvenance {

                        /**
                         * Constructs a new Provenance.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IProvenance);

                        /** Provenance revision. */
                        public revision: number;

                        /** Provenance id. */
                        public id: number;

                        /** Provenance parents. */
                        public parents: google.cloud.documentai.v1.Document.Provenance.IParent[];

                        /** Provenance type. */
                        public type: (google.cloud.documentai.v1.Document.Provenance.OperationType|keyof typeof google.cloud.documentai.v1.Document.Provenance.OperationType);

                        /**
                         * Creates a new Provenance instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Provenance instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IProvenance): google.cloud.documentai.v1.Document.Provenance;

                        /**
                         * Encodes the specified Provenance message. Does not implicitly {@link google.cloud.documentai.v1.Document.Provenance.verify|verify} messages.
                         * @param message Provenance message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IProvenance, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Provenance message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Provenance.verify|verify} messages.
                         * @param message Provenance message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IProvenance, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Provenance message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Provenance
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Provenance;

                        /**
                         * Decodes a Provenance message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Provenance
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Provenance;

                        /**
                         * Verifies a Provenance message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Provenance message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Provenance
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Provenance;

                        /**
                         * Creates a plain object from a Provenance message. Also converts values to other types if specified.
                         * @param message Provenance
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.Provenance, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Provenance to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Provenance
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Provenance {

                        /** Properties of a Parent. */
                        interface IParent {

                            /** Parent revision */
                            revision?: (number|null);

                            /** Parent index */
                            index?: (number|null);

                            /** Parent id */
                            id?: (number|null);
                        }

                        /** Represents a Parent. */
                        class Parent implements IParent {

                            /**
                             * Constructs a new Parent.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Provenance.IParent);

                            /** Parent revision. */
                            public revision: number;

                            /** Parent index. */
                            public index: number;

                            /** Parent id. */
                            public id: number;

                            /**
                             * Creates a new Parent instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Parent instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Provenance.IParent): google.cloud.documentai.v1.Document.Provenance.Parent;

                            /**
                             * Encodes the specified Parent message. Does not implicitly {@link google.cloud.documentai.v1.Document.Provenance.Parent.verify|verify} messages.
                             * @param message Parent message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Provenance.IParent, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Parent message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Provenance.Parent.verify|verify} messages.
                             * @param message Parent message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Provenance.IParent, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Parent message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Parent
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Provenance.Parent;

                            /**
                             * Decodes a Parent message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Parent
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Provenance.Parent;

                            /**
                             * Verifies a Parent message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Parent message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Parent
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Provenance.Parent;

                            /**
                             * Creates a plain object from a Parent message. Also converts values to other types if specified.
                             * @param message Parent
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Provenance.Parent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Parent to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Parent
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** OperationType enum. */
                        enum OperationType {
                            OPERATION_TYPE_UNSPECIFIED = 0,
                            ADD = 1,
                            REMOVE = 2,
                            UPDATE = 7,
                            REPLACE = 3,
                            EVAL_REQUESTED = 4,
                            EVAL_APPROVED = 5,
                            EVAL_SKIPPED = 6
                        }
                    }

                    /** Properties of a Revision. */
                    interface IRevision {

                        /** Revision agent */
                        agent?: (string|null);

                        /** Revision processor */
                        processor?: (string|null);

                        /** Revision id */
                        id?: (string|null);

                        /** Revision parent */
                        parent?: (number[]|null);

                        /** Revision parentIds */
                        parentIds?: (string[]|null);

                        /** Revision createTime */
                        createTime?: (google.protobuf.ITimestamp|null);

                        /** Revision humanReview */
                        humanReview?: (google.cloud.documentai.v1.Document.Revision.IHumanReview|null);
                    }

                    /** Represents a Revision. */
                    class Revision implements IRevision {

                        /**
                         * Constructs a new Revision.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IRevision);

                        /** Revision agent. */
                        public agent?: (string|null);

                        /** Revision processor. */
                        public processor?: (string|null);

                        /** Revision id. */
                        public id: string;

                        /** Revision parent. */
                        public parent: number[];

                        /** Revision parentIds. */
                        public parentIds: string[];

                        /** Revision createTime. */
                        public createTime?: (google.protobuf.ITimestamp|null);

                        /** Revision humanReview. */
                        public humanReview?: (google.cloud.documentai.v1.Document.Revision.IHumanReview|null);

                        /** Revision source. */
                        public source?: ("agent"|"processor");

                        /**
                         * Creates a new Revision instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Revision instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IRevision): google.cloud.documentai.v1.Document.Revision;

                        /**
                         * Encodes the specified Revision message. Does not implicitly {@link google.cloud.documentai.v1.Document.Revision.verify|verify} messages.
                         * @param message Revision message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IRevision, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Revision message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Revision.verify|verify} messages.
                         * @param message Revision message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IRevision, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Revision message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Revision
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Revision;

                        /**
                         * Decodes a Revision message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Revision
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Revision;

                        /**
                         * Verifies a Revision message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Revision message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Revision
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Revision;

                        /**
                         * Creates a plain object from a Revision message. Also converts values to other types if specified.
                         * @param message Revision
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.Revision, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Revision to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Revision
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Revision {

                        /** Properties of a HumanReview. */
                        interface IHumanReview {

                            /** HumanReview state */
                            state?: (string|null);

                            /** HumanReview stateMessage */
                            stateMessage?: (string|null);
                        }

                        /** Represents a HumanReview. */
                        class HumanReview implements IHumanReview {

                            /**
                             * Constructs a new HumanReview.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.Revision.IHumanReview);

                            /** HumanReview state. */
                            public state: string;

                            /** HumanReview stateMessage. */
                            public stateMessage: string;

                            /**
                             * Creates a new HumanReview instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns HumanReview instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.Revision.IHumanReview): google.cloud.documentai.v1.Document.Revision.HumanReview;

                            /**
                             * Encodes the specified HumanReview message. Does not implicitly {@link google.cloud.documentai.v1.Document.Revision.HumanReview.verify|verify} messages.
                             * @param message HumanReview message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.Revision.IHumanReview, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified HumanReview message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.Revision.HumanReview.verify|verify} messages.
                             * @param message HumanReview message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.Revision.IHumanReview, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a HumanReview message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns HumanReview
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.Revision.HumanReview;

                            /**
                             * Decodes a HumanReview message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns HumanReview
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.Revision.HumanReview;

                            /**
                             * Verifies a HumanReview message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a HumanReview message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns HumanReview
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.Revision.HumanReview;

                            /**
                             * Creates a plain object from a HumanReview message. Also converts values to other types if specified.
                             * @param message HumanReview
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.Revision.HumanReview, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this HumanReview to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for HumanReview
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a TextChange. */
                    interface ITextChange {

                        /** TextChange textAnchor */
                        textAnchor?: (google.cloud.documentai.v1.Document.ITextAnchor|null);

                        /** TextChange changedText */
                        changedText?: (string|null);

                        /** TextChange provenance */
                        provenance?: (google.cloud.documentai.v1.Document.IProvenance[]|null);
                    }

                    /** Represents a TextChange. */
                    class TextChange implements ITextChange {

                        /**
                         * Constructs a new TextChange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.ITextChange);

                        /** TextChange textAnchor. */
                        public textAnchor?: (google.cloud.documentai.v1.Document.ITextAnchor|null);

                        /** TextChange changedText. */
                        public changedText: string;

                        /** TextChange provenance. */
                        public provenance: google.cloud.documentai.v1.Document.IProvenance[];

                        /**
                         * Creates a new TextChange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TextChange instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.ITextChange): google.cloud.documentai.v1.Document.TextChange;

                        /**
                         * Encodes the specified TextChange message. Does not implicitly {@link google.cloud.documentai.v1.Document.TextChange.verify|verify} messages.
                         * @param message TextChange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.ITextChange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TextChange message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.TextChange.verify|verify} messages.
                         * @param message TextChange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.ITextChange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TextChange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TextChange
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.TextChange;

                        /**
                         * Decodes a TextChange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TextChange
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.TextChange;

                        /**
                         * Verifies a TextChange message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TextChange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TextChange
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.TextChange;

                        /**
                         * Creates a plain object from a TextChange message. Also converts values to other types if specified.
                         * @param message TextChange
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.TextChange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TextChange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TextChange
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DocumentLayout. */
                    interface IDocumentLayout {

                        /** DocumentLayout blocks */
                        blocks?: (google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock[]|null);
                    }

                    /** Represents a DocumentLayout. */
                    class DocumentLayout implements IDocumentLayout {

                        /**
                         * Constructs a new DocumentLayout.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IDocumentLayout);

                        /** DocumentLayout blocks. */
                        public blocks: google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock[];

                        /**
                         * Creates a new DocumentLayout instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DocumentLayout instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IDocumentLayout): google.cloud.documentai.v1.Document.DocumentLayout;

                        /**
                         * Encodes the specified DocumentLayout message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.verify|verify} messages.
                         * @param message DocumentLayout message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IDocumentLayout, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DocumentLayout message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.verify|verify} messages.
                         * @param message DocumentLayout message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IDocumentLayout, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DocumentLayout message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DocumentLayout
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout;

                        /**
                         * Decodes a DocumentLayout message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DocumentLayout
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout;

                        /**
                         * Verifies a DocumentLayout message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DocumentLayout message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DocumentLayout
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout;

                        /**
                         * Creates a plain object from a DocumentLayout message. Also converts values to other types if specified.
                         * @param message DocumentLayout
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DocumentLayout to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DocumentLayout
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DocumentLayout {

                        /** Properties of a DocumentLayoutBlock. */
                        interface IDocumentLayoutBlock {

                            /** DocumentLayoutBlock textBlock */
                            textBlock?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTextBlock|null);

                            /** DocumentLayoutBlock tableBlock */
                            tableBlock?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableBlock|null);

                            /** DocumentLayoutBlock listBlock */
                            listBlock?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListBlock|null);

                            /** DocumentLayoutBlock blockId */
                            blockId?: (string|null);

                            /** DocumentLayoutBlock pageSpan */
                            pageSpan?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutPageSpan|null);
                        }

                        /** Represents a DocumentLayoutBlock. */
                        class DocumentLayoutBlock implements IDocumentLayoutBlock {

                            /**
                             * Constructs a new DocumentLayoutBlock.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock);

                            /** DocumentLayoutBlock textBlock. */
                            public textBlock?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTextBlock|null);

                            /** DocumentLayoutBlock tableBlock. */
                            public tableBlock?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableBlock|null);

                            /** DocumentLayoutBlock listBlock. */
                            public listBlock?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListBlock|null);

                            /** DocumentLayoutBlock blockId. */
                            public blockId: string;

                            /** DocumentLayoutBlock pageSpan. */
                            public pageSpan?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutPageSpan|null);

                            /** DocumentLayoutBlock block. */
                            public block?: ("textBlock"|"tableBlock"|"listBlock");

                            /**
                             * Creates a new DocumentLayoutBlock instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DocumentLayoutBlock instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock;

                            /**
                             * Encodes the specified DocumentLayoutBlock message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.verify|verify} messages.
                             * @param message DocumentLayoutBlock message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DocumentLayoutBlock message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.verify|verify} messages.
                             * @param message DocumentLayoutBlock message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DocumentLayoutBlock message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns DocumentLayoutBlock
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock;

                            /**
                             * Decodes a DocumentLayoutBlock message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns DocumentLayoutBlock
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock;

                            /**
                             * Verifies a DocumentLayoutBlock message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DocumentLayoutBlock message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns DocumentLayoutBlock
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock;

                            /**
                             * Creates a plain object from a DocumentLayoutBlock message. Also converts values to other types if specified.
                             * @param message DocumentLayoutBlock
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DocumentLayoutBlock to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for DocumentLayoutBlock
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace DocumentLayoutBlock {

                            /** Properties of a LayoutPageSpan. */
                            interface ILayoutPageSpan {

                                /** LayoutPageSpan pageStart */
                                pageStart?: (number|null);

                                /** LayoutPageSpan pageEnd */
                                pageEnd?: (number|null);
                            }

                            /** Represents a LayoutPageSpan. */
                            class LayoutPageSpan implements ILayoutPageSpan {

                                /**
                                 * Constructs a new LayoutPageSpan.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutPageSpan);

                                /** LayoutPageSpan pageStart. */
                                public pageStart: number;

                                /** LayoutPageSpan pageEnd. */
                                public pageEnd: number;

                                /**
                                 * Creates a new LayoutPageSpan instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns LayoutPageSpan instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutPageSpan): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutPageSpan;

                                /**
                                 * Encodes the specified LayoutPageSpan message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutPageSpan.verify|verify} messages.
                                 * @param message LayoutPageSpan message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutPageSpan, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified LayoutPageSpan message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutPageSpan.verify|verify} messages.
                                 * @param message LayoutPageSpan message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutPageSpan, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a LayoutPageSpan message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns LayoutPageSpan
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutPageSpan;

                                /**
                                 * Decodes a LayoutPageSpan message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns LayoutPageSpan
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutPageSpan;

                                /**
                                 * Verifies a LayoutPageSpan message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a LayoutPageSpan message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns LayoutPageSpan
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutPageSpan;

                                /**
                                 * Creates a plain object from a LayoutPageSpan message. Also converts values to other types if specified.
                                 * @param message LayoutPageSpan
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutPageSpan, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this LayoutPageSpan to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for LayoutPageSpan
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a LayoutTextBlock. */
                            interface ILayoutTextBlock {

                                /** LayoutTextBlock text */
                                text?: (string|null);

                                /** LayoutTextBlock type */
                                type?: (string|null);

                                /** LayoutTextBlock blocks */
                                blocks?: (google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock[]|null);
                            }

                            /** Represents a LayoutTextBlock. */
                            class LayoutTextBlock implements ILayoutTextBlock {

                                /**
                                 * Constructs a new LayoutTextBlock.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTextBlock);

                                /** LayoutTextBlock text. */
                                public text: string;

                                /** LayoutTextBlock type. */
                                public type: string;

                                /** LayoutTextBlock blocks. */
                                public blocks: google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock[];

                                /**
                                 * Creates a new LayoutTextBlock instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns LayoutTextBlock instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTextBlock): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTextBlock;

                                /**
                                 * Encodes the specified LayoutTextBlock message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTextBlock.verify|verify} messages.
                                 * @param message LayoutTextBlock message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTextBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified LayoutTextBlock message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTextBlock.verify|verify} messages.
                                 * @param message LayoutTextBlock message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTextBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a LayoutTextBlock message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns LayoutTextBlock
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTextBlock;

                                /**
                                 * Decodes a LayoutTextBlock message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns LayoutTextBlock
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTextBlock;

                                /**
                                 * Verifies a LayoutTextBlock message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a LayoutTextBlock message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns LayoutTextBlock
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTextBlock;

                                /**
                                 * Creates a plain object from a LayoutTextBlock message. Also converts values to other types if specified.
                                 * @param message LayoutTextBlock
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTextBlock, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this LayoutTextBlock to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for LayoutTextBlock
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a LayoutTableBlock. */
                            interface ILayoutTableBlock {

                                /** LayoutTableBlock headerRows */
                                headerRows?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableRow[]|null);

                                /** LayoutTableBlock bodyRows */
                                bodyRows?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableRow[]|null);

                                /** LayoutTableBlock caption */
                                caption?: (string|null);
                            }

                            /** Represents a LayoutTableBlock. */
                            class LayoutTableBlock implements ILayoutTableBlock {

                                /**
                                 * Constructs a new LayoutTableBlock.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableBlock);

                                /** LayoutTableBlock headerRows. */
                                public headerRows: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableRow[];

                                /** LayoutTableBlock bodyRows. */
                                public bodyRows: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableRow[];

                                /** LayoutTableBlock caption. */
                                public caption: string;

                                /**
                                 * Creates a new LayoutTableBlock instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns LayoutTableBlock instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableBlock): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableBlock;

                                /**
                                 * Encodes the specified LayoutTableBlock message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableBlock.verify|verify} messages.
                                 * @param message LayoutTableBlock message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified LayoutTableBlock message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableBlock.verify|verify} messages.
                                 * @param message LayoutTableBlock message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a LayoutTableBlock message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns LayoutTableBlock
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableBlock;

                                /**
                                 * Decodes a LayoutTableBlock message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns LayoutTableBlock
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableBlock;

                                /**
                                 * Verifies a LayoutTableBlock message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a LayoutTableBlock message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns LayoutTableBlock
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableBlock;

                                /**
                                 * Creates a plain object from a LayoutTableBlock message. Also converts values to other types if specified.
                                 * @param message LayoutTableBlock
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableBlock, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this LayoutTableBlock to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for LayoutTableBlock
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a LayoutTableRow. */
                            interface ILayoutTableRow {

                                /** LayoutTableRow cells */
                                cells?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableCell[]|null);
                            }

                            /** Represents a LayoutTableRow. */
                            class LayoutTableRow implements ILayoutTableRow {

                                /**
                                 * Constructs a new LayoutTableRow.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableRow);

                                /** LayoutTableRow cells. */
                                public cells: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableCell[];

                                /**
                                 * Creates a new LayoutTableRow instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns LayoutTableRow instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableRow): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableRow;

                                /**
                                 * Encodes the specified LayoutTableRow message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableRow.verify|verify} messages.
                                 * @param message LayoutTableRow message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableRow, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified LayoutTableRow message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableRow.verify|verify} messages.
                                 * @param message LayoutTableRow message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableRow, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a LayoutTableRow message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns LayoutTableRow
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableRow;

                                /**
                                 * Decodes a LayoutTableRow message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns LayoutTableRow
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableRow;

                                /**
                                 * Verifies a LayoutTableRow message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a LayoutTableRow message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns LayoutTableRow
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableRow;

                                /**
                                 * Creates a plain object from a LayoutTableRow message. Also converts values to other types if specified.
                                 * @param message LayoutTableRow
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableRow, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this LayoutTableRow to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for LayoutTableRow
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a LayoutTableCell. */
                            interface ILayoutTableCell {

                                /** LayoutTableCell blocks */
                                blocks?: (google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock[]|null);

                                /** LayoutTableCell rowSpan */
                                rowSpan?: (number|null);

                                /** LayoutTableCell colSpan */
                                colSpan?: (number|null);
                            }

                            /** Represents a LayoutTableCell. */
                            class LayoutTableCell implements ILayoutTableCell {

                                /**
                                 * Constructs a new LayoutTableCell.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableCell);

                                /** LayoutTableCell blocks. */
                                public blocks: google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock[];

                                /** LayoutTableCell rowSpan. */
                                public rowSpan: number;

                                /** LayoutTableCell colSpan. */
                                public colSpan: number;

                                /**
                                 * Creates a new LayoutTableCell instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns LayoutTableCell instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableCell): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableCell;

                                /**
                                 * Encodes the specified LayoutTableCell message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableCell.verify|verify} messages.
                                 * @param message LayoutTableCell message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableCell, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified LayoutTableCell message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableCell.verify|verify} messages.
                                 * @param message LayoutTableCell message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutTableCell, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a LayoutTableCell message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns LayoutTableCell
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableCell;

                                /**
                                 * Decodes a LayoutTableCell message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns LayoutTableCell
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableCell;

                                /**
                                 * Verifies a LayoutTableCell message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a LayoutTableCell message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns LayoutTableCell
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableCell;

                                /**
                                 * Creates a plain object from a LayoutTableCell message. Also converts values to other types if specified.
                                 * @param message LayoutTableCell
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutTableCell, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this LayoutTableCell to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for LayoutTableCell
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a LayoutListBlock. */
                            interface ILayoutListBlock {

                                /** LayoutListBlock listEntries */
                                listEntries?: (google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListEntry[]|null);

                                /** LayoutListBlock type */
                                type?: (string|null);
                            }

                            /** Represents a LayoutListBlock. */
                            class LayoutListBlock implements ILayoutListBlock {

                                /**
                                 * Constructs a new LayoutListBlock.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListBlock);

                                /** LayoutListBlock listEntries. */
                                public listEntries: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListEntry[];

                                /** LayoutListBlock type. */
                                public type: string;

                                /**
                                 * Creates a new LayoutListBlock instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns LayoutListBlock instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListBlock): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListBlock;

                                /**
                                 * Encodes the specified LayoutListBlock message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListBlock.verify|verify} messages.
                                 * @param message LayoutListBlock message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified LayoutListBlock message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListBlock.verify|verify} messages.
                                 * @param message LayoutListBlock message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a LayoutListBlock message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns LayoutListBlock
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListBlock;

                                /**
                                 * Decodes a LayoutListBlock message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns LayoutListBlock
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListBlock;

                                /**
                                 * Verifies a LayoutListBlock message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a LayoutListBlock message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns LayoutListBlock
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListBlock;

                                /**
                                 * Creates a plain object from a LayoutListBlock message. Also converts values to other types if specified.
                                 * @param message LayoutListBlock
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListBlock, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this LayoutListBlock to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for LayoutListBlock
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a LayoutListEntry. */
                            interface ILayoutListEntry {

                                /** LayoutListEntry blocks */
                                blocks?: (google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock[]|null);
                            }

                            /** Represents a LayoutListEntry. */
                            class LayoutListEntry implements ILayoutListEntry {

                                /**
                                 * Constructs a new LayoutListEntry.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListEntry);

                                /** LayoutListEntry blocks. */
                                public blocks: google.cloud.documentai.v1.Document.DocumentLayout.IDocumentLayoutBlock[];

                                /**
                                 * Creates a new LayoutListEntry instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns LayoutListEntry instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListEntry): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListEntry;

                                /**
                                 * Encodes the specified LayoutListEntry message. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListEntry.verify|verify} messages.
                                 * @param message LayoutListEntry message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified LayoutListEntry message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListEntry.verify|verify} messages.
                                 * @param message LayoutListEntry message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.ILayoutListEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a LayoutListEntry message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns LayoutListEntry
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListEntry;

                                /**
                                 * Decodes a LayoutListEntry message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns LayoutListEntry
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListEntry;

                                /**
                                 * Verifies a LayoutListEntry message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a LayoutListEntry message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns LayoutListEntry
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListEntry;

                                /**
                                 * Creates a plain object from a LayoutListEntry message. Also converts values to other types if specified.
                                 * @param message LayoutListEntry
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.DocumentLayout.DocumentLayoutBlock.LayoutListEntry, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this LayoutListEntry to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for LayoutListEntry
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }
                    }

                    /** Properties of a ChunkedDocument. */
                    interface IChunkedDocument {

                        /** ChunkedDocument chunks */
                        chunks?: (google.cloud.documentai.v1.Document.ChunkedDocument.IChunk[]|null);
                    }

                    /** Represents a ChunkedDocument. */
                    class ChunkedDocument implements IChunkedDocument {

                        /**
                         * Constructs a new ChunkedDocument.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.documentai.v1.Document.IChunkedDocument);

                        /** ChunkedDocument chunks. */
                        public chunks: google.cloud.documentai.v1.Document.ChunkedDocument.IChunk[];

                        /**
                         * Creates a new ChunkedDocument instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChunkedDocument instance
                         */
                        public static create(properties?: google.cloud.documentai.v1.Document.IChunkedDocument): google.cloud.documentai.v1.Document.ChunkedDocument;

                        /**
                         * Encodes the specified ChunkedDocument message. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.verify|verify} messages.
                         * @param message ChunkedDocument message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.documentai.v1.Document.IChunkedDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChunkedDocument message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.verify|verify} messages.
                         * @param message ChunkedDocument message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.documentai.v1.Document.IChunkedDocument, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChunkedDocument message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChunkedDocument
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.ChunkedDocument;

                        /**
                         * Decodes a ChunkedDocument message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChunkedDocument
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.ChunkedDocument;

                        /**
                         * Verifies a ChunkedDocument message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChunkedDocument message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChunkedDocument
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.ChunkedDocument;

                        /**
                         * Creates a plain object from a ChunkedDocument message. Also converts values to other types if specified.
                         * @param message ChunkedDocument
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.documentai.v1.Document.ChunkedDocument, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChunkedDocument to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChunkedDocument
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ChunkedDocument {

                        /** Properties of a Chunk. */
                        interface IChunk {

                            /** Chunk chunkId */
                            chunkId?: (string|null);

                            /** Chunk sourceBlockIds */
                            sourceBlockIds?: (string[]|null);

                            /** Chunk content */
                            content?: (string|null);

                            /** Chunk pageSpan */
                            pageSpan?: (google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan|null);

                            /** Chunk pageHeaders */
                            pageHeaders?: (google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageHeader[]|null);

                            /** Chunk pageFooters */
                            pageFooters?: (google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageFooter[]|null);
                        }

                        /** Represents a Chunk. */
                        class Chunk implements IChunk {

                            /**
                             * Constructs a new Chunk.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.documentai.v1.Document.ChunkedDocument.IChunk);

                            /** Chunk chunkId. */
                            public chunkId: string;

                            /** Chunk sourceBlockIds. */
                            public sourceBlockIds: string[];

                            /** Chunk content. */
                            public content: string;

                            /** Chunk pageSpan. */
                            public pageSpan?: (google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan|null);

                            /** Chunk pageHeaders. */
                            public pageHeaders: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageHeader[];

                            /** Chunk pageFooters. */
                            public pageFooters: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageFooter[];

                            /**
                             * Creates a new Chunk instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Chunk instance
                             */
                            public static create(properties?: google.cloud.documentai.v1.Document.ChunkedDocument.IChunk): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk;

                            /**
                             * Encodes the specified Chunk message. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.verify|verify} messages.
                             * @param message Chunk message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.documentai.v1.Document.ChunkedDocument.IChunk, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Chunk message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.verify|verify} messages.
                             * @param message Chunk message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.documentai.v1.Document.ChunkedDocument.IChunk, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Chunk message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Chunk
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk;

                            /**
                             * Decodes a Chunk message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Chunk
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk;

                            /**
                             * Verifies a Chunk message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Chunk message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Chunk
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk;

                            /**
                             * Creates a plain object from a Chunk message. Also converts values to other types if specified.
                             * @param message Chunk
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Chunk to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Chunk
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace Chunk {

                            /** Properties of a ChunkPageSpan. */
                            interface IChunkPageSpan {

                                /** ChunkPageSpan pageStart */
                                pageStart?: (number|null);

                                /** ChunkPageSpan pageEnd */
                                pageEnd?: (number|null);
                            }

                            /** Represents a ChunkPageSpan. */
                            class ChunkPageSpan implements IChunkPageSpan {

                                /**
                                 * Constructs a new ChunkPageSpan.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan);

                                /** ChunkPageSpan pageStart. */
                                public pageStart: number;

                                /** ChunkPageSpan pageEnd. */
                                public pageEnd: number;

                                /**
                                 * Creates a new ChunkPageSpan instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns ChunkPageSpan instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageSpan;

                                /**
                                 * Encodes the specified ChunkPageSpan message. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageSpan.verify|verify} messages.
                                 * @param message ChunkPageSpan message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified ChunkPageSpan message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageSpan.verify|verify} messages.
                                 * @param message ChunkPageSpan message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a ChunkPageSpan message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns ChunkPageSpan
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageSpan;

                                /**
                                 * Decodes a ChunkPageSpan message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns ChunkPageSpan
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageSpan;

                                /**
                                 * Verifies a ChunkPageSpan message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a ChunkPageSpan message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns ChunkPageSpan
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageSpan;

                                /**
                                 * Creates a plain object from a ChunkPageSpan message. Also converts values to other types if specified.
                                 * @param message ChunkPageSpan
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageSpan, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this ChunkPageSpan to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for ChunkPageSpan
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a ChunkPageHeader. */
                            interface IChunkPageHeader {

                                /** ChunkPageHeader text */
                                text?: (string|null);

                                /** ChunkPageHeader pageSpan */
                                pageSpan?: (google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan|null);
                            }

                            /** Represents a ChunkPageHeader. */
                            class ChunkPageHeader implements IChunkPageHeader {

                                /**
                                 * Constructs a new ChunkPageHeader.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageHeader);

                                /** ChunkPageHeader text. */
                                public text: string;

                                /** ChunkPageHeader pageSpan. */
                                public pageSpan?: (google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan|null);

                                /**
                                 * Creates a new ChunkPageHeader instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns ChunkPageHeader instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageHeader): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageHeader;

                                /**
                                 * Encodes the specified ChunkPageHeader message. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageHeader.verify|verify} messages.
                                 * @param message ChunkPageHeader message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageHeader, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified ChunkPageHeader message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageHeader.verify|verify} messages.
                                 * @param message ChunkPageHeader message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageHeader, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a ChunkPageHeader message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns ChunkPageHeader
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageHeader;

                                /**
                                 * Decodes a ChunkPageHeader message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns ChunkPageHeader
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageHeader;

                                /**
                                 * Verifies a ChunkPageHeader message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a ChunkPageHeader message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns ChunkPageHeader
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageHeader;

                                /**
                                 * Creates a plain object from a ChunkPageHeader message. Also converts values to other types if specified.
                                 * @param message ChunkPageHeader
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageHeader, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this ChunkPageHeader to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for ChunkPageHeader
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }

                            /** Properties of a ChunkPageFooter. */
                            interface IChunkPageFooter {

                                /** ChunkPageFooter text */
                                text?: (string|null);

                                /** ChunkPageFooter pageSpan */
                                pageSpan?: (google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan|null);
                            }

                            /** Represents a ChunkPageFooter. */
                            class ChunkPageFooter implements IChunkPageFooter {

                                /**
                                 * Constructs a new ChunkPageFooter.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageFooter);

                                /** ChunkPageFooter text. */
                                public text: string;

                                /** ChunkPageFooter pageSpan. */
                                public pageSpan?: (google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageSpan|null);

                                /**
                                 * Creates a new ChunkPageFooter instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns ChunkPageFooter instance
                                 */
                                public static create(properties?: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageFooter): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageFooter;

                                /**
                                 * Encodes the specified ChunkPageFooter message. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageFooter.verify|verify} messages.
                                 * @param message ChunkPageFooter message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageFooter, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified ChunkPageFooter message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageFooter.verify|verify} messages.
                                 * @param message ChunkPageFooter message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.IChunkPageFooter, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a ChunkPageFooter message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns ChunkPageFooter
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageFooter;

                                /**
                                 * Decodes a ChunkPageFooter message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns ChunkPageFooter
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageFooter;

                                /**
                                 * Verifies a ChunkPageFooter message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a ChunkPageFooter message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns ChunkPageFooter
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageFooter;

                                /**
                                 * Creates a plain object from a ChunkPageFooter message. Also converts values to other types if specified.
                                 * @param message ChunkPageFooter
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.documentai.v1.Document.ChunkedDocument.Chunk.ChunkPageFooter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this ChunkPageFooter to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for ChunkPageFooter
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }
                    }
                }

                /** Properties of a Barcode. */
                interface IBarcode {

                    /** Barcode format */
                    format?: (string|null);

                    /** Barcode valueFormat */
                    valueFormat?: (string|null);

                    /** Barcode rawValue */
                    rawValue?: (string|null);
                }

                /** Represents a Barcode. */
                class Barcode implements IBarcode {

                    /**
                     * Constructs a new Barcode.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.documentai.v1.IBarcode);

                    /** Barcode format. */
                    public format: string;

                    /** Barcode valueFormat. */
                    public valueFormat: string;

                    /** Barcode rawValue. */
                    public rawValue: string;

                    /**
                     * Creates a new Barcode instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Barcode instance
                     */
                    public static create(properties?: google.cloud.documentai.v1.IBarcode): google.cloud.documentai.v1.Barcode;

                    /**
                     * Encodes the specified Barcode message. Does not implicitly {@link google.cloud.documentai.v1.Barcode.verify|verify} messages.
                     * @param message Barcode message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.documentai.v1.IBarcode, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Barcode message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Barcode.verify|verify} messages.
                     * @param message Barcode message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.documentai.v1.IBarcode, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Barcode message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Barcode
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Barcode;

                    /**
                     * Decodes a Barcode message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Barcode
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Barcode;

                    /**
                     * Verifies a Barcode message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Barcode message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Barcode
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Barcode;

                    /**
                     * Creates a plain object from a Barcode message. Also converts values to other types if specified.
                     * @param message Barcode
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.documentai.v1.Barcode, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Barcode to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Barcode
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Vertex. */
                interface IVertex {

                    /** Vertex x */
                    x?: (number|null);

                    /** Vertex y */
                    y?: (number|null);
                }

                /** Represents a Vertex. */
                class Vertex implements IVertex {

                    /**
                     * Constructs a new Vertex.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.documentai.v1.IVertex);

                    /** Vertex x. */
                    public x: number;

                    /** Vertex y. */
                    public y: number;

                    /**
                     * Creates a new Vertex instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Vertex instance
                     */
                    public static create(properties?: google.cloud.documentai.v1.IVertex): google.cloud.documentai.v1.Vertex;

                    /**
                     * Encodes the specified Vertex message. Does not implicitly {@link google.cloud.documentai.v1.Vertex.verify|verify} messages.
                     * @param message Vertex message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.documentai.v1.IVertex, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Vertex message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.Vertex.verify|verify} messages.
                     * @param message Vertex message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.documentai.v1.IVertex, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Vertex message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Vertex
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.Vertex;

                    /**
                     * Decodes a Vertex message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Vertex
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.Vertex;

                    /**
                     * Verifies a Vertex message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Vertex message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Vertex
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.Vertex;

                    /**
                     * Creates a plain object from a Vertex message. Also converts values to other types if specified.
                     * @param message Vertex
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.documentai.v1.Vertex, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Vertex to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Vertex
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NormalizedVertex. */
                interface INormalizedVertex {

                    /** NormalizedVertex x */
                    x?: (number|null);

                    /** NormalizedVertex y */
                    y?: (number|null);
                }

                /** Represents a NormalizedVertex. */
                class NormalizedVertex implements INormalizedVertex {

                    /**
                     * Constructs a new NormalizedVertex.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.documentai.v1.INormalizedVertex);

                    /** NormalizedVertex x. */
                    public x: number;

                    /** NormalizedVertex y. */
                    public y: number;

                    /**
                     * Creates a new NormalizedVertex instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NormalizedVertex instance
                     */
                    public static create(properties?: google.cloud.documentai.v1.INormalizedVertex): google.cloud.documentai.v1.NormalizedVertex;

                    /**
                     * Encodes the specified NormalizedVertex message. Does not implicitly {@link google.cloud.documentai.v1.NormalizedVertex.verify|verify} messages.
                     * @param message NormalizedVertex message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.documentai.v1.INormalizedVertex, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NormalizedVertex message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.NormalizedVertex.verify|verify} messages.
                     * @param message NormalizedVertex message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.documentai.v1.INormalizedVertex, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NormalizedVertex message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NormalizedVertex
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.NormalizedVertex;

                    /**
                     * Decodes a NormalizedVertex message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NormalizedVertex
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.NormalizedVertex;

                    /**
                     * Verifies a NormalizedVertex message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a NormalizedVertex message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NormalizedVertex
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.NormalizedVertex;

                    /**
                     * Creates a plain object from a NormalizedVertex message. Also converts values to other types if specified.
                     * @param message NormalizedVertex
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.documentai.v1.NormalizedVertex, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NormalizedVertex to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NormalizedVertex
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BoundingPoly. */
                interface IBoundingPoly {

                    /** BoundingPoly vertices */
                    vertices?: (google.cloud.documentai.v1.IVertex[]|null);

                    /** BoundingPoly normalizedVertices */
                    normalizedVertices?: (google.cloud.documentai.v1.INormalizedVertex[]|null);
                }

                /** Represents a BoundingPoly. */
                class BoundingPoly implements IBoundingPoly {

                    /**
                     * Constructs a new BoundingPoly.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.documentai.v1.IBoundingPoly);

                    /** BoundingPoly vertices. */
                    public vertices: google.cloud.documentai.v1.IVertex[];

                    /** BoundingPoly normalizedVertices. */
                    public normalizedVertices: google.cloud.documentai.v1.INormalizedVertex[];

                    /**
                     * Creates a new BoundingPoly instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BoundingPoly instance
                     */
                    public static create(properties?: google.cloud.documentai.v1.IBoundingPoly): google.cloud.documentai.v1.BoundingPoly;

                    /**
                     * Encodes the specified BoundingPoly message. Does not implicitly {@link google.cloud.documentai.v1.BoundingPoly.verify|verify} messages.
                     * @param message BoundingPoly message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.documentai.v1.IBoundingPoly, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BoundingPoly message, length delimited. Does not implicitly {@link google.cloud.documentai.v1.BoundingPoly.verify|verify} messages.
                     * @param message BoundingPoly message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.documentai.v1.IBoundingPoly, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BoundingPoly message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BoundingPoly
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.documentai.v1.BoundingPoly;

                    /**
                     * Decodes a BoundingPoly message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BoundingPoly
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.documentai.v1.BoundingPoly;

                    /**
                     * Verifies a BoundingPoly message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a BoundingPoly message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BoundingPoly
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.documentai.v1.BoundingPoly;

                    /**
                     * Creates a plain object from a BoundingPoly message. Also converts values to other types if specified.
                     * @param message BoundingPoly
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.documentai.v1.BoundingPoly, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BoundingPoly to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BoundingPoly
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }
    }

    /** Namespace api. */
    namespace api {

        /** FieldBehavior enum. */
        enum FieldBehavior {
            FIELD_BEHAVIOR_UNSPECIFIED = 0,
            OPTIONAL = 1,
            REQUIRED = 2,
            OUTPUT_ONLY = 3,
            INPUT_ONLY = 4,
            IMMUTABLE = 5,
            UNORDERED_LIST = 6,
            NON_EMPTY_DEFAULT = 7,
            IDENTIFIER = 8
        }

        /** Properties of a ResourceDescriptor. */
        interface IResourceDescriptor {

            /** ResourceDescriptor type */
            type?: (string|null);

            /** ResourceDescriptor pattern */
            pattern?: (string[]|null);

            /** ResourceDescriptor nameField */
            nameField?: (string|null);

            /** ResourceDescriptor history */
            history?: (google.api.ResourceDescriptor.History|keyof typeof google.api.ResourceDescriptor.History|null);

            /** ResourceDescriptor plural */
            plural?: (string|null);

            /** ResourceDescriptor singular */
            singular?: (string|null);

            /** ResourceDescriptor style */
            style?: (google.api.ResourceDescriptor.Style[]|null);
        }

        /** Represents a ResourceDescriptor. */
        class ResourceDescriptor implements IResourceDescriptor {

            /**
             * Constructs a new ResourceDescriptor.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IResourceDescriptor);

            /** ResourceDescriptor type. */
            public type: string;

            /** ResourceDescriptor pattern. */
            public pattern: string[];

            /** ResourceDescriptor nameField. */
            public nameField: string;

            /** ResourceDescriptor history. */
            public history: (google.api.ResourceDescriptor.History|keyof typeof google.api.ResourceDescriptor.History);

            /** ResourceDescriptor plural. */
            public plural: string;

            /** ResourceDescriptor singular. */
            public singular: string;

            /** ResourceDescriptor style. */
            public style: google.api.ResourceDescriptor.Style[];

            /**
             * Creates a new ResourceDescriptor instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResourceDescriptor instance
             */
            public static create(properties?: google.api.IResourceDescriptor): google.api.ResourceDescriptor;

            /**
             * Encodes the specified ResourceDescriptor message. Does not implicitly {@link google.api.ResourceDescriptor.verify|verify} messages.
             * @param message ResourceDescriptor message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IResourceDescriptor, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResourceDescriptor message, length delimited. Does not implicitly {@link google.api.ResourceDescriptor.verify|verify} messages.
             * @param message ResourceDescriptor message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IResourceDescriptor, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResourceDescriptor message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResourceDescriptor
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.ResourceDescriptor;

            /**
             * Decodes a ResourceDescriptor message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResourceDescriptor
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.ResourceDescriptor;

            /**
             * Verifies a ResourceDescriptor message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ResourceDescriptor message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResourceDescriptor
             */
            public static fromObject(object: { [k: string]: any }): google.api.ResourceDescriptor;

            /**
             * Creates a plain object from a ResourceDescriptor message. Also converts values to other types if specified.
             * @param message ResourceDescriptor
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.ResourceDescriptor, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResourceDescriptor to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResourceDescriptor
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace ResourceDescriptor {

            /** History enum. */
            enum History {
                HISTORY_UNSPECIFIED = 0,
                ORIGINALLY_SINGLE_PATTERN = 1,
                FUTURE_MULTI_PATTERN = 2
            }

            /** Style enum. */
            enum Style {
                STYLE_UNSPECIFIED = 0,
                DECLARATIVE_FRIENDLY = 1
            }
        }

        /** Properties of a ResourceReference. */
        interface IResourceReference {

            /** ResourceReference type */
            type?: (string|null);

            /** ResourceReference childType */
            childType?: (string|null);
        }

        /** Represents a ResourceReference. */
        class ResourceReference implements IResourceReference {

            /**
             * Constructs a new ResourceReference.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IResourceReference);

            /** ResourceReference type. */
            public type: string;

            /** ResourceReference childType. */
            public childType: string;

            /**
             * Creates a new ResourceReference instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResourceReference instance
             */
            public static create(properties?: google.api.IResourceReference): google.api.ResourceReference;

            /**
             * Encodes the specified ResourceReference message. Does not implicitly {@link google.api.ResourceReference.verify|verify} messages.
             * @param message ResourceReference message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IResourceReference, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResourceReference message, length delimited. Does not implicitly {@link google.api.ResourceReference.verify|verify} messages.
             * @param message ResourceReference message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IResourceReference, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResourceReference message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResourceReference
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.ResourceReference;

            /**
             * Decodes a ResourceReference message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResourceReference
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.ResourceReference;

            /**
             * Verifies a ResourceReference message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ResourceReference message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResourceReference
             */
            public static fromObject(object: { [k: string]: any }): google.api.ResourceReference;

            /**
             * Creates a plain object from a ResourceReference message. Also converts values to other types if specified.
             * @param message ResourceReference
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.ResourceReference, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResourceReference to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResourceReference
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Http. */
        interface IHttp {

            /** Http rules */
            rules?: (google.api.IHttpRule[]|null);

            /** Http fullyDecodeReservedExpansion */
            fullyDecodeReservedExpansion?: (boolean|null);
        }

        /** Represents a Http. */
        class Http implements IHttp {

            /**
             * Constructs a new Http.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IHttp);

            /** Http rules. */
            public rules: google.api.IHttpRule[];

            /** Http fullyDecodeReservedExpansion. */
            public fullyDecodeReservedExpansion: boolean;

            /**
             * Creates a new Http instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Http instance
             */
            public static create(properties?: google.api.IHttp): google.api.Http;

            /**
             * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages.
             * @param message Http message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages.
             * @param message Http message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Http message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Http
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http;

            /**
             * Decodes a Http message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Http
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http;

            /**
             * Verifies a Http message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Http message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Http
             */
            public static fromObject(object: { [k: string]: any }): google.api.Http;

            /**
             * Creates a plain object from a Http message. Also converts values to other types if specified.
             * @param message Http
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Http to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Http
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a HttpRule. */
        interface IHttpRule {

            /** HttpRule selector */
            selector?: (string|null);

            /** HttpRule get */
            get?: (string|null);

            /** HttpRule put */
            put?: (string|null);

            /** HttpRule post */
            post?: (string|null);

            /** HttpRule delete */
            "delete"?: (string|null);

            /** HttpRule patch */
            patch?: (string|null);

            /** HttpRule custom */
            custom?: (google.api.ICustomHttpPattern|null);

            /** HttpRule body */
            body?: (string|null);

            /** HttpRule responseBody */
            responseBody?: (string|null);

            /** HttpRule additionalBindings */
            additionalBindings?: (google.api.IHttpRule[]|null);
        }

        /** Represents a HttpRule. */
        class HttpRule implements IHttpRule {

            /**
             * Constructs a new HttpRule.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IHttpRule);

            /** HttpRule selector. */
            public selector: string;

            /** HttpRule get. */
            public get?: (string|null);

            /** HttpRule put. */
            public put?: (string|null);

            /** HttpRule post. */
            public post?: (string|null);

            /** HttpRule delete. */
            public delete?: (string|null);

            /** HttpRule patch. */
            public patch?: (string|null);

            /** HttpRule custom. */
            public custom?: (google.api.ICustomHttpPattern|null);

            /** HttpRule body. */
            public body: string;

            /** HttpRule responseBody. */
            public responseBody: string;

            /** HttpRule additionalBindings. */
            public additionalBindings: google.api.IHttpRule[];

            /** HttpRule pattern. */
            public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom");

            /**
             * Creates a new HttpRule instance using the specified properties.
             * @param [properties] Properties to set
             * @returns HttpRule instance
             */
            public static create(properties?: google.api.IHttpRule): google.api.HttpRule;

            /**
             * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
             * @param message HttpRule message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
             * @param message HttpRule message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a HttpRule message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns HttpRule
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule;

            /**
             * Decodes a HttpRule message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns HttpRule
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule;

            /**
             * Verifies a HttpRule message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a HttpRule message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns HttpRule
             */
            public static fromObject(object: { [k: string]: any }): google.api.HttpRule;

            /**
             * Creates a plain object from a HttpRule message. Also converts values to other types if specified.
             * @param message HttpRule
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this HttpRule to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for HttpRule
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CustomHttpPattern. */
        interface ICustomHttpPattern {

            /** CustomHttpPattern kind */
            kind?: (string|null);

            /** CustomHttpPattern path */
            path?: (string|null);
        }

        /** Represents a CustomHttpPattern. */
        class CustomHttpPattern implements ICustomHttpPattern {

            /**
             * Constructs a new CustomHttpPattern.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ICustomHttpPattern);

            /** CustomHttpPattern kind. */
            public kind: string;

            /** CustomHttpPattern path. */
            public path: string;

            /**
             * Creates a new CustomHttpPattern instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CustomHttpPattern instance
             */
            public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern;

            /**
             * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
             * @param message CustomHttpPattern message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
             * @param message CustomHttpPattern message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CustomHttpPattern message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CustomHttpPattern
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern;

            /**
             * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CustomHttpPattern
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern;

            /**
             * Verifies a CustomHttpPattern message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CustomHttpPattern
             */
            public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern;

            /**
             * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified.
             * @param message CustomHttpPattern
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CustomHttpPattern to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CustomHttpPattern
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CommonLanguageSettings. */
        interface ICommonLanguageSettings {

            /** CommonLanguageSettings referenceDocsUri */
            referenceDocsUri?: (string|null);

            /** CommonLanguageSettings destinations */
            destinations?: (google.api.ClientLibraryDestination[]|null);
        }

        /** Represents a CommonLanguageSettings. */
        class CommonLanguageSettings implements ICommonLanguageSettings {

            /**
             * Constructs a new CommonLanguageSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ICommonLanguageSettings);

            /** CommonLanguageSettings referenceDocsUri. */
            public referenceDocsUri: string;

            /** CommonLanguageSettings destinations. */
            public destinations: google.api.ClientLibraryDestination[];

            /**
             * Creates a new CommonLanguageSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CommonLanguageSettings instance
             */
            public static create(properties?: google.api.ICommonLanguageSettings): google.api.CommonLanguageSettings;

            /**
             * Encodes the specified CommonLanguageSettings message. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
             * @param message CommonLanguageSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CommonLanguageSettings message, length delimited. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
             * @param message CommonLanguageSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CommonLanguageSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CommonLanguageSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CommonLanguageSettings;

            /**
             * Decodes a CommonLanguageSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CommonLanguageSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CommonLanguageSettings;

            /**
             * Verifies a CommonLanguageSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CommonLanguageSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CommonLanguageSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.CommonLanguageSettings;

            /**
             * Creates a plain object from a CommonLanguageSettings message. Also converts values to other types if specified.
             * @param message CommonLanguageSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.CommonLanguageSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CommonLanguageSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CommonLanguageSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ClientLibrarySettings. */
        interface IClientLibrarySettings {

            /** ClientLibrarySettings version */
            version?: (string|null);

            /** ClientLibrarySettings launchStage */
            launchStage?: (google.api.LaunchStage|keyof typeof google.api.LaunchStage|null);

            /** ClientLibrarySettings restNumericEnums */
            restNumericEnums?: (boolean|null);

            /** ClientLibrarySettings javaSettings */
            javaSettings?: (google.api.IJavaSettings|null);

            /** ClientLibrarySettings cppSettings */
            cppSettings?: (google.api.ICppSettings|null);

            /** ClientLibrarySettings phpSettings */
            phpSettings?: (google.api.IPhpSettings|null);

            /** ClientLibrarySettings pythonSettings */
            pythonSettings?: (google.api.IPythonSettings|null);

            /** ClientLibrarySettings nodeSettings */
            nodeSettings?: (google.api.INodeSettings|null);

            /** ClientLibrarySettings dotnetSettings */
            dotnetSettings?: (google.api.IDotnetSettings|null);

            /** ClientLibrarySettings rubySettings */
            rubySettings?: (google.api.IRubySettings|null);

            /** ClientLibrarySettings goSettings */
            goSettings?: (google.api.IGoSettings|null);
        }

        /** Represents a ClientLibrarySettings. */
        class ClientLibrarySettings implements IClientLibrarySettings {

            /**
             * Constructs a new ClientLibrarySettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IClientLibrarySettings);

            /** ClientLibrarySettings version. */
            public version: string;

            /** ClientLibrarySettings launchStage. */
            public launchStage: (google.api.LaunchStage|keyof typeof google.api.LaunchStage);

            /** ClientLibrarySettings restNumericEnums. */
            public restNumericEnums: boolean;

            /** ClientLibrarySettings javaSettings. */
            public javaSettings?: (google.api.IJavaSettings|null);

            /** ClientLibrarySettings cppSettings. */
            public cppSettings?: (google.api.ICppSettings|null);

            /** ClientLibrarySettings phpSettings. */
            public phpSettings?: (google.api.IPhpSettings|null);

            /** ClientLibrarySettings pythonSettings. */
            public pythonSettings?: (google.api.IPythonSettings|null);

            /** ClientLibrarySettings nodeSettings. */
            public nodeSettings?: (google.api.INodeSettings|null);

            /** ClientLibrarySettings dotnetSettings. */
            public dotnetSettings?: (google.api.IDotnetSettings|null);

            /** ClientLibrarySettings rubySettings. */
            public rubySettings?: (google.api.IRubySettings|null);

            /** ClientLibrarySettings goSettings. */
            public goSettings?: (google.api.IGoSettings|null);

            /**
             * Creates a new ClientLibrarySettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ClientLibrarySettings instance
             */
            public static create(properties?: google.api.IClientLibrarySettings): google.api.ClientLibrarySettings;

            /**
             * Encodes the specified ClientLibrarySettings message. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
             * @param message ClientLibrarySettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ClientLibrarySettings message, length delimited. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
             * @param message ClientLibrarySettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ClientLibrarySettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ClientLibrarySettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.ClientLibrarySettings;

            /**
             * Decodes a ClientLibrarySettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ClientLibrarySettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.ClientLibrarySettings;

            /**
             * Verifies a ClientLibrarySettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ClientLibrarySettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ClientLibrarySettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.ClientLibrarySettings;

            /**
             * Creates a plain object from a ClientLibrarySettings message. Also converts values to other types if specified.
             * @param message ClientLibrarySettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.ClientLibrarySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ClientLibrarySettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ClientLibrarySettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Publishing. */
        interface IPublishing {

            /** Publishing methodSettings */
            methodSettings?: (google.api.IMethodSettings[]|null);

            /** Publishing newIssueUri */
            newIssueUri?: (string|null);

            /** Publishing documentationUri */
            documentationUri?: (string|null);

            /** Publishing apiShortName */
            apiShortName?: (string|null);

            /** Publishing githubLabel */
            githubLabel?: (string|null);

            /** Publishing codeownerGithubTeams */
            codeownerGithubTeams?: (string[]|null);

            /** Publishing docTagPrefix */
            docTagPrefix?: (string|null);

            /** Publishing organization */
            organization?: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization|null);

            /** Publishing librarySettings */
            librarySettings?: (google.api.IClientLibrarySettings[]|null);

            /** Publishing protoReferenceDocumentationUri */
            protoReferenceDocumentationUri?: (string|null);
        }

        /** Represents a Publishing. */
        class Publishing implements IPublishing {

            /**
             * Constructs a new Publishing.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IPublishing);

            /** Publishing methodSettings. */
            public methodSettings: google.api.IMethodSettings[];

            /** Publishing newIssueUri. */
            public newIssueUri: string;

            /** Publishing documentationUri. */
            public documentationUri: string;

            /** Publishing apiShortName. */
            public apiShortName: string;

            /** Publishing githubLabel. */
            public githubLabel: string;

            /** Publishing codeownerGithubTeams. */
            public codeownerGithubTeams: string[];

            /** Publishing docTagPrefix. */
            public docTagPrefix: string;

            /** Publishing organization. */
            public organization: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization);

            /** Publishing librarySettings. */
            public librarySettings: google.api.IClientLibrarySettings[];

            /** Publishing protoReferenceDocumentationUri. */
            public protoReferenceDocumentationUri: string;

            /**
             * Creates a new Publishing instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Publishing instance
             */
            public static create(properties?: google.api.IPublishing): google.api.Publishing;

            /**
             * Encodes the specified Publishing message. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
             * @param message Publishing message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Publishing message, length delimited. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
             * @param message Publishing message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Publishing message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Publishing
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Publishing;

            /**
             * Decodes a Publishing message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Publishing
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Publishing;

            /**
             * Verifies a Publishing message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Publishing message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Publishing
             */
            public static fromObject(object: { [k: string]: any }): google.api.Publishing;

            /**
             * Creates a plain object from a Publishing message. Also converts values to other types if specified.
             * @param message Publishing
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.Publishing, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Publishing to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Publishing
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a JavaSettings. */
        interface IJavaSettings {

            /** JavaSettings libraryPackage */
            libraryPackage?: (string|null);

            /** JavaSettings serviceClassNames */
            serviceClassNames?: ({ [k: string]: string }|null);

            /** JavaSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a JavaSettings. */
        class JavaSettings implements IJavaSettings {

            /**
             * Constructs a new JavaSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IJavaSettings);

            /** JavaSettings libraryPackage. */
            public libraryPackage: string;

            /** JavaSettings serviceClassNames. */
            public serviceClassNames: { [k: string]: string };

            /** JavaSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new JavaSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns JavaSettings instance
             */
            public static create(properties?: google.api.IJavaSettings): google.api.JavaSettings;

            /**
             * Encodes the specified JavaSettings message. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
             * @param message JavaSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified JavaSettings message, length delimited. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
             * @param message JavaSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a JavaSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns JavaSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.JavaSettings;

            /**
             * Decodes a JavaSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns JavaSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.JavaSettings;

            /**
             * Verifies a JavaSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a JavaSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns JavaSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.JavaSettings;

            /**
             * Creates a plain object from a JavaSettings message. Also converts values to other types if specified.
             * @param message JavaSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.JavaSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this JavaSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for JavaSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CppSettings. */
        interface ICppSettings {

            /** CppSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a CppSettings. */
        class CppSettings implements ICppSettings {

            /**
             * Constructs a new CppSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ICppSettings);

            /** CppSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new CppSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CppSettings instance
             */
            public static create(properties?: google.api.ICppSettings): google.api.CppSettings;

            /**
             * Encodes the specified CppSettings message. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
             * @param message CppSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CppSettings message, length delimited. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
             * @param message CppSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CppSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CppSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CppSettings;

            /**
             * Decodes a CppSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CppSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CppSettings;

            /**
             * Verifies a CppSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CppSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CppSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.CppSettings;

            /**
             * Creates a plain object from a CppSettings message. Also converts values to other types if specified.
             * @param message CppSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.CppSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CppSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CppSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a PhpSettings. */
        interface IPhpSettings {

            /** PhpSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a PhpSettings. */
        class PhpSettings implements IPhpSettings {

            /**
             * Constructs a new PhpSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IPhpSettings);

            /** PhpSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new PhpSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PhpSettings instance
             */
            public static create(properties?: google.api.IPhpSettings): google.api.PhpSettings;

            /**
             * Encodes the specified PhpSettings message. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
             * @param message PhpSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PhpSettings message, length delimited. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
             * @param message PhpSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PhpSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PhpSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PhpSettings;

            /**
             * Decodes a PhpSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PhpSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PhpSettings;

            /**
             * Verifies a PhpSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a PhpSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PhpSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.PhpSettings;

            /**
             * Creates a plain object from a PhpSettings message. Also converts values to other types if specified.
             * @param message PhpSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.PhpSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PhpSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PhpSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a PythonSettings. */
        interface IPythonSettings {

            /** PythonSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a PythonSettings. */
        class PythonSettings implements IPythonSettings {

            /**
             * Constructs a new PythonSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IPythonSettings);

            /** PythonSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new PythonSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PythonSettings instance
             */
            public static create(properties?: google.api.IPythonSettings): google.api.PythonSettings;

            /**
             * Encodes the specified PythonSettings message. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
             * @param message PythonSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PythonSettings message, length delimited. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
             * @param message PythonSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PythonSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PythonSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings;

            /**
             * Decodes a PythonSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PythonSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings;

            /**
             * Verifies a PythonSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a PythonSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PythonSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.PythonSettings;

            /**
             * Creates a plain object from a PythonSettings message. Also converts values to other types if specified.
             * @param message PythonSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.PythonSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PythonSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PythonSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a NodeSettings. */
        interface INodeSettings {

            /** NodeSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a NodeSettings. */
        class NodeSettings implements INodeSettings {

            /**
             * Constructs a new NodeSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.INodeSettings);

            /** NodeSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new NodeSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns NodeSettings instance
             */
            public static create(properties?: google.api.INodeSettings): google.api.NodeSettings;

            /**
             * Encodes the specified NodeSettings message. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
             * @param message NodeSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified NodeSettings message, length delimited. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
             * @param message NodeSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a NodeSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns NodeSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.NodeSettings;

            /**
             * Decodes a NodeSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns NodeSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.NodeSettings;

            /**
             * Verifies a NodeSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a NodeSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns NodeSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.NodeSettings;

            /**
             * Creates a plain object from a NodeSettings message. Also converts values to other types if specified.
             * @param message NodeSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.NodeSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this NodeSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for NodeSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DotnetSettings. */
        interface IDotnetSettings {

            /** DotnetSettings common */
            common?: (google.api.ICommonLanguageSettings|null);

            /** DotnetSettings renamedServices */
            renamedServices?: ({ [k: string]: string }|null);

            /** DotnetSettings renamedResources */
            renamedResources?: ({ [k: string]: string }|null);

            /** DotnetSettings ignoredResources */
            ignoredResources?: (string[]|null);

            /** DotnetSettings forcedNamespaceAliases */
            forcedNamespaceAliases?: (string[]|null);

            /** DotnetSettings handwrittenSignatures */
            handwrittenSignatures?: (string[]|null);
        }

        /** Represents a DotnetSettings. */
        class DotnetSettings implements IDotnetSettings {

            /**
             * Constructs a new DotnetSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IDotnetSettings);

            /** DotnetSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /** DotnetSettings renamedServices. */
            public renamedServices: { [k: string]: string };

            /** DotnetSettings renamedResources. */
            public renamedResources: { [k: string]: string };

            /** DotnetSettings ignoredResources. */
            public ignoredResources: string[];

            /** DotnetSettings forcedNamespaceAliases. */
            public forcedNamespaceAliases: string[];

            /** DotnetSettings handwrittenSignatures. */
            public handwrittenSignatures: string[];

            /**
             * Creates a new DotnetSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DotnetSettings instance
             */
            public static create(properties?: google.api.IDotnetSettings): google.api.DotnetSettings;

            /**
             * Encodes the specified DotnetSettings message. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
             * @param message DotnetSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DotnetSettings message, length delimited. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
             * @param message DotnetSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DotnetSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DotnetSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.DotnetSettings;

            /**
             * Decodes a DotnetSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DotnetSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.DotnetSettings;

            /**
             * Verifies a DotnetSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DotnetSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DotnetSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.DotnetSettings;

            /**
             * Creates a plain object from a DotnetSettings message. Also converts values to other types if specified.
             * @param message DotnetSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.DotnetSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DotnetSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DotnetSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a RubySettings. */
        interface IRubySettings {

            /** RubySettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a RubySettings. */
        class RubySettings implements IRubySettings {

            /**
             * Constructs a new RubySettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IRubySettings);

            /** RubySettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new RubySettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RubySettings instance
             */
            public static create(properties?: google.api.IRubySettings): google.api.RubySettings;

            /**
             * Encodes the specified RubySettings message. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
             * @param message RubySettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified RubySettings message, length delimited. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
             * @param message RubySettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a RubySettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RubySettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.RubySettings;

            /**
             * Decodes a RubySettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RubySettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.RubySettings;

            /**
             * Verifies a RubySettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a RubySettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns RubySettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.RubySettings;

            /**
             * Creates a plain object from a RubySettings message. Also converts values to other types if specified.
             * @param message RubySettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.RubySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this RubySettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for RubySettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a GoSettings. */
        interface IGoSettings {

            /** GoSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a GoSettings. */
        class GoSettings implements IGoSettings {

            /**
             * Constructs a new GoSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IGoSettings);

            /** GoSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new GoSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GoSettings instance
             */
            public static create(properties?: google.api.IGoSettings): google.api.GoSettings;

            /**
             * Encodes the specified GoSettings message. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
             * @param message GoSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GoSettings message, length delimited. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
             * @param message GoSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GoSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GoSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.GoSettings;

            /**
             * Decodes a GoSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GoSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.GoSettings;

            /**
             * Verifies a GoSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GoSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GoSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.GoSettings;

            /**
             * Creates a plain object from a GoSettings message. Also converts values to other types if specified.
             * @param message GoSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.GoSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GoSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GoSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a MethodSettings. */
        interface IMethodSettings {

            /** MethodSettings selector */
            selector?: (string|null);

            /** MethodSettings longRunning */
            longRunning?: (google.api.MethodSettings.ILongRunning|null);

            /** MethodSettings autoPopulatedFields */
            autoPopulatedFields?: (string[]|null);
        }

        /** Represents a MethodSettings. */
        class MethodSettings implements IMethodSettings {

            /**
             * Constructs a new MethodSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IMethodSettings);

            /** MethodSettings selector. */
            public selector: string;

            /** MethodSettings longRunning. */
            public longRunning?: (google.api.MethodSettings.ILongRunning|null);

            /** MethodSettings autoPopulatedFields. */
            public autoPopulatedFields: string[];

            /**
             * Creates a new MethodSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MethodSettings instance
             */
            public static create(properties?: google.api.IMethodSettings): google.api.MethodSettings;

            /**
             * Encodes the specified MethodSettings message. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
             * @param message MethodSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified MethodSettings message, length delimited. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
             * @param message MethodSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a MethodSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MethodSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings;

            /**
             * Decodes a MethodSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MethodSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings;

            /**
             * Verifies a MethodSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a MethodSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns MethodSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.MethodSettings;

            /**
             * Creates a plain object from a MethodSettings message. Also converts values to other types if specified.
             * @param message MethodSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.MethodSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MethodSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for MethodSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace MethodSettings {

            /** Properties of a LongRunning. */
            interface ILongRunning {

                /** LongRunning initialPollDelay */
                initialPollDelay?: (google.protobuf.IDuration|null);

                /** LongRunning pollDelayMultiplier */
                pollDelayMultiplier?: (number|null);

                /** LongRunning maxPollDelay */
                maxPollDelay?: (google.protobuf.IDuration|null);

                /** LongRunning totalPollTimeout */
                totalPollTimeout?: (google.protobuf.IDuration|null);
            }

            /** Represents a LongRunning. */
            class LongRunning implements ILongRunning {

                /**
                 * Constructs a new LongRunning.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.api.MethodSettings.ILongRunning);

                /** LongRunning initialPollDelay. */
                public initialPollDelay?: (google.protobuf.IDuration|null);

                /** LongRunning pollDelayMultiplier. */
                public pollDelayMultiplier: number;

                /** LongRunning maxPollDelay. */
                public maxPollDelay?: (google.protobuf.IDuration|null);

                /** LongRunning totalPollTimeout. */
                public totalPollTimeout?: (google.protobuf.IDuration|null);

                /**
                 * Creates a new LongRunning instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns LongRunning instance
                 */
                public static create(properties?: google.api.MethodSettings.ILongRunning): google.api.MethodSettings.LongRunning;

                /**
                 * Encodes the specified LongRunning message. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
                 * @param message LongRunning message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified LongRunning message, length delimited. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
                 * @param message LongRunning message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a LongRunning message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns LongRunning
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings.LongRunning;

                /**
                 * Decodes a LongRunning message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns LongRunning
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings.LongRunning;

                /**
                 * Verifies a LongRunning message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a LongRunning message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns LongRunning
                 */
                public static fromObject(object: { [k: string]: any }): google.api.MethodSettings.LongRunning;

                /**
                 * Creates a plain object from a LongRunning message. Also converts values to other types if specified.
                 * @param message LongRunning
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.api.MethodSettings.LongRunning, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this LongRunning to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for LongRunning
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** ClientLibraryOrganization enum. */
        enum ClientLibraryOrganization {
            CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0,
            CLOUD = 1,
            ADS = 2,
            PHOTOS = 3,
            STREET_VIEW = 4,
            SHOPPING = 5,
            GEO = 6,
            GENERATIVE_AI = 7
        }

        /** ClientLibraryDestination enum. */
        enum ClientLibraryDestination {
            CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0,
            GITHUB = 10,
            PACKAGE_MANAGER = 20
        }

        /** LaunchStage enum. */
        enum LaunchStage {
            LAUNCH_STAGE_UNSPECIFIED = 0,
            UNIMPLEMENTED = 6,
            PRELAUNCH = 7,
            EARLY_ACCESS = 1,
            ALPHA = 2,
            BETA = 3,
            GA = 4,
            DEPRECATED = 5
        }
    }

    /** Namespace protobuf. */
    namespace protobuf {

        /** Properties of a FileDescriptorSet. */
        interface IFileDescriptorSet {

            /** FileDescriptorSet file */
            file?: (google.protobuf.IFileDescriptorProto[]|null);
        }

        /** Represents a FileDescriptorSet. */
        class FileDescriptorSet implements IFileDescriptorSet {

            /**
             * Constructs a new FileDescriptorSet.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFileDescriptorSet);

            /** FileDescriptorSet file. */
            public file: google.protobuf.IFileDescriptorProto[];

            /**
             * Creates a new FileDescriptorSet instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FileDescriptorSet instance
             */
            public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet;

            /**
             * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages.
             * @param message FileDescriptorSet message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages.
             * @param message FileDescriptorSet message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FileDescriptorSet message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FileDescriptorSet
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet;

            /**
             * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FileDescriptorSet
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet;

            /**
             * Verifies a FileDescriptorSet message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FileDescriptorSet
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet;

            /**
             * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified.
             * @param message FileDescriptorSet
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FileDescriptorSet to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FileDescriptorSet
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Edition enum. */
        enum Edition {
            EDITION_UNKNOWN = 0,
            EDITION_PROTO2 = 998,
            EDITION_PROTO3 = 999,
            EDITION_2023 = 1000,
            EDITION_2024 = 1001,
            EDITION_1_TEST_ONLY = 1,
            EDITION_2_TEST_ONLY = 2,
            EDITION_99997_TEST_ONLY = 99997,
            EDITION_99998_TEST_ONLY = 99998,
            EDITION_99999_TEST_ONLY = 99999,
            EDITION_MAX = 2147483647
        }

        /** Properties of a FileDescriptorProto. */
        interface IFileDescriptorProto {

            /** FileDescriptorProto name */
            name?: (string|null);

            /** FileDescriptorProto package */
            "package"?: (string|null);

            /** FileDescriptorProto dependency */
            dependency?: (string[]|null);

            /** FileDescriptorProto publicDependency */
            publicDependency?: (number[]|null);

            /** FileDescriptorProto weakDependency */
            weakDependency?: (number[]|null);

            /** FileDescriptorProto messageType */
            messageType?: (google.protobuf.IDescriptorProto[]|null);

            /** FileDescriptorProto enumType */
            enumType?: (google.protobuf.IEnumDescriptorProto[]|null);

            /** FileDescriptorProto service */
            service?: (google.protobuf.IServiceDescriptorProto[]|null);

            /** FileDescriptorProto extension */
            extension?: (google.protobuf.IFieldDescriptorProto[]|null);

            /** FileDescriptorProto options */
            options?: (google.protobuf.IFileOptions|null);

            /** FileDescriptorProto sourceCodeInfo */
            sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);

            /** FileDescriptorProto syntax */
            syntax?: (string|null);

            /** FileDescriptorProto edition */
            edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
        }

        /** Represents a FileDescriptorProto. */
        class FileDescriptorProto implements IFileDescriptorProto {

            /**
             * Constructs a new FileDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFileDescriptorProto);

            /** FileDescriptorProto name. */
            public name: string;

            /** FileDescriptorProto package. */
            public package: string;

            /** FileDescriptorProto dependency. */
            public dependency: string[];

            /** FileDescriptorProto publicDependency. */
            public publicDependency: number[];

            /** FileDescriptorProto weakDependency. */
            public weakDependency: number[];

            /** FileDescriptorProto messageType. */
            public messageType: google.protobuf.IDescriptorProto[];

            /** FileDescriptorProto enumType. */
            public enumType: google.protobuf.IEnumDescriptorProto[];

            /** FileDescriptorProto service. */
            public service: google.protobuf.IServiceDescriptorProto[];

            /** FileDescriptorProto extension. */
            public extension: google.protobuf.IFieldDescriptorProto[];

            /** FileDescriptorProto options. */
            public options?: (google.protobuf.IFileOptions|null);

            /** FileDescriptorProto sourceCodeInfo. */
            public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);

            /** FileDescriptorProto syntax. */
            public syntax: string;

            /** FileDescriptorProto edition. */
            public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

            /**
             * Creates a new FileDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FileDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto;

            /**
             * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages.
             * @param message FileDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages.
             * @param message FileDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FileDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FileDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto;

            /**
             * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FileDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto;

            /**
             * Verifies a FileDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FileDescriptorProto
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto;

            /**
             * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified.
             * @param message FileDescriptorProto
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FileDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FileDescriptorProto
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DescriptorProto. */
        interface IDescriptorProto {

            /** DescriptorProto name */
            name?: (string|null);

            /** DescriptorProto field */
            field?: (google.protobuf.IFieldDescriptorProto[]|null);

            /** DescriptorProto extension */
            extension?: (google.protobuf.IFieldDescriptorProto[]|null);

            /** DescriptorProto nestedType */
            nestedType?: (google.protobuf.IDescriptorProto[]|null);

            /** DescriptorProto enumType */
            enumType?: (google.protobuf.IEnumDescriptorProto[]|null);

            /** DescriptorProto extensionRange */
            extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null);

            /** DescriptorProto oneofDecl */
            oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null);

            /** DescriptorProto options */
            options?: (google.protobuf.IMessageOptions|null);

            /** DescriptorProto reservedRange */
            reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null);

            /** DescriptorProto reservedName */
            reservedName?: (string[]|null);
        }

        /** Represents a DescriptorProto. */
        class DescriptorProto implements IDescriptorProto {

            /**
             * Constructs a new DescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IDescriptorProto);

            /** DescriptorProto name. */
            public name: string;

            /** DescriptorProto field. */
            public field: google.protobuf.IFieldDescriptorProto[];

            /** DescriptorProto extension. */
            public extension: google.protobuf.IFieldDescriptorProto[];

            /** DescriptorProto nestedType. */
            public nestedType: google.protobuf.IDescriptorProto[];

            /** DescriptorProto enumType. */
            public enumType: google.protobuf.IEnumDescriptorProto[];

            /** DescriptorProto extensionRange. */
            public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[];

            /** DescriptorProto oneofDecl. */
            public oneofDecl: google.protobuf.IOneofDescriptorProto[];

            /** DescriptorProto options. */
            public options?: (google.protobuf.IMessageOptions|null);

            /** DescriptorProto reservedRange. */
            public reservedRange: google.protobuf.DescriptorProto.IReservedRange[];

            /** DescriptorProto reservedName. */
            public reservedName: string[];

            /**
             * Creates a new DescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DescriptorProto instance
             */
            public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto;

            /**
             * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages.
             * @param message DescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages.
             * @param message DescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto;

            /**
             * Decodes a DescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto;

            /**
             * Verifies a DescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DescriptorProto
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto;

            /**
             * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified.
             * @param message DescriptorProto
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DescriptorProto
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace DescriptorProto {

            /** Properties of an ExtensionRange. */
            interface IExtensionRange {

                /** ExtensionRange start */
                start?: (number|null);

                /** ExtensionRange end */
                end?: (number|null);

                /** ExtensionRange options */
                options?: (google.protobuf.IExtensionRangeOptions|null);
            }

            /** Represents an ExtensionRange. */
            class ExtensionRange implements IExtensionRange {

                /**
                 * Constructs a new ExtensionRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange);

                /** ExtensionRange start. */
                public start: number;

                /** ExtensionRange end. */
                public end: number;

                /** ExtensionRange options. */
                public options?: (google.protobuf.IExtensionRangeOptions|null);

                /**
                 * Creates a new ExtensionRange instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ExtensionRange instance
                 */
                public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange;

                /**
                 * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages.
                 * @param message ExtensionRange message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages.
                 * @param message ExtensionRange message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an ExtensionRange message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ExtensionRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange;

                /**
                 * Decodes an ExtensionRange message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ExtensionRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange;

                /**
                 * Verifies an ExtensionRange message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ExtensionRange
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange;

                /**
                 * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified.
                 * @param message ExtensionRange
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ExtensionRange to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ExtensionRange
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ReservedRange. */
            interface IReservedRange {

                /** ReservedRange start */
                start?: (number|null);

                /** ReservedRange end */
                end?: (number|null);
            }

            /** Represents a ReservedRange. */
            class ReservedRange implements IReservedRange {

                /**
                 * Constructs a new ReservedRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.DescriptorProto.IReservedRange);

                /** ReservedRange start. */
                public start: number;

                /** ReservedRange end. */
                public end: number;

                /**
                 * Creates a new ReservedRange instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ReservedRange instance
                 */
                public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange;

                /**
                 * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages.
                 * @param message ReservedRange message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages.
                 * @param message ReservedRange message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ReservedRange message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ReservedRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange;

                /**
                 * Decodes a ReservedRange message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ReservedRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange;

                /**
                 * Verifies a ReservedRange message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ReservedRange
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange;

                /**
                 * Creates a plain object from a ReservedRange message. Also converts values to other types if specified.
                 * @param message ReservedRange
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ReservedRange to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ReservedRange
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of an ExtensionRangeOptions. */
        interface IExtensionRangeOptions {

            /** ExtensionRangeOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** ExtensionRangeOptions declaration */
            declaration?: (google.protobuf.ExtensionRangeOptions.IDeclaration[]|null);

            /** ExtensionRangeOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** ExtensionRangeOptions verification */
            verification?: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState|null);
        }

        /** Represents an ExtensionRangeOptions. */
        class ExtensionRangeOptions implements IExtensionRangeOptions {

            /**
             * Constructs a new ExtensionRangeOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IExtensionRangeOptions);

            /** ExtensionRangeOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /** ExtensionRangeOptions declaration. */
            public declaration: google.protobuf.ExtensionRangeOptions.IDeclaration[];

            /** ExtensionRangeOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** ExtensionRangeOptions verification. */
            public verification: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState);

            /**
             * Creates a new ExtensionRangeOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ExtensionRangeOptions instance
             */
            public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions;

            /**
             * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages.
             * @param message ExtensionRangeOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages.
             * @param message ExtensionRangeOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an ExtensionRangeOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ExtensionRangeOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions;

            /**
             * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ExtensionRangeOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions;

            /**
             * Verifies an ExtensionRangeOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ExtensionRangeOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions;

            /**
             * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified.
             * @param message ExtensionRangeOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ExtensionRangeOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ExtensionRangeOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace ExtensionRangeOptions {

            /** Properties of a Declaration. */
            interface IDeclaration {

                /** Declaration number */
                number?: (number|null);

                /** Declaration fullName */
                fullName?: (string|null);

                /** Declaration type */
                type?: (string|null);

                /** Declaration reserved */
                reserved?: (boolean|null);

                /** Declaration repeated */
                repeated?: (boolean|null);
            }

            /** Represents a Declaration. */
            class Declaration implements IDeclaration {

                /**
                 * Constructs a new Declaration.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration);

                /** Declaration number. */
                public number: number;

                /** Declaration fullName. */
                public fullName: string;

                /** Declaration type. */
                public type: string;

                /** Declaration reserved. */
                public reserved: boolean;

                /** Declaration repeated. */
                public repeated: boolean;

                /**
                 * Creates a new Declaration instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Declaration instance
                 */
                public static create(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration): google.protobuf.ExtensionRangeOptions.Declaration;

                /**
                 * Encodes the specified Declaration message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages.
                 * @param message Declaration message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.ExtensionRangeOptions.IDeclaration, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Declaration message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages.
                 * @param message Declaration message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.ExtensionRangeOptions.IDeclaration, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Declaration message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Declaration
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions.Declaration;

                /**
                 * Decodes a Declaration message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Declaration
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions.Declaration;

                /**
                 * Verifies a Declaration message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Declaration message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Declaration
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions.Declaration;

                /**
                 * Creates a plain object from a Declaration message. Also converts values to other types if specified.
                 * @param message Declaration
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.ExtensionRangeOptions.Declaration, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Declaration to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Declaration
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** VerificationState enum. */
            enum VerificationState {
                DECLARATION = 0,
                UNVERIFIED = 1
            }
        }

        /** Properties of a FieldDescriptorProto. */
        interface IFieldDescriptorProto {

            /** FieldDescriptorProto name */
            name?: (string|null);

            /** FieldDescriptorProto number */
            number?: (number|null);

            /** FieldDescriptorProto label */
            label?: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label|null);

            /** FieldDescriptorProto type */
            type?: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type|null);

            /** FieldDescriptorProto typeName */
            typeName?: (string|null);

            /** FieldDescriptorProto extendee */
            extendee?: (string|null);

            /** FieldDescriptorProto defaultValue */
            defaultValue?: (string|null);

            /** FieldDescriptorProto oneofIndex */
            oneofIndex?: (number|null);

            /** FieldDescriptorProto jsonName */
            jsonName?: (string|null);

            /** FieldDescriptorProto options */
            options?: (google.protobuf.IFieldOptions|null);

            /** FieldDescriptorProto proto3Optional */
            proto3Optional?: (boolean|null);
        }

        /** Represents a FieldDescriptorProto. */
        class FieldDescriptorProto implements IFieldDescriptorProto {

            /**
             * Constructs a new FieldDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFieldDescriptorProto);

            /** FieldDescriptorProto name. */
            public name: string;

            /** FieldDescriptorProto number. */
            public number: number;

            /** FieldDescriptorProto label. */
            public label: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label);

            /** FieldDescriptorProto type. */
            public type: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type);

            /** FieldDescriptorProto typeName. */
            public typeName: string;

            /** FieldDescriptorProto extendee. */
            public extendee: string;

            /** FieldDescriptorProto defaultValue. */
            public defaultValue: string;

            /** FieldDescriptorProto oneofIndex. */
            public oneofIndex: number;

            /** FieldDescriptorProto jsonName. */
            public jsonName: string;

            /** FieldDescriptorProto options. */
            public options?: (google.protobuf.IFieldOptions|null);

            /** FieldDescriptorProto proto3Optional. */
            public proto3Optional: boolean;

            /**
             * Creates a new FieldDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FieldDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto;

            /**
             * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages.
             * @param message FieldDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages.
             * @param message FieldDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FieldDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FieldDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto;

            /**
             * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FieldDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto;

            /**
             * Verifies a FieldDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FieldDescriptorProto
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto;

            /**
             * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified.
             * @param message FieldDescriptorProto
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FieldDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FieldDescriptorProto
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace FieldDescriptorProto {

            /** Type enum. */
            enum Type {
                TYPE_DOUBLE = 1,
                TYPE_FLOAT = 2,
                TYPE_INT64 = 3,
                TYPE_UINT64 = 4,
                TYPE_INT32 = 5,
                TYPE_FIXED64 = 6,
                TYPE_FIXED32 = 7,
                TYPE_BOOL = 8,
                TYPE_STRING = 9,
                TYPE_GROUP = 10,
                TYPE_MESSAGE = 11,
                TYPE_BYTES = 12,
                TYPE_UINT32 = 13,
                TYPE_ENUM = 14,
                TYPE_SFIXED32 = 15,
                TYPE_SFIXED64 = 16,
                TYPE_SINT32 = 17,
                TYPE_SINT64 = 18
            }

            /** Label enum. */
            enum Label {
                LABEL_OPTIONAL = 1,
                LABEL_REPEATED = 3,
                LABEL_REQUIRED = 2
            }
        }

        /** Properties of an OneofDescriptorProto. */
        interface IOneofDescriptorProto {

            /** OneofDescriptorProto name */
            name?: (string|null);

            /** OneofDescriptorProto options */
            options?: (google.protobuf.IOneofOptions|null);
        }

        /** Represents an OneofDescriptorProto. */
        class OneofDescriptorProto implements IOneofDescriptorProto {

            /**
             * Constructs a new OneofDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IOneofDescriptorProto);

            /** OneofDescriptorProto name. */
            public name: string;

            /** OneofDescriptorProto options. */
            public options?: (google.protobuf.IOneofOptions|null);

            /**
             * Creates a new OneofDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns OneofDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto;

            /**
             * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages.
             * @param message OneofDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages.
             * @param message OneofDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an OneofDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns OneofDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto;

            /**
             * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns OneofDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto;

            /**
             * Verifies an OneofDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns OneofDescriptorProto
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto;

            /**
             * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified.
             * @param message OneofDescriptorProto
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this OneofDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for OneofDescriptorProto
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an EnumDescriptorProto. */
        interface IEnumDescriptorProto {

            /** EnumDescriptorProto name */
            name?: (string|null);

            /** EnumDescriptorProto value */
            value?: (google.protobuf.IEnumValueDescriptorProto[]|null);

            /** EnumDescriptorProto options */
            options?: (google.protobuf.IEnumOptions|null);

            /** EnumDescriptorProto reservedRange */
            reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null);

            /** EnumDescriptorProto reservedName */
            reservedName?: (string[]|null);
        }

        /** Represents an EnumDescriptorProto. */
        class EnumDescriptorProto implements IEnumDescriptorProto {

            /**
             * Constructs a new EnumDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEnumDescriptorProto);

            /** EnumDescriptorProto name. */
            public name: string;

            /** EnumDescriptorProto value. */
            public value: google.protobuf.IEnumValueDescriptorProto[];

            /** EnumDescriptorProto options. */
            public options?: (google.protobuf.IEnumOptions|null);

            /** EnumDescriptorProto reservedRange. */
            public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[];

            /** EnumDescriptorProto reservedName. */
            public reservedName: string[];

            /**
             * Creates a new EnumDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns EnumDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto;

            /**
             * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages.
             * @param message EnumDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages.
             * @param message EnumDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an EnumDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns EnumDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto;

            /**
             * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns EnumDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto;

            /**
             * Verifies an EnumDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns EnumDescriptorProto
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto;

            /**
             * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified.
             * @param message EnumDescriptorProto
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this EnumDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for EnumDescriptorProto
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace EnumDescriptorProto {

            /** Properties of an EnumReservedRange. */
            interface IEnumReservedRange {

                /** EnumReservedRange start */
                start?: (number|null);

                /** EnumReservedRange end */
                end?: (number|null);
            }

            /** Represents an EnumReservedRange. */
            class EnumReservedRange implements IEnumReservedRange {

                /**
                 * Constructs a new EnumReservedRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange);

                /** EnumReservedRange start. */
                public start: number;

                /** EnumReservedRange end. */
                public end: number;

                /**
                 * Creates a new EnumReservedRange instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns EnumReservedRange instance
                 */
                public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange;

                /**
                 * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages.
                 * @param message EnumReservedRange message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages.
                 * @param message EnumReservedRange message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an EnumReservedRange message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns EnumReservedRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange;

                /**
                 * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns EnumReservedRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange;

                /**
                 * Verifies an EnumReservedRange message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns EnumReservedRange
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange;

                /**
                 * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified.
                 * @param message EnumReservedRange
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this EnumReservedRange to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for EnumReservedRange
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of an EnumValueDescriptorProto. */
        interface IEnumValueDescriptorProto {

            /** EnumValueDescriptorProto name */
            name?: (string|null);

            /** EnumValueDescriptorProto number */
            number?: (number|null);

            /** EnumValueDescriptorProto options */
            options?: (google.protobuf.IEnumValueOptions|null);
        }

        /** Represents an EnumValueDescriptorProto. */
        class EnumValueDescriptorProto implements IEnumValueDescriptorProto {

            /**
             * Constructs a new EnumValueDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEnumValueDescriptorProto);

            /** EnumValueDescriptorProto name. */
            public name: string;

            /** EnumValueDescriptorProto number. */
            public number: number;

            /** EnumValueDescriptorProto options. */
            public options?: (google.protobuf.IEnumValueOptions|null);

            /**
             * Creates a new EnumValueDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns EnumValueDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto;

            /**
             * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages.
             * @param message EnumValueDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages.
             * @param message EnumValueDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an EnumValueDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns EnumValueDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto;

            /**
             * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns EnumValueDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto;

            /**
             * Verifies an EnumValueDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns EnumValueDescriptorProto
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto;

            /**
             * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified.
             * @param message EnumValueDescriptorProto
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this EnumValueDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for EnumValueDescriptorProto
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ServiceDescriptorProto. */
        interface IServiceDescriptorProto {

            /** ServiceDescriptorProto name */
            name?: (string|null);

            /** ServiceDescriptorProto method */
            method?: (google.protobuf.IMethodDescriptorProto[]|null);

            /** ServiceDescriptorProto options */
            options?: (google.protobuf.IServiceOptions|null);
        }

        /** Represents a ServiceDescriptorProto. */
        class ServiceDescriptorProto implements IServiceDescriptorProto {

            /**
             * Constructs a new ServiceDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IServiceDescriptorProto);

            /** ServiceDescriptorProto name. */
            public name: string;

            /** ServiceDescriptorProto method. */
            public method: google.protobuf.IMethodDescriptorProto[];

            /** ServiceDescriptorProto options. */
            public options?: (google.protobuf.IServiceOptions|null);

            /**
             * Creates a new ServiceDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ServiceDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto;

            /**
             * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages.
             * @param message ServiceDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages.
             * @param message ServiceDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ServiceDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ServiceDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto;

            /**
             * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ServiceDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto;

            /**
             * Verifies a ServiceDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ServiceDescriptorProto
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto;

            /**
             * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified.
             * @param message ServiceDescriptorProto
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ServiceDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ServiceDescriptorProto
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a MethodDescriptorProto. */
        interface IMethodDescriptorProto {

            /** MethodDescriptorProto name */
            name?: (string|null);

            /** MethodDescriptorProto inputType */
            inputType?: (string|null);

            /** MethodDescriptorProto outputType */
            outputType?: (string|null);

            /** MethodDescriptorProto options */
            options?: (google.protobuf.IMethodOptions|null);

            /** MethodDescriptorProto clientStreaming */
            clientStreaming?: (boolean|null);

            /** MethodDescriptorProto serverStreaming */
            serverStreaming?: (boolean|null);
        }

        /** Represents a MethodDescriptorProto. */
        class MethodDescriptorProto implements IMethodDescriptorProto {

            /**
             * Constructs a new MethodDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IMethodDescriptorProto);

            /** MethodDescriptorProto name. */
            public name: string;

            /** MethodDescriptorProto inputType. */
            public inputType: string;

            /** MethodDescriptorProto outputType. */
            public outputType: string;

            /** MethodDescriptorProto options. */
            public options?: (google.protobuf.IMethodOptions|null);

            /** MethodDescriptorProto clientStreaming. */
            public clientStreaming: boolean;

            /** MethodDescriptorProto serverStreaming. */
            public serverStreaming: boolean;

            /**
             * Creates a new MethodDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MethodDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto;

            /**
             * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages.
             * @param message MethodDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages.
             * @param message MethodDescriptorProto message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a MethodDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MethodDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto;

            /**
             * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MethodDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto;

            /**
             * Verifies a MethodDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns MethodDescriptorProto
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto;

            /**
             * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified.
             * @param message MethodDescriptorProto
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MethodDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for MethodDescriptorProto
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a FileOptions. */
        interface IFileOptions {

            /** FileOptions javaPackage */
            javaPackage?: (string|null);

            /** FileOptions javaOuterClassname */
            javaOuterClassname?: (string|null);

            /** FileOptions javaMultipleFiles */
            javaMultipleFiles?: (boolean|null);

            /** FileOptions javaGenerateEqualsAndHash */
            javaGenerateEqualsAndHash?: (boolean|null);

            /** FileOptions javaStringCheckUtf8 */
            javaStringCheckUtf8?: (boolean|null);

            /** FileOptions optimizeFor */
            optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode|null);

            /** FileOptions goPackage */
            goPackage?: (string|null);

            /** FileOptions ccGenericServices */
            ccGenericServices?: (boolean|null);

            /** FileOptions javaGenericServices */
            javaGenericServices?: (boolean|null);

            /** FileOptions pyGenericServices */
            pyGenericServices?: (boolean|null);

            /** FileOptions deprecated */
            deprecated?: (boolean|null);

            /** FileOptions ccEnableArenas */
            ccEnableArenas?: (boolean|null);

            /** FileOptions objcClassPrefix */
            objcClassPrefix?: (string|null);

            /** FileOptions csharpNamespace */
            csharpNamespace?: (string|null);

            /** FileOptions swiftPrefix */
            swiftPrefix?: (string|null);

            /** FileOptions phpClassPrefix */
            phpClassPrefix?: (string|null);

            /** FileOptions phpNamespace */
            phpNamespace?: (string|null);

            /** FileOptions phpMetadataNamespace */
            phpMetadataNamespace?: (string|null);

            /** FileOptions rubyPackage */
            rubyPackage?: (string|null);

            /** FileOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** FileOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** FileOptions .google.api.resourceDefinition */
            ".google.api.resourceDefinition"?: (google.api.IResourceDescriptor[]|null);
        }

        /** Represents a FileOptions. */
        class FileOptions implements IFileOptions {

            /**
             * Constructs a new FileOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFileOptions);

            /** FileOptions javaPackage. */
            public javaPackage: string;

            /** FileOptions javaOuterClassname. */
            public javaOuterClassname: string;

            /** FileOptions javaMultipleFiles. */
            public javaMultipleFiles: boolean;

            /** FileOptions javaGenerateEqualsAndHash. */
            public javaGenerateEqualsAndHash: boolean;

            /** FileOptions javaStringCheckUtf8. */
            public javaStringCheckUtf8: boolean;

            /** FileOptions optimizeFor. */
            public optimizeFor: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode);

            /** FileOptions goPackage. */
            public goPackage: string;

            /** FileOptions ccGenericServices. */
            public ccGenericServices: boolean;

            /** FileOptions javaGenericServices. */
            public javaGenericServices: boolean;

            /** FileOptions pyGenericServices. */
            public pyGenericServices: boolean;

            /** FileOptions deprecated. */
            public deprecated: boolean;

            /** FileOptions ccEnableArenas. */
            public ccEnableArenas: boolean;

            /** FileOptions objcClassPrefix. */
            public objcClassPrefix: string;

            /** FileOptions csharpNamespace. */
            public csharpNamespace: string;

            /** FileOptions swiftPrefix. */
            public swiftPrefix: string;

            /** FileOptions phpClassPrefix. */
            public phpClassPrefix: string;

            /** FileOptions phpNamespace. */
            public phpNamespace: string;

            /** FileOptions phpMetadataNamespace. */
            public phpMetadataNamespace: string;

            /** FileOptions rubyPackage. */
            public rubyPackage: string;

            /** FileOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** FileOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new FileOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FileOptions instance
             */
            public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions;

            /**
             * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages.
             * @param message FileOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages.
             * @param message FileOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FileOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FileOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions;

            /**
             * Decodes a FileOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FileOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions;

            /**
             * Verifies a FileOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FileOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FileOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions;

            /**
             * Creates a plain object from a FileOptions message. Also converts values to other types if specified.
             * @param message FileOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FileOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FileOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace FileOptions {

            /** OptimizeMode enum. */
            enum OptimizeMode {
                SPEED = 1,
                CODE_SIZE = 2,
                LITE_RUNTIME = 3
            }
        }

        /** Properties of a MessageOptions. */
        interface IMessageOptions {

            /** MessageOptions messageSetWireFormat */
            messageSetWireFormat?: (boolean|null);

            /** MessageOptions noStandardDescriptorAccessor */
            noStandardDescriptorAccessor?: (boolean|null);

            /** MessageOptions deprecated */
            deprecated?: (boolean|null);

            /** MessageOptions mapEntry */
            mapEntry?: (boolean|null);

            /** MessageOptions deprecatedLegacyJsonFieldConflicts */
            deprecatedLegacyJsonFieldConflicts?: (boolean|null);

            /** MessageOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** MessageOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** MessageOptions .google.api.resource */
            ".google.api.resource"?: (google.api.IResourceDescriptor|null);
        }

        /** Represents a MessageOptions. */
        class MessageOptions implements IMessageOptions {

            /**
             * Constructs a new MessageOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IMessageOptions);

            /** MessageOptions messageSetWireFormat. */
            public messageSetWireFormat: boolean;

            /** MessageOptions noStandardDescriptorAccessor. */
            public noStandardDescriptorAccessor: boolean;

            /** MessageOptions deprecated. */
            public deprecated: boolean;

            /** MessageOptions mapEntry. */
            public mapEntry: boolean;

            /** MessageOptions deprecatedLegacyJsonFieldConflicts. */
            public deprecatedLegacyJsonFieldConflicts: boolean;

            /** MessageOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** MessageOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new MessageOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MessageOptions instance
             */
            public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions;

            /**
             * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages.
             * @param message MessageOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages.
             * @param message MessageOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a MessageOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MessageOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions;

            /**
             * Decodes a MessageOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MessageOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions;

            /**
             * Verifies a MessageOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns MessageOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions;

            /**
             * Creates a plain object from a MessageOptions message. Also converts values to other types if specified.
             * @param message MessageOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MessageOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for MessageOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a FieldOptions. */
        interface IFieldOptions {

            /** FieldOptions ctype */
            ctype?: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType|null);

            /** FieldOptions packed */
            packed?: (boolean|null);

            /** FieldOptions jstype */
            jstype?: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType|null);

            /** FieldOptions lazy */
            lazy?: (boolean|null);

            /** FieldOptions unverifiedLazy */
            unverifiedLazy?: (boolean|null);

            /** FieldOptions deprecated */
            deprecated?: (boolean|null);

            /** FieldOptions weak */
            weak?: (boolean|null);

            /** FieldOptions debugRedact */
            debugRedact?: (boolean|null);

            /** FieldOptions retention */
            retention?: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention|null);

            /** FieldOptions targets */
            targets?: (google.protobuf.FieldOptions.OptionTargetType[]|null);

            /** FieldOptions editionDefaults */
            editionDefaults?: (google.protobuf.FieldOptions.IEditionDefault[]|null);

            /** FieldOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** FieldOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** FieldOptions .google.api.fieldBehavior */
            ".google.api.fieldBehavior"?: (google.api.FieldBehavior[]|null);

            /** FieldOptions .google.api.resourceReference */
            ".google.api.resourceReference"?: (google.api.IResourceReference|null);
        }

        /** Represents a FieldOptions. */
        class FieldOptions implements IFieldOptions {

            /**
             * Constructs a new FieldOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFieldOptions);

            /** FieldOptions ctype. */
            public ctype: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType);

            /** FieldOptions packed. */
            public packed: boolean;

            /** FieldOptions jstype. */
            public jstype: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType);

            /** FieldOptions lazy. */
            public lazy: boolean;

            /** FieldOptions unverifiedLazy. */
            public unverifiedLazy: boolean;

            /** FieldOptions deprecated. */
            public deprecated: boolean;

            /** FieldOptions weak. */
            public weak: boolean;

            /** FieldOptions debugRedact. */
            public debugRedact: boolean;

            /** FieldOptions retention. */
            public retention: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention);

            /** FieldOptions targets. */
            public targets: google.protobuf.FieldOptions.OptionTargetType[];

            /** FieldOptions editionDefaults. */
            public editionDefaults: google.protobuf.FieldOptions.IEditionDefault[];

            /** FieldOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** FieldOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new FieldOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FieldOptions instance
             */
            public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions;

            /**
             * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages.
             * @param message FieldOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages.
             * @param message FieldOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FieldOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FieldOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions;

            /**
             * Decodes a FieldOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FieldOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions;

            /**
             * Verifies a FieldOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FieldOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions;

            /**
             * Creates a plain object from a FieldOptions message. Also converts values to other types if specified.
             * @param message FieldOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FieldOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FieldOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace FieldOptions {

            /** CType enum. */
            enum CType {
                STRING = 0,
                CORD = 1,
                STRING_PIECE = 2
            }

            /** JSType enum. */
            enum JSType {
                JS_NORMAL = 0,
                JS_STRING = 1,
                JS_NUMBER = 2
            }

            /** OptionRetention enum. */
            enum OptionRetention {
                RETENTION_UNKNOWN = 0,
                RETENTION_RUNTIME = 1,
                RETENTION_SOURCE = 2
            }

            /** OptionTargetType enum. */
            enum OptionTargetType {
                TARGET_TYPE_UNKNOWN = 0,
                TARGET_TYPE_FILE = 1,
                TARGET_TYPE_EXTENSION_RANGE = 2,
                TARGET_TYPE_MESSAGE = 3,
                TARGET_TYPE_FIELD = 4,
                TARGET_TYPE_ONEOF = 5,
                TARGET_TYPE_ENUM = 6,
                TARGET_TYPE_ENUM_ENTRY = 7,
                TARGET_TYPE_SERVICE = 8,
                TARGET_TYPE_METHOD = 9
            }

            /** Properties of an EditionDefault. */
            interface IEditionDefault {

                /** EditionDefault edition */
                edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

                /** EditionDefault value */
                value?: (string|null);
            }

            /** Represents an EditionDefault. */
            class EditionDefault implements IEditionDefault {

                /**
                 * Constructs a new EditionDefault.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.FieldOptions.IEditionDefault);

                /** EditionDefault edition. */
                public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /** EditionDefault value. */
                public value: string;

                /**
                 * Creates a new EditionDefault instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns EditionDefault instance
                 */
                public static create(properties?: google.protobuf.FieldOptions.IEditionDefault): google.protobuf.FieldOptions.EditionDefault;

                /**
                 * Encodes the specified EditionDefault message. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages.
                 * @param message EditionDefault message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.FieldOptions.IEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified EditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages.
                 * @param message EditionDefault message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.FieldOptions.IEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an EditionDefault message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns EditionDefault
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.EditionDefault;

                /**
                 * Decodes an EditionDefault message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns EditionDefault
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.EditionDefault;

                /**
                 * Verifies an EditionDefault message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an EditionDefault message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns EditionDefault
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.EditionDefault;

                /**
                 * Creates a plain object from an EditionDefault message. Also converts values to other types if specified.
                 * @param message EditionDefault
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.FieldOptions.EditionDefault, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this EditionDefault to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for EditionDefault
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of an OneofOptions. */
        interface IOneofOptions {

            /** OneofOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** OneofOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an OneofOptions. */
        class OneofOptions implements IOneofOptions {

            /**
             * Constructs a new OneofOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IOneofOptions);

            /** OneofOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** OneofOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new OneofOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns OneofOptions instance
             */
            public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions;

            /**
             * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages.
             * @param message OneofOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages.
             * @param message OneofOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an OneofOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns OneofOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions;

            /**
             * Decodes an OneofOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns OneofOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions;

            /**
             * Verifies an OneofOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns OneofOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions;

            /**
             * Creates a plain object from an OneofOptions message. Also converts values to other types if specified.
             * @param message OneofOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this OneofOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for OneofOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an EnumOptions. */
        interface IEnumOptions {

            /** EnumOptions allowAlias */
            allowAlias?: (boolean|null);

            /** EnumOptions deprecated */
            deprecated?: (boolean|null);

            /** EnumOptions deprecatedLegacyJsonFieldConflicts */
            deprecatedLegacyJsonFieldConflicts?: (boolean|null);

            /** EnumOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** EnumOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an EnumOptions. */
        class EnumOptions implements IEnumOptions {

            /**
             * Constructs a new EnumOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEnumOptions);

            /** EnumOptions allowAlias. */
            public allowAlias: boolean;

            /** EnumOptions deprecated. */
            public deprecated: boolean;

            /** EnumOptions deprecatedLegacyJsonFieldConflicts. */
            public deprecatedLegacyJsonFieldConflicts: boolean;

            /** EnumOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** EnumOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new EnumOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns EnumOptions instance
             */
            public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions;

            /**
             * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages.
             * @param message EnumOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages.
             * @param message EnumOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an EnumOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns EnumOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions;

            /**
             * Decodes an EnumOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns EnumOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions;

            /**
             * Verifies an EnumOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns EnumOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions;

            /**
             * Creates a plain object from an EnumOptions message. Also converts values to other types if specified.
             * @param message EnumOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this EnumOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for EnumOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an EnumValueOptions. */
        interface IEnumValueOptions {

            /** EnumValueOptions deprecated */
            deprecated?: (boolean|null);

            /** EnumValueOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** EnumValueOptions debugRedact */
            debugRedact?: (boolean|null);

            /** EnumValueOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an EnumValueOptions. */
        class EnumValueOptions implements IEnumValueOptions {

            /**
             * Constructs a new EnumValueOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEnumValueOptions);

            /** EnumValueOptions deprecated. */
            public deprecated: boolean;

            /** EnumValueOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** EnumValueOptions debugRedact. */
            public debugRedact: boolean;

            /** EnumValueOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new EnumValueOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns EnumValueOptions instance
             */
            public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions;

            /**
             * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages.
             * @param message EnumValueOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages.
             * @param message EnumValueOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an EnumValueOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns EnumValueOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions;

            /**
             * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns EnumValueOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions;

            /**
             * Verifies an EnumValueOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns EnumValueOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions;

            /**
             * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified.
             * @param message EnumValueOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this EnumValueOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for EnumValueOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ServiceOptions. */
        interface IServiceOptions {

            /** ServiceOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** ServiceOptions deprecated */
            deprecated?: (boolean|null);

            /** ServiceOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** ServiceOptions .google.api.defaultHost */
            ".google.api.defaultHost"?: (string|null);

            /** ServiceOptions .google.api.oauthScopes */
            ".google.api.oauthScopes"?: (string|null);
        }

        /** Represents a ServiceOptions. */
        class ServiceOptions implements IServiceOptions {

            /**
             * Constructs a new ServiceOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IServiceOptions);

            /** ServiceOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** ServiceOptions deprecated. */
            public deprecated: boolean;

            /** ServiceOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new ServiceOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ServiceOptions instance
             */
            public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions;

            /**
             * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages.
             * @param message ServiceOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages.
             * @param message ServiceOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ServiceOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ServiceOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions;

            /**
             * Decodes a ServiceOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ServiceOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions;

            /**
             * Verifies a ServiceOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ServiceOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions;

            /**
             * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified.
             * @param message ServiceOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ServiceOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ServiceOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a MethodOptions. */
        interface IMethodOptions {

            /** MethodOptions deprecated */
            deprecated?: (boolean|null);

            /** MethodOptions idempotencyLevel */
            idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null);

            /** MethodOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** MethodOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** MethodOptions .google.api.http */
            ".google.api.http"?: (google.api.IHttpRule|null);

            /** MethodOptions .google.api.methodSignature */
            ".google.api.methodSignature"?: (string[]|null);

            /** MethodOptions .google.longrunning.operationInfo */
            ".google.longrunning.operationInfo"?: (google.longrunning.IOperationInfo|null);
        }

        /** Represents a MethodOptions. */
        class MethodOptions implements IMethodOptions {

            /**
             * Constructs a new MethodOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IMethodOptions);

            /** MethodOptions deprecated. */
            public deprecated: boolean;

            /** MethodOptions idempotencyLevel. */
            public idempotencyLevel: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel);

            /** MethodOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** MethodOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new MethodOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MethodOptions instance
             */
            public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions;

            /**
             * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages.
             * @param message MethodOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages.
             * @param message MethodOptions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a MethodOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MethodOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions;

            /**
             * Decodes a MethodOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MethodOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions;

            /**
             * Verifies a MethodOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns MethodOptions
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions;

            /**
             * Creates a plain object from a MethodOptions message. Also converts values to other types if specified.
             * @param message MethodOptions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MethodOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for MethodOptions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace MethodOptions {

            /** IdempotencyLevel enum. */
            enum IdempotencyLevel {
                IDEMPOTENCY_UNKNOWN = 0,
                NO_SIDE_EFFECTS = 1,
                IDEMPOTENT = 2
            }
        }

        /** Properties of an UninterpretedOption. */
        interface IUninterpretedOption {

            /** UninterpretedOption name */
            name?: (google.protobuf.UninterpretedOption.INamePart[]|null);

            /** UninterpretedOption identifierValue */
            identifierValue?: (string|null);

            /** UninterpretedOption positiveIntValue */
            positiveIntValue?: (number|Long|string|null);

            /** UninterpretedOption negativeIntValue */
            negativeIntValue?: (number|Long|string|null);

            /** UninterpretedOption doubleValue */
            doubleValue?: (number|null);

            /** UninterpretedOption stringValue */
            stringValue?: (Uint8Array|string|null);

            /** UninterpretedOption aggregateValue */
            aggregateValue?: (string|null);
        }

        /** Represents an UninterpretedOption. */
        class UninterpretedOption implements IUninterpretedOption {

            /**
             * Constructs a new UninterpretedOption.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IUninterpretedOption);

            /** UninterpretedOption name. */
            public name: google.protobuf.UninterpretedOption.INamePart[];

            /** UninterpretedOption identifierValue. */
            public identifierValue: string;

            /** UninterpretedOption positiveIntValue. */
            public positiveIntValue: (number|Long|string);

            /** UninterpretedOption negativeIntValue. */
            public negativeIntValue: (number|Long|string);

            /** UninterpretedOption doubleValue. */
            public doubleValue: number;

            /** UninterpretedOption stringValue. */
            public stringValue: (Uint8Array|string);

            /** UninterpretedOption aggregateValue. */
            public aggregateValue: string;

            /**
             * Creates a new UninterpretedOption instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UninterpretedOption instance
             */
            public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption;

            /**
             * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages.
             * @param message UninterpretedOption message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages.
             * @param message UninterpretedOption message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an UninterpretedOption message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UninterpretedOption
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption;

            /**
             * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UninterpretedOption
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption;

            /**
             * Verifies an UninterpretedOption message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UninterpretedOption
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption;

            /**
             * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified.
             * @param message UninterpretedOption
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UninterpretedOption to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UninterpretedOption
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace UninterpretedOption {

            /** Properties of a NamePart. */
            interface INamePart {

                /** NamePart namePart */
                namePart: string;

                /** NamePart isExtension */
                isExtension: boolean;
            }

            /** Represents a NamePart. */
            class NamePart implements INamePart {

                /**
                 * Constructs a new NamePart.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.UninterpretedOption.INamePart);

                /** NamePart namePart. */
                public namePart: string;

                /** NamePart isExtension. */
                public isExtension: boolean;

                /**
                 * Creates a new NamePart instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns NamePart instance
                 */
                public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart;

                /**
                 * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
                 * @param message NamePart message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
                 * @param message NamePart message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a NamePart message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns NamePart
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart;

                /**
                 * Decodes a NamePart message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns NamePart
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart;

                /**
                 * Verifies a NamePart message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a NamePart message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns NamePart
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart;

                /**
                 * Creates a plain object from a NamePart message. Also converts values to other types if specified.
                 * @param message NamePart
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this NamePart to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for NamePart
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a FeatureSet. */
        interface IFeatureSet {

            /** FeatureSet fieldPresence */
            fieldPresence?: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence|null);

            /** FeatureSet enumType */
            enumType?: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType|null);

            /** FeatureSet repeatedFieldEncoding */
            repeatedFieldEncoding?: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding|null);

            /** FeatureSet utf8Validation */
            utf8Validation?: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation|null);

            /** FeatureSet messageEncoding */
            messageEncoding?: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding|null);

            /** FeatureSet jsonFormat */
            jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);
        }

        /** Represents a FeatureSet. */
        class FeatureSet implements IFeatureSet {

            /**
             * Constructs a new FeatureSet.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFeatureSet);

            /** FeatureSet fieldPresence. */
            public fieldPresence: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence);

            /** FeatureSet enumType. */
            public enumType: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType);

            /** FeatureSet repeatedFieldEncoding. */
            public repeatedFieldEncoding: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding);

            /** FeatureSet utf8Validation. */
            public utf8Validation: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation);

            /** FeatureSet messageEncoding. */
            public messageEncoding: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding);

            /** FeatureSet jsonFormat. */
            public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);

            /**
             * Creates a new FeatureSet instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FeatureSet instance
             */
            public static create(properties?: google.protobuf.IFeatureSet): google.protobuf.FeatureSet;

            /**
             * Encodes the specified FeatureSet message. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages.
             * @param message FeatureSet message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFeatureSet, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FeatureSet message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages.
             * @param message FeatureSet message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFeatureSet, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FeatureSet message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FeatureSet
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet;

            /**
             * Decodes a FeatureSet message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FeatureSet
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet;

            /**
             * Verifies a FeatureSet message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FeatureSet message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FeatureSet
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet;

            /**
             * Creates a plain object from a FeatureSet message. Also converts values to other types if specified.
             * @param message FeatureSet
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FeatureSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FeatureSet to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FeatureSet
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace FeatureSet {

            /** FieldPresence enum. */
            enum FieldPresence {
                FIELD_PRESENCE_UNKNOWN = 0,
                EXPLICIT = 1,
                IMPLICIT = 2,
                LEGACY_REQUIRED = 3
            }

            /** EnumType enum. */
            enum EnumType {
                ENUM_TYPE_UNKNOWN = 0,
                OPEN = 1,
                CLOSED = 2
            }

            /** RepeatedFieldEncoding enum. */
            enum RepeatedFieldEncoding {
                REPEATED_FIELD_ENCODING_UNKNOWN = 0,
                PACKED = 1,
                EXPANDED = 2
            }

            /** Utf8Validation enum. */
            enum Utf8Validation {
                UTF8_VALIDATION_UNKNOWN = 0,
                VERIFY = 2,
                NONE = 3
            }

            /** MessageEncoding enum. */
            enum MessageEncoding {
                MESSAGE_ENCODING_UNKNOWN = 0,
                LENGTH_PREFIXED = 1,
                DELIMITED = 2
            }

            /** JsonFormat enum. */
            enum JsonFormat {
                JSON_FORMAT_UNKNOWN = 0,
                ALLOW = 1,
                LEGACY_BEST_EFFORT = 2
            }
        }

        /** Properties of a FeatureSetDefaults. */
        interface IFeatureSetDefaults {

            /** FeatureSetDefaults defaults */
            defaults?: (google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[]|null);

            /** FeatureSetDefaults minimumEdition */
            minimumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

            /** FeatureSetDefaults maximumEdition */
            maximumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
        }

        /** Represents a FeatureSetDefaults. */
        class FeatureSetDefaults implements IFeatureSetDefaults {

            /**
             * Constructs a new FeatureSetDefaults.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFeatureSetDefaults);

            /** FeatureSetDefaults defaults. */
            public defaults: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[];

            /** FeatureSetDefaults minimumEdition. */
            public minimumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

            /** FeatureSetDefaults maximumEdition. */
            public maximumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

            /**
             * Creates a new FeatureSetDefaults instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FeatureSetDefaults instance
             */
            public static create(properties?: google.protobuf.IFeatureSetDefaults): google.protobuf.FeatureSetDefaults;

            /**
             * Encodes the specified FeatureSetDefaults message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages.
             * @param message FeatureSetDefaults message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFeatureSetDefaults, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FeatureSetDefaults message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages.
             * @param message FeatureSetDefaults message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFeatureSetDefaults, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FeatureSetDefaults message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FeatureSetDefaults
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults;

            /**
             * Decodes a FeatureSetDefaults message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FeatureSetDefaults
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults;

            /**
             * Verifies a FeatureSetDefaults message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FeatureSetDefaults message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FeatureSetDefaults
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSetDefaults;

            /**
             * Creates a plain object from a FeatureSetDefaults message. Also converts values to other types if specified.
             * @param message FeatureSetDefaults
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FeatureSetDefaults, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FeatureSetDefaults to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FeatureSetDefaults
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace FeatureSetDefaults {

            /** Properties of a FeatureSetEditionDefault. */
            interface IFeatureSetEditionDefault {

                /** FeatureSetEditionDefault edition */
                edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

                /** FeatureSetEditionDefault features */
                features?: (google.protobuf.IFeatureSet|null);
            }

            /** Represents a FeatureSetEditionDefault. */
            class FeatureSetEditionDefault implements IFeatureSetEditionDefault {

                /**
                 * Constructs a new FeatureSetEditionDefault.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault);

                /** FeatureSetEditionDefault edition. */
                public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /** FeatureSetEditionDefault features. */
                public features?: (google.protobuf.IFeatureSet|null);

                /**
                 * Creates a new FeatureSetEditionDefault instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns FeatureSetEditionDefault instance
                 */
                public static create(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;

                /**
                 * Encodes the specified FeatureSetEditionDefault message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages.
                 * @param message FeatureSetEditionDefault message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified FeatureSetEditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages.
                 * @param message FeatureSetEditionDefault message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a FeatureSetEditionDefault message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns FeatureSetEditionDefault
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;

                /**
                 * Decodes a FeatureSetEditionDefault message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns FeatureSetEditionDefault
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;

                /**
                 * Verifies a FeatureSetEditionDefault message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a FeatureSetEditionDefault message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns FeatureSetEditionDefault
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;

                /**
                 * Creates a plain object from a FeatureSetEditionDefault message. Also converts values to other types if specified.
                 * @param message FeatureSetEditionDefault
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this FeatureSetEditionDefault to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for FeatureSetEditionDefault
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a SourceCodeInfo. */
        interface ISourceCodeInfo {

            /** SourceCodeInfo location */
            location?: (google.protobuf.SourceCodeInfo.ILocation[]|null);
        }

        /** Represents a SourceCodeInfo. */
        class SourceCodeInfo implements ISourceCodeInfo {

            /**
             * Constructs a new SourceCodeInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.ISourceCodeInfo);

            /** SourceCodeInfo location. */
            public location: google.protobuf.SourceCodeInfo.ILocation[];

            /**
             * Creates a new SourceCodeInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns SourceCodeInfo instance
             */
            public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo;

            /**
             * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages.
             * @param message SourceCodeInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages.
             * @param message SourceCodeInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a SourceCodeInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns SourceCodeInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo;

            /**
             * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns SourceCodeInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo;

            /**
             * Verifies a SourceCodeInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns SourceCodeInfo
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo;

            /**
             * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified.
             * @param message SourceCodeInfo
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this SourceCodeInfo to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for SourceCodeInfo
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace SourceCodeInfo {

            /** Properties of a Location. */
            interface ILocation {

                /** Location path */
                path?: (number[]|null);

                /** Location span */
                span?: (number[]|null);

                /** Location leadingComments */
                leadingComments?: (string|null);

                /** Location trailingComments */
                trailingComments?: (string|null);

                /** Location leadingDetachedComments */
                leadingDetachedComments?: (string[]|null);
            }

            /** Represents a Location. */
            class Location implements ILocation {

                /**
                 * Constructs a new Location.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.SourceCodeInfo.ILocation);

                /** Location path. */
                public path: number[];

                /** Location span. */
                public span: number[];

                /** Location leadingComments. */
                public leadingComments: string;

                /** Location trailingComments. */
                public trailingComments: string;

                /** Location leadingDetachedComments. */
                public leadingDetachedComments: string[];

                /**
                 * Creates a new Location instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Location instance
                 */
                public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location;

                /**
                 * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages.
                 * @param message Location message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages.
                 * @param message Location message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Location message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Location
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location;

                /**
                 * Decodes a Location message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Location
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location;

                /**
                 * Verifies a Location message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Location message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Location
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location;

                /**
                 * Creates a plain object from a Location message. Also converts values to other types if specified.
                 * @param message Location
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Location to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Location
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a GeneratedCodeInfo. */
        interface IGeneratedCodeInfo {

            /** GeneratedCodeInfo annotation */
            annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null);
        }

        /** Represents a GeneratedCodeInfo. */
        class GeneratedCodeInfo implements IGeneratedCodeInfo {

            /**
             * Constructs a new GeneratedCodeInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IGeneratedCodeInfo);

            /** GeneratedCodeInfo annotation. */
            public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[];

            /**
             * Creates a new GeneratedCodeInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GeneratedCodeInfo instance
             */
            public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo;

            /**
             * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages.
             * @param message GeneratedCodeInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages.
             * @param message GeneratedCodeInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GeneratedCodeInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GeneratedCodeInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo;

            /**
             * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GeneratedCodeInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo;

            /**
             * Verifies a GeneratedCodeInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GeneratedCodeInfo
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo;

            /**
             * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified.
             * @param message GeneratedCodeInfo
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GeneratedCodeInfo to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GeneratedCodeInfo
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace GeneratedCodeInfo {

            /** Properties of an Annotation. */
            interface IAnnotation {

                /** Annotation path */
                path?: (number[]|null);

                /** Annotation sourceFile */
                sourceFile?: (string|null);

                /** Annotation begin */
                begin?: (number|null);

                /** Annotation end */
                end?: (number|null);

                /** Annotation semantic */
                semantic?: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic|null);
            }

            /** Represents an Annotation. */
            class Annotation implements IAnnotation {

                /**
                 * Constructs a new Annotation.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation);

                /** Annotation path. */
                public path: number[];

                /** Annotation sourceFile. */
                public sourceFile: string;

                /** Annotation begin. */
                public begin: number;

                /** Annotation end. */
                public end: number;

                /** Annotation semantic. */
                public semantic: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic);

                /**
                 * Creates a new Annotation instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Annotation instance
                 */
                public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation;

                /**
                 * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages.
                 * @param message Annotation message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages.
                 * @param message Annotation message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an Annotation message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Annotation
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation;

                /**
                 * Decodes an Annotation message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Annotation
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation;

                /**
                 * Verifies an Annotation message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an Annotation message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Annotation
                 */
                public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation;

                /**
                 * Creates a plain object from an Annotation message. Also converts values to other types if specified.
                 * @param message Annotation
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Annotation to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Annotation
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace Annotation {

                /** Semantic enum. */
                enum Semantic {
                    NONE = 0,
                    SET = 1,
                    ALIAS = 2
                }
            }
        }

        /** Properties of a FieldMask. */
        interface IFieldMask {

            /** FieldMask paths */
            paths?: (string[]|null);
        }

        /** Represents a FieldMask. */
        class FieldMask implements IFieldMask {

            /**
             * Constructs a new FieldMask.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFieldMask);

            /** FieldMask paths. */
            public paths: string[];

            /**
             * Creates a new FieldMask instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FieldMask instance
             */
            public static create(properties?: google.protobuf.IFieldMask): google.protobuf.FieldMask;

            /**
             * Encodes the specified FieldMask message. Does not implicitly {@link google.protobuf.FieldMask.verify|verify} messages.
             * @param message FieldMask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFieldMask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FieldMask message, length delimited. Does not implicitly {@link google.protobuf.FieldMask.verify|verify} messages.
             * @param message FieldMask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFieldMask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FieldMask message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FieldMask
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldMask;

            /**
             * Decodes a FieldMask message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FieldMask
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldMask;

            /**
             * Verifies a FieldMask message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FieldMask message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FieldMask
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FieldMask;

            /**
             * Creates a plain object from a FieldMask message. Also converts values to other types if specified.
             * @param message FieldMask
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FieldMask, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FieldMask to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FieldMask
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Timestamp. */
        interface ITimestamp {

            /** Timestamp seconds */
            seconds?: (number|Long|string|null);

            /** Timestamp nanos */
            nanos?: (number|null);
        }

        /** Represents a Timestamp. */
        class Timestamp implements ITimestamp {

            /**
             * Constructs a new Timestamp.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.ITimestamp);

            /** Timestamp seconds. */
            public seconds: (number|Long|string);

            /** Timestamp nanos. */
            public nanos: number;

            /**
             * Creates a new Timestamp instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Timestamp instance
             */
            public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp;

            /**
             * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.
             * @param message Timestamp message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.
             * @param message Timestamp message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Timestamp message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Timestamp
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp;

            /**
             * Decodes a Timestamp message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Timestamp
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp;

            /**
             * Verifies a Timestamp message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Timestamp message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Timestamp
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp;

            /**
             * Creates a plain object from a Timestamp message. Also converts values to other types if specified.
             * @param message Timestamp
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Timestamp to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Timestamp
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an Any. */
        interface IAny {

            /** Any type_url */
            type_url?: (string|null);

            /** Any value */
            value?: (Uint8Array|string|null);
        }

        /** Represents an Any. */
        class Any implements IAny {

            /**
             * Constructs a new Any.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IAny);

            /** Any type_url. */
            public type_url: string;

            /** Any value. */
            public value: (Uint8Array|string);

            /**
             * Creates a new Any instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Any instance
             */
            public static create(properties?: google.protobuf.IAny): google.protobuf.Any;

            /**
             * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages.
             * @param message Any message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages.
             * @param message Any message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Any message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Any
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Any;

            /**
             * Decodes an Any message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Any
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Any;

            /**
             * Verifies an Any message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Any message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Any
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Any;

            /**
             * Creates a plain object from an Any message. Also converts values to other types if specified.
             * @param message Any
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Any, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Any to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Any
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DoubleValue. */
        interface IDoubleValue {

            /** DoubleValue value */
            value?: (number|null);
        }

        /** Represents a DoubleValue. */
        class DoubleValue implements IDoubleValue {

            /**
             * Constructs a new DoubleValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IDoubleValue);

            /** DoubleValue value. */
            public value: number;

            /**
             * Creates a new DoubleValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DoubleValue instance
             */
            public static create(properties?: google.protobuf.IDoubleValue): google.protobuf.DoubleValue;

            /**
             * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages.
             * @param message DoubleValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages.
             * @param message DoubleValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DoubleValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DoubleValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DoubleValue;

            /**
             * Decodes a DoubleValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DoubleValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DoubleValue;

            /**
             * Verifies a DoubleValue message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DoubleValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.DoubleValue;

            /**
             * Creates a plain object from a DoubleValue message. Also converts values to other types if specified.
             * @param message DoubleValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.DoubleValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DoubleValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DoubleValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a FloatValue. */
        interface IFloatValue {

            /** FloatValue value */
            value?: (number|null);
        }

        /** Represents a FloatValue. */
        class FloatValue implements IFloatValue {

            /**
             * Constructs a new FloatValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFloatValue);

            /** FloatValue value. */
            public value: number;

            /**
             * Creates a new FloatValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FloatValue instance
             */
            public static create(properties?: google.protobuf.IFloatValue): google.protobuf.FloatValue;

            /**
             * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages.
             * @param message FloatValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages.
             * @param message FloatValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FloatValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FloatValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FloatValue;

            /**
             * Decodes a FloatValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FloatValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FloatValue;

            /**
             * Verifies a FloatValue message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FloatValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FloatValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FloatValue;

            /**
             * Creates a plain object from a FloatValue message. Also converts values to other types if specified.
             * @param message FloatValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FloatValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FloatValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FloatValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an Int64Value. */
        interface IInt64Value {

            /** Int64Value value */
            value?: (number|Long|string|null);
        }

        /** Represents an Int64Value. */
        class Int64Value implements IInt64Value {

            /**
             * Constructs a new Int64Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IInt64Value);

            /** Int64Value value. */
            public value: (number|Long|string);

            /**
             * Creates a new Int64Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Int64Value instance
             */
            public static create(properties?: google.protobuf.IInt64Value): google.protobuf.Int64Value;

            /**
             * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages.
             * @param message Int64Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages.
             * @param message Int64Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Int64Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Int64Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int64Value;

            /**
             * Decodes an Int64Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Int64Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int64Value;

            /**
             * Verifies an Int64Value message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Int64Value message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Int64Value
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Int64Value;

            /**
             * Creates a plain object from an Int64Value message. Also converts values to other types if specified.
             * @param message Int64Value
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Int64Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Int64Value to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Int64Value
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a UInt64Value. */
        interface IUInt64Value {

            /** UInt64Value value */
            value?: (number|Long|string|null);
        }

        /** Represents a UInt64Value. */
        class UInt64Value implements IUInt64Value {

            /**
             * Constructs a new UInt64Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IUInt64Value);

            /** UInt64Value value. */
            public value: (number|Long|string);

            /**
             * Creates a new UInt64Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UInt64Value instance
             */
            public static create(properties?: google.protobuf.IUInt64Value): google.protobuf.UInt64Value;

            /**
             * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages.
             * @param message UInt64Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages.
             * @param message UInt64Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a UInt64Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UInt64Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt64Value;

            /**
             * Decodes a UInt64Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UInt64Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt64Value;

            /**
             * Verifies a UInt64Value message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UInt64Value
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.UInt64Value;

            /**
             * Creates a plain object from a UInt64Value message. Also converts values to other types if specified.
             * @param message UInt64Value
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.UInt64Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UInt64Value to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UInt64Value
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an Int32Value. */
        interface IInt32Value {

            /** Int32Value value */
            value?: (number|null);
        }

        /** Represents an Int32Value. */
        class Int32Value implements IInt32Value {

            /**
             * Constructs a new Int32Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IInt32Value);

            /** Int32Value value. */
            public value: number;

            /**
             * Creates a new Int32Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Int32Value instance
             */
            public static create(properties?: google.protobuf.IInt32Value): google.protobuf.Int32Value;

            /**
             * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages.
             * @param message Int32Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages.
             * @param message Int32Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Int32Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Int32Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int32Value;

            /**
             * Decodes an Int32Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Int32Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int32Value;

            /**
             * Verifies an Int32Value message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Int32Value message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Int32Value
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Int32Value;

            /**
             * Creates a plain object from an Int32Value message. Also converts values to other types if specified.
             * @param message Int32Value
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Int32Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Int32Value to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Int32Value
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a UInt32Value. */
        interface IUInt32Value {

            /** UInt32Value value */
            value?: (number|null);
        }

        /** Represents a UInt32Value. */
        class UInt32Value implements IUInt32Value {

            /**
             * Constructs a new UInt32Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IUInt32Value);

            /** UInt32Value value. */
            public value: number;

            /**
             * Creates a new UInt32Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UInt32Value instance
             */
            public static create(properties?: google.protobuf.IUInt32Value): google.protobuf.UInt32Value;

            /**
             * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages.
             * @param message UInt32Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages.
             * @param message UInt32Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a UInt32Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UInt32Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt32Value;

            /**
             * Decodes a UInt32Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UInt32Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt32Value;

            /**
             * Verifies a UInt32Value message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UInt32Value
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.UInt32Value;

            /**
             * Creates a plain object from a UInt32Value message. Also converts values to other types if specified.
             * @param message UInt32Value
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.UInt32Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UInt32Value to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UInt32Value
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a BoolValue. */
        interface IBoolValue {

            /** BoolValue value */
            value?: (boolean|null);
        }

        /** Represents a BoolValue. */
        class BoolValue implements IBoolValue {

            /**
             * Constructs a new BoolValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IBoolValue);

            /** BoolValue value. */
            public value: boolean;

            /**
             * Creates a new BoolValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns BoolValue instance
             */
            public static create(properties?: google.protobuf.IBoolValue): google.protobuf.BoolValue;

            /**
             * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages.
             * @param message BoolValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages.
             * @param message BoolValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a BoolValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns BoolValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BoolValue;

            /**
             * Decodes a BoolValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns BoolValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BoolValue;

            /**
             * Verifies a BoolValue message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a BoolValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns BoolValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.BoolValue;

            /**
             * Creates a plain object from a BoolValue message. Also converts values to other types if specified.
             * @param message BoolValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.BoolValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this BoolValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for BoolValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a StringValue. */
        interface IStringValue {

            /** StringValue value */
            value?: (string|null);
        }

        /** Represents a StringValue. */
        class StringValue implements IStringValue {

            /**
             * Constructs a new StringValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IStringValue);

            /** StringValue value. */
            public value: string;

            /**
             * Creates a new StringValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns StringValue instance
             */
            public static create(properties?: google.protobuf.IStringValue): google.protobuf.StringValue;

            /**
             * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages.
             * @param message StringValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages.
             * @param message StringValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a StringValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns StringValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.StringValue;

            /**
             * Decodes a StringValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns StringValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.StringValue;

            /**
             * Verifies a StringValue message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a StringValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns StringValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.StringValue;

            /**
             * Creates a plain object from a StringValue message. Also converts values to other types if specified.
             * @param message StringValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.StringValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this StringValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for StringValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a BytesValue. */
        interface IBytesValue {

            /** BytesValue value */
            value?: (Uint8Array|string|null);
        }

        /** Represents a BytesValue. */
        class BytesValue implements IBytesValue {

            /**
             * Constructs a new BytesValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IBytesValue);

            /** BytesValue value. */
            public value: (Uint8Array|string);

            /**
             * Creates a new BytesValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns BytesValue instance
             */
            public static create(properties?: google.protobuf.IBytesValue): google.protobuf.BytesValue;

            /**
             * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages.
             * @param message BytesValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages.
             * @param message BytesValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a BytesValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns BytesValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BytesValue;

            /**
             * Decodes a BytesValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns BytesValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BytesValue;

            /**
             * Verifies a BytesValue message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a BytesValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns BytesValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.BytesValue;

            /**
             * Creates a plain object from a BytesValue message. Also converts values to other types if specified.
             * @param message BytesValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.BytesValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this BytesValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for BytesValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Duration. */
        interface IDuration {

            /** Duration seconds */
            seconds?: (number|Long|string|null);

            /** Duration nanos */
            nanos?: (number|null);
        }

        /** Represents a Duration. */
        class Duration implements IDuration {

            /**
             * Constructs a new Duration.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IDuration);

            /** Duration seconds. */
            public seconds: (number|Long|string);

            /** Duration nanos. */
            public nanos: number;

            /**
             * Creates a new Duration instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Duration instance
             */
            public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration;

            /**
             * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages.
             * @param message Duration message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages.
             * @param message Duration message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Duration message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Duration
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Duration;

            /**
             * Decodes a Duration message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Duration
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Duration;

            /**
             * Verifies a Duration message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Duration message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Duration
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Duration;

            /**
             * Creates a plain object from a Duration message. Also converts values to other types if specified.
             * @param message Duration
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Duration, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Duration to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Duration
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an Empty. */
        interface IEmpty {
        }

        /** Represents an Empty. */
        class Empty implements IEmpty {

            /**
             * Constructs a new Empty.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEmpty);

            /**
             * Creates a new Empty instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Empty instance
             */
            public static create(properties?: google.protobuf.IEmpty): google.protobuf.Empty;

            /**
             * Encodes the specified Empty message. Does not implicitly {@link google.protobuf.Empty.verify|verify} messages.
             * @param message Empty message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IEmpty, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Empty message, length delimited. Does not implicitly {@link google.protobuf.Empty.verify|verify} messages.
             * @param message Empty message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IEmpty, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Empty message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Empty
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Empty;

            /**
             * Decodes an Empty message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Empty
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Empty;

            /**
             * Verifies an Empty message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Empty message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Empty
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Empty;

            /**
             * Creates a plain object from an Empty message. Also converts values to other types if specified.
             * @param message Empty
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Empty, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Empty to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Empty
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace rpc. */
    namespace rpc {

        /** Properties of a Status. */
        interface IStatus {

            /** Status code */
            code?: (number|null);

            /** Status message */
            message?: (string|null);

            /** Status details */
            details?: (google.protobuf.IAny[]|null);
        }

        /** Represents a Status. */
        class Status implements IStatus {

            /**
             * Constructs a new Status.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IStatus);

            /** Status code. */
            public code: number;

            /** Status message. */
            public message: string;

            /** Status details. */
            public details: google.protobuf.IAny[];

            /**
             * Creates a new Status instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Status instance
             */
            public static create(properties?: google.rpc.IStatus): google.rpc.Status;

            /**
             * Encodes the specified Status message. Does not implicitly {@link google.rpc.Status.verify|verify} messages.
             * @param message Status message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.rpc.IStatus, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Status message, length delimited. Does not implicitly {@link google.rpc.Status.verify|verify} messages.
             * @param message Status message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.rpc.IStatus, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Status message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Status
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.rpc.Status;

            /**
             * Decodes a Status message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Status
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.rpc.Status;

            /**
             * Verifies a Status message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Status message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Status
             */
            public static fromObject(object: { [k: string]: any }): google.rpc.Status;

            /**
             * Creates a plain object from a Status message. Also converts values to other types if specified.
             * @param message Status
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.rpc.Status, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Status to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Status
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace type. */
    namespace type {

        /** Properties of a Color. */
        interface IColor {

            /** Color red */
            red?: (number|null);

            /** Color green */
            green?: (number|null);

            /** Color blue */
            blue?: (number|null);

            /** Color alpha */
            alpha?: (google.protobuf.IFloatValue|null);
        }

        /** Represents a Color. */
        class Color implements IColor {

            /**
             * Constructs a new Color.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IColor);

            /** Color red. */
            public red: number;

            /** Color green. */
            public green: number;

            /** Color blue. */
            public blue: number;

            /** Color alpha. */
            public alpha?: (google.protobuf.IFloatValue|null);

            /**
             * Creates a new Color instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Color instance
             */
            public static create(properties?: google.type.IColor): google.type.Color;

            /**
             * Encodes the specified Color message. Does not implicitly {@link google.type.Color.verify|verify} messages.
             * @param message Color message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IColor, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Color message, length delimited. Does not implicitly {@link google.type.Color.verify|verify} messages.
             * @param message Color message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IColor, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Color message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Color
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Color;

            /**
             * Decodes a Color message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Color
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Color;

            /**
             * Verifies a Color message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Color message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Color
             */
            public static fromObject(object: { [k: string]: any }): google.type.Color;

            /**
             * Creates a plain object from a Color message. Also converts values to other types if specified.
             * @param message Color
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.Color, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Color to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Color
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Date. */
        interface IDate {

            /** Date year */
            year?: (number|null);

            /** Date month */
            month?: (number|null);

            /** Date day */
            day?: (number|null);
        }

        /** Represents a Date. */
        class Date implements IDate {

            /**
             * Constructs a new Date.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IDate);

            /** Date year. */
            public year: number;

            /** Date month. */
            public month: number;

            /** Date day. */
            public day: number;

            /**
             * Creates a new Date instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Date instance
             */
            public static create(properties?: google.type.IDate): google.type.Date;

            /**
             * Encodes the specified Date message. Does not implicitly {@link google.type.Date.verify|verify} messages.
             * @param message Date message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IDate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Date message, length delimited. Does not implicitly {@link google.type.Date.verify|verify} messages.
             * @param message Date message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IDate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Date message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Date
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Date;

            /**
             * Decodes a Date message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Date
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Date;

            /**
             * Verifies a Date message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Date message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Date
             */
            public static fromObject(object: { [k: string]: any }): google.type.Date;

            /**
             * Creates a plain object from a Date message. Also converts values to other types if specified.
             * @param message Date
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.Date, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Date to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Date
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DateTime. */
        interface IDateTime {

            /** DateTime year */
            year?: (number|null);

            /** DateTime month */
            month?: (number|null);

            /** DateTime day */
            day?: (number|null);

            /** DateTime hours */
            hours?: (number|null);

            /** DateTime minutes */
            minutes?: (number|null);

            /** DateTime seconds */
            seconds?: (number|null);

            /** DateTime nanos */
            nanos?: (number|null);

            /** DateTime utcOffset */
            utcOffset?: (google.protobuf.IDuration|null);

            /** DateTime timeZone */
            timeZone?: (google.type.ITimeZone|null);
        }

        /** Represents a DateTime. */
        class DateTime implements IDateTime {

            /**
             * Constructs a new DateTime.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IDateTime);

            /** DateTime year. */
            public year: number;

            /** DateTime month. */
            public month: number;

            /** DateTime day. */
            public day: number;

            /** DateTime hours. */
            public hours: number;

            /** DateTime minutes. */
            public minutes: number;

            /** DateTime seconds. */
            public seconds: number;

            /** DateTime nanos. */
            public nanos: number;

            /** DateTime utcOffset. */
            public utcOffset?: (google.protobuf.IDuration|null);

            /** DateTime timeZone. */
            public timeZone?: (google.type.ITimeZone|null);

            /** DateTime timeOffset. */
            public timeOffset?: ("utcOffset"|"timeZone");

            /**
             * Creates a new DateTime instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DateTime instance
             */
            public static create(properties?: google.type.IDateTime): google.type.DateTime;

            /**
             * Encodes the specified DateTime message. Does not implicitly {@link google.type.DateTime.verify|verify} messages.
             * @param message DateTime message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IDateTime, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DateTime message, length delimited. Does not implicitly {@link google.type.DateTime.verify|verify} messages.
             * @param message DateTime message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IDateTime, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DateTime message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DateTime
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.DateTime;

            /**
             * Decodes a DateTime message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DateTime
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.DateTime;

            /**
             * Verifies a DateTime message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DateTime message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DateTime
             */
            public static fromObject(object: { [k: string]: any }): google.type.DateTime;

            /**
             * Creates a plain object from a DateTime message. Also converts values to other types if specified.
             * @param message DateTime
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.DateTime, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DateTime to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DateTime
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a TimeZone. */
        interface ITimeZone {

            /** TimeZone id */
            id?: (string|null);

            /** TimeZone version */
            version?: (string|null);
        }

        /** Represents a TimeZone. */
        class TimeZone implements ITimeZone {

            /**
             * Constructs a new TimeZone.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.ITimeZone);

            /** TimeZone id. */
            public id: string;

            /** TimeZone version. */
            public version: string;

            /**
             * Creates a new TimeZone instance using the specified properties.
             * @param [properties] Properties to set
             * @returns TimeZone instance
             */
            public static create(properties?: google.type.ITimeZone): google.type.TimeZone;

            /**
             * Encodes the specified TimeZone message. Does not implicitly {@link google.type.TimeZone.verify|verify} messages.
             * @param message TimeZone message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.ITimeZone, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified TimeZone message, length delimited. Does not implicitly {@link google.type.TimeZone.verify|verify} messages.
             * @param message TimeZone message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.ITimeZone, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a TimeZone message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns TimeZone
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.TimeZone;

            /**
             * Decodes a TimeZone message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns TimeZone
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.TimeZone;

            /**
             * Verifies a TimeZone message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a TimeZone message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns TimeZone
             */
            public static fromObject(object: { [k: string]: any }): google.type.TimeZone;

            /**
             * Creates a plain object from a TimeZone message. Also converts values to other types if specified.
             * @param message TimeZone
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.TimeZone, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this TimeZone to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for TimeZone
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Money. */
        interface IMoney {

            /** Money currencyCode */
            currencyCode?: (string|null);

            /** Money units */
            units?: (number|Long|string|null);

            /** Money nanos */
            nanos?: (number|null);
        }

        /** Represents a Money. */
        class Money implements IMoney {

            /**
             * Constructs a new Money.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IMoney);

            /** Money currencyCode. */
            public currencyCode: string;

            /** Money units. */
            public units: (number|Long|string);

            /** Money nanos. */
            public nanos: number;

            /**
             * Creates a new Money instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Money instance
             */
            public static create(properties?: google.type.IMoney): google.type.Money;

            /**
             * Encodes the specified Money message. Does not implicitly {@link google.type.Money.verify|verify} messages.
             * @param message Money message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IMoney, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Money message, length delimited. Does not implicitly {@link google.type.Money.verify|verify} messages.
             * @param message Money message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IMoney, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Money message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Money
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Money;

            /**
             * Decodes a Money message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Money
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Money;

            /**
             * Verifies a Money message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Money message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Money
             */
            public static fromObject(object: { [k: string]: any }): google.type.Money;

            /**
             * Creates a plain object from a Money message. Also converts values to other types if specified.
             * @param message Money
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.Money, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Money to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Money
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a PostalAddress. */
        interface IPostalAddress {

            /** PostalAddress revision */
            revision?: (number|null);

            /** PostalAddress regionCode */
            regionCode?: (string|null);

            /** PostalAddress languageCode */
            languageCode?: (string|null);

            /** PostalAddress postalCode */
            postalCode?: (string|null);

            /** PostalAddress sortingCode */
            sortingCode?: (string|null);

            /** PostalAddress administrativeArea */
            administrativeArea?: (string|null);

            /** PostalAddress locality */
            locality?: (string|null);

            /** PostalAddress sublocality */
            sublocality?: (string|null);

            /** PostalAddress addressLines */
            addressLines?: (string[]|null);

            /** PostalAddress recipients */
            recipients?: (string[]|null);

            /** PostalAddress organization */
            organization?: (string|null);
        }

        /** Represents a PostalAddress. */
        class PostalAddress implements IPostalAddress {

            /**
             * Constructs a new PostalAddress.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IPostalAddress);

            /** PostalAddress revision. */
            public revision: number;

            /** PostalAddress regionCode. */
            public regionCode: string;

            /** PostalAddress languageCode. */
            public languageCode: string;

            /** PostalAddress postalCode. */
            public postalCode: string;

            /** PostalAddress sortingCode. */
            public sortingCode: string;

            /** PostalAddress administrativeArea. */
            public administrativeArea: string;

            /** PostalAddress locality. */
            public locality: string;

            /** PostalAddress sublocality. */
            public sublocality: string;

            /** PostalAddress addressLines. */
            public addressLines: string[];

            /** PostalAddress recipients. */
            public recipients: string[];

            /** PostalAddress organization. */
            public organization: string;

            /**
             * Creates a new PostalAddress instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PostalAddress instance
             */
            public static create(properties?: google.type.IPostalAddress): google.type.PostalAddress;

            /**
             * Encodes the specified PostalAddress message. Does not implicitly {@link google.type.PostalAddress.verify|verify} messages.
             * @param message PostalAddress message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IPostalAddress, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PostalAddress message, length delimited. Does not implicitly {@link google.type.PostalAddress.verify|verify} messages.
             * @param message PostalAddress message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IPostalAddress, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PostalAddress message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PostalAddress
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.PostalAddress;

            /**
             * Decodes a PostalAddress message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PostalAddress
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.PostalAddress;

            /**
             * Verifies a PostalAddress message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a PostalAddress message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PostalAddress
             */
            public static fromObject(object: { [k: string]: any }): google.type.PostalAddress;

            /**
             * Creates a plain object from a PostalAddress message. Also converts values to other types if specified.
             * @param message PostalAddress
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.PostalAddress, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PostalAddress to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PostalAddress
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an Interval. */
        interface IInterval {

            /** Interval startTime */
            startTime?: (google.protobuf.ITimestamp|null);

            /** Interval endTime */
            endTime?: (google.protobuf.ITimestamp|null);
        }

        /** Represents an Interval. */
        class Interval implements IInterval {

            /**
             * Constructs a new Interval.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IInterval);

            /** Interval startTime. */
            public startTime?: (google.protobuf.ITimestamp|null);

            /** Interval endTime. */
            public endTime?: (google.protobuf.ITimestamp|null);

            /**
             * Creates a new Interval instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Interval instance
             */
            public static create(properties?: google.type.IInterval): google.type.Interval;

            /**
             * Encodes the specified Interval message. Does not implicitly {@link google.type.Interval.verify|verify} messages.
             * @param message Interval message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IInterval, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Interval message, length delimited. Does not implicitly {@link google.type.Interval.verify|verify} messages.
             * @param message Interval message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IInterval, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Interval message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Interval
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Interval;

            /**
             * Decodes an Interval message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Interval
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Interval;

            /**
             * Verifies an Interval message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Interval message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Interval
             */
            public static fromObject(object: { [k: string]: any }): google.type.Interval;

            /**
             * Creates a plain object from an Interval message. Also converts values to other types if specified.
             * @param message Interval
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.Interval, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Interval to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Interval
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an Expr. */
        interface IExpr {

            /** Expr expression */
            expression?: (string|null);

            /** Expr title */
            title?: (string|null);

            /** Expr description */
            description?: (string|null);

            /** Expr location */
            location?: (string|null);
        }

        /** Represents an Expr. */
        class Expr implements IExpr {

            /**
             * Constructs a new Expr.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IExpr);

            /** Expr expression. */
            public expression: string;

            /** Expr title. */
            public title: string;

            /** Expr description. */
            public description: string;

            /** Expr location. */
            public location: string;

            /**
             * Creates a new Expr instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Expr instance
             */
            public static create(properties?: google.type.IExpr): google.type.Expr;

            /**
             * Encodes the specified Expr message. Does not implicitly {@link google.type.Expr.verify|verify} messages.
             * @param message Expr message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IExpr, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Expr message, length delimited. Does not implicitly {@link google.type.Expr.verify|verify} messages.
             * @param message Expr message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IExpr, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Expr message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Expr
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Expr;

            /**
             * Decodes an Expr message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Expr
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Expr;

            /**
             * Verifies an Expr message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Expr message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Expr
             */
            public static fromObject(object: { [k: string]: any }): google.type.Expr;

            /**
             * Creates a plain object from an Expr message. Also converts values to other types if specified.
             * @param message Expr
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.Expr, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Expr to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Expr
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace iam. */
    namespace iam {

        /** Namespace v1. */
        namespace v1 {

            /** Properties of a Policy. */
            interface IPolicy {

                /** Policy version */
                version?: (number|null);

                /** Policy bindings */
                bindings?: (google.iam.v1.IBinding[]|null);

                /** Policy auditConfigs */
                auditConfigs?: (google.iam.v1.IAuditConfig[]|null);

                /** Policy etag */
                etag?: (Uint8Array|string|null);
            }

            /** Represents a Policy. */
            class Policy implements IPolicy {

                /**
                 * Constructs a new Policy.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IPolicy);

                /** Policy version. */
                public version: number;

                /** Policy bindings. */
                public bindings: google.iam.v1.IBinding[];

                /** Policy auditConfigs. */
                public auditConfigs: google.iam.v1.IAuditConfig[];

                /** Policy etag. */
                public etag: (Uint8Array|string);

                /**
                 * Creates a new Policy instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Policy instance
                 */
                public static create(properties?: google.iam.v1.IPolicy): google.iam.v1.Policy;

                /**
                 * Encodes the specified Policy message. Does not implicitly {@link google.iam.v1.Policy.verify|verify} messages.
                 * @param message Policy message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Policy message, length delimited. Does not implicitly {@link google.iam.v1.Policy.verify|verify} messages.
                 * @param message Policy message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Policy message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Policy
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.Policy;

                /**
                 * Decodes a Policy message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Policy
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.Policy;

                /**
                 * Verifies a Policy message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Policy message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Policy
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.Policy;

                /**
                 * Creates a plain object from a Policy message. Also converts values to other types if specified.
                 * @param message Policy
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.Policy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Policy to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Policy
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a Binding. */
            interface IBinding {

                /** Binding role */
                role?: (string|null);

                /** Binding members */
                members?: (string[]|null);

                /** Binding condition */
                condition?: (google.type.IExpr|null);
            }

            /** Represents a Binding. */
            class Binding implements IBinding {

                /**
                 * Constructs a new Binding.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IBinding);

                /** Binding role. */
                public role: string;

                /** Binding members. */
                public members: string[];

                /** Binding condition. */
                public condition?: (google.type.IExpr|null);

                /**
                 * Creates a new Binding instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Binding instance
                 */
                public static create(properties?: google.iam.v1.IBinding): google.iam.v1.Binding;

                /**
                 * Encodes the specified Binding message. Does not implicitly {@link google.iam.v1.Binding.verify|verify} messages.
                 * @param message Binding message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IBinding, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Binding message, length delimited. Does not implicitly {@link google.iam.v1.Binding.verify|verify} messages.
                 * @param message Binding message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IBinding, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Binding message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Binding
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.Binding;

                /**
                 * Decodes a Binding message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Binding
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.Binding;

                /**
                 * Verifies a Binding message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Binding message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Binding
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.Binding;

                /**
                 * Creates a plain object from a Binding message. Also converts values to other types if specified.
                 * @param message Binding
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.Binding, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Binding to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Binding
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an AuditConfig. */
            interface IAuditConfig {

                /** AuditConfig service */
                service?: (string|null);

                /** AuditConfig auditLogConfigs */
                auditLogConfigs?: (google.iam.v1.IAuditLogConfig[]|null);
            }

            /** Represents an AuditConfig. */
            class AuditConfig implements IAuditConfig {

                /**
                 * Constructs a new AuditConfig.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IAuditConfig);

                /** AuditConfig service. */
                public service: string;

                /** AuditConfig auditLogConfigs. */
                public auditLogConfigs: google.iam.v1.IAuditLogConfig[];

                /**
                 * Creates a new AuditConfig instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AuditConfig instance
                 */
                public static create(properties?: google.iam.v1.IAuditConfig): google.iam.v1.AuditConfig;

                /**
                 * Encodes the specified AuditConfig message. Does not implicitly {@link google.iam.v1.AuditConfig.verify|verify} messages.
                 * @param message AuditConfig message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IAuditConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AuditConfig message, length delimited. Does not implicitly {@link google.iam.v1.AuditConfig.verify|verify} messages.
                 * @param message AuditConfig message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IAuditConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AuditConfig message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AuditConfig
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditConfig;

                /**
                 * Decodes an AuditConfig message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AuditConfig
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditConfig;

                /**
                 * Verifies an AuditConfig message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AuditConfig message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AuditConfig
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditConfig;

                /**
                 * Creates a plain object from an AuditConfig message. Also converts values to other types if specified.
                 * @param message AuditConfig
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.AuditConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AuditConfig to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AuditConfig
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an AuditLogConfig. */
            interface IAuditLogConfig {

                /** AuditLogConfig logType */
                logType?: (google.iam.v1.AuditLogConfig.LogType|keyof typeof google.iam.v1.AuditLogConfig.LogType|null);

                /** AuditLogConfig exemptedMembers */
                exemptedMembers?: (string[]|null);
            }

            /** Represents an AuditLogConfig. */
            class AuditLogConfig implements IAuditLogConfig {

                /**
                 * Constructs a new AuditLogConfig.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IAuditLogConfig);

                /** AuditLogConfig logType. */
                public logType: (google.iam.v1.AuditLogConfig.LogType|keyof typeof google.iam.v1.AuditLogConfig.LogType);

                /** AuditLogConfig exemptedMembers. */
                public exemptedMembers: string[];

                /**
                 * Creates a new AuditLogConfig instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AuditLogConfig instance
                 */
                public static create(properties?: google.iam.v1.IAuditLogConfig): google.iam.v1.AuditLogConfig;

                /**
                 * Encodes the specified AuditLogConfig message. Does not implicitly {@link google.iam.v1.AuditLogConfig.verify|verify} messages.
                 * @param message AuditLogConfig message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IAuditLogConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AuditLogConfig message, length delimited. Does not implicitly {@link google.iam.v1.AuditLogConfig.verify|verify} messages.
                 * @param message AuditLogConfig message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IAuditLogConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AuditLogConfig message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AuditLogConfig
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditLogConfig;

                /**
                 * Decodes an AuditLogConfig message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AuditLogConfig
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditLogConfig;

                /**
                 * Verifies an AuditLogConfig message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AuditLogConfig message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AuditLogConfig
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditLogConfig;

                /**
                 * Creates a plain object from an AuditLogConfig message. Also converts values to other types if specified.
                 * @param message AuditLogConfig
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.AuditLogConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AuditLogConfig to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AuditLogConfig
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace AuditLogConfig {

                /** LogType enum. */
                enum LogType {
                    LOG_TYPE_UNSPECIFIED = 0,
                    ADMIN_READ = 1,
                    DATA_WRITE = 2,
                    DATA_READ = 3
                }
            }

            /** Properties of a PolicyDelta. */
            interface IPolicyDelta {

                /** PolicyDelta bindingDeltas */
                bindingDeltas?: (google.iam.v1.IBindingDelta[]|null);

                /** PolicyDelta auditConfigDeltas */
                auditConfigDeltas?: (google.iam.v1.IAuditConfigDelta[]|null);
            }

            /** Represents a PolicyDelta. */
            class PolicyDelta implements IPolicyDelta {

                /**
                 * Constructs a new PolicyDelta.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IPolicyDelta);

                /** PolicyDelta bindingDeltas. */
                public bindingDeltas: google.iam.v1.IBindingDelta[];

                /** PolicyDelta auditConfigDeltas. */
                public auditConfigDeltas: google.iam.v1.IAuditConfigDelta[];

                /**
                 * Creates a new PolicyDelta instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PolicyDelta instance
                 */
                public static create(properties?: google.iam.v1.IPolicyDelta): google.iam.v1.PolicyDelta;

                /**
                 * Encodes the specified PolicyDelta message. Does not implicitly {@link google.iam.v1.PolicyDelta.verify|verify} messages.
                 * @param message PolicyDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IPolicyDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PolicyDelta message, length delimited. Does not implicitly {@link google.iam.v1.PolicyDelta.verify|verify} messages.
                 * @param message PolicyDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IPolicyDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PolicyDelta message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PolicyDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.PolicyDelta;

                /**
                 * Decodes a PolicyDelta message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PolicyDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.PolicyDelta;

                /**
                 * Verifies a PolicyDelta message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PolicyDelta message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PolicyDelta
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.PolicyDelta;

                /**
                 * Creates a plain object from a PolicyDelta message. Also converts values to other types if specified.
                 * @param message PolicyDelta
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.PolicyDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PolicyDelta to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PolicyDelta
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a BindingDelta. */
            interface IBindingDelta {

                /** BindingDelta action */
                action?: (google.iam.v1.BindingDelta.Action|keyof typeof google.iam.v1.BindingDelta.Action|null);

                /** BindingDelta role */
                role?: (string|null);

                /** BindingDelta member */
                member?: (string|null);

                /** BindingDelta condition */
                condition?: (google.type.IExpr|null);
            }

            /** Represents a BindingDelta. */
            class BindingDelta implements IBindingDelta {

                /**
                 * Constructs a new BindingDelta.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IBindingDelta);

                /** BindingDelta action. */
                public action: (google.iam.v1.BindingDelta.Action|keyof typeof google.iam.v1.BindingDelta.Action);

                /** BindingDelta role. */
                public role: string;

                /** BindingDelta member. */
                public member: string;

                /** BindingDelta condition. */
                public condition?: (google.type.IExpr|null);

                /**
                 * Creates a new BindingDelta instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns BindingDelta instance
                 */
                public static create(properties?: google.iam.v1.IBindingDelta): google.iam.v1.BindingDelta;

                /**
                 * Encodes the specified BindingDelta message. Does not implicitly {@link google.iam.v1.BindingDelta.verify|verify} messages.
                 * @param message BindingDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IBindingDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified BindingDelta message, length delimited. Does not implicitly {@link google.iam.v1.BindingDelta.verify|verify} messages.
                 * @param message BindingDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IBindingDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a BindingDelta message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns BindingDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.BindingDelta;

                /**
                 * Decodes a BindingDelta message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns BindingDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.BindingDelta;

                /**
                 * Verifies a BindingDelta message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a BindingDelta message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns BindingDelta
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.BindingDelta;

                /**
                 * Creates a plain object from a BindingDelta message. Also converts values to other types if specified.
                 * @param message BindingDelta
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.BindingDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this BindingDelta to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for BindingDelta
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace BindingDelta {

                /** Action enum. */
                enum Action {
                    ACTION_UNSPECIFIED = 0,
                    ADD = 1,
                    REMOVE = 2
                }
            }

            /** Properties of an AuditConfigDelta. */
            interface IAuditConfigDelta {

                /** AuditConfigDelta action */
                action?: (google.iam.v1.AuditConfigDelta.Action|keyof typeof google.iam.v1.AuditConfigDelta.Action|null);

                /** AuditConfigDelta service */
                service?: (string|null);

                /** AuditConfigDelta exemptedMember */
                exemptedMember?: (string|null);

                /** AuditConfigDelta logType */
                logType?: (string|null);
            }

            /** Represents an AuditConfigDelta. */
            class AuditConfigDelta implements IAuditConfigDelta {

                /**
                 * Constructs a new AuditConfigDelta.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IAuditConfigDelta);

                /** AuditConfigDelta action. */
                public action: (google.iam.v1.AuditConfigDelta.Action|keyof typeof google.iam.v1.AuditConfigDelta.Action);

                /** AuditConfigDelta service. */
                public service: string;

                /** AuditConfigDelta exemptedMember. */
                public exemptedMember: string;

                /** AuditConfigDelta logType. */
                public logType: string;

                /**
                 * Creates a new AuditConfigDelta instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AuditConfigDelta instance
                 */
                public static create(properties?: google.iam.v1.IAuditConfigDelta): google.iam.v1.AuditConfigDelta;

                /**
                 * Encodes the specified AuditConfigDelta message. Does not implicitly {@link google.iam.v1.AuditConfigDelta.verify|verify} messages.
                 * @param message AuditConfigDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IAuditConfigDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AuditConfigDelta message, length delimited. Does not implicitly {@link google.iam.v1.AuditConfigDelta.verify|verify} messages.
                 * @param message AuditConfigDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IAuditConfigDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AuditConfigDelta message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AuditConfigDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditConfigDelta;

                /**
                 * Decodes an AuditConfigDelta message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AuditConfigDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditConfigDelta;

                /**
                 * Verifies an AuditConfigDelta message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AuditConfigDelta message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AuditConfigDelta
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditConfigDelta;

                /**
                 * Creates a plain object from an AuditConfigDelta message. Also converts values to other types if specified.
                 * @param message AuditConfigDelta
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.AuditConfigDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AuditConfigDelta to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AuditConfigDelta
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace AuditConfigDelta {

                /** Action enum. */
                enum Action {
                    ACTION_UNSPECIFIED = 0,
                    ADD = 1,
                    REMOVE = 2
                }
            }
        }
    }

    /** Namespace longrunning. */
    namespace longrunning {

        /** Represents an Operations */
        class Operations extends $protobuf.rpc.Service {

            /**
             * Constructs a new Operations service.
             * @param rpcImpl RPC implementation
             * @param [requestDelimited=false] Whether requests are length-delimited
             * @param [responseDelimited=false] Whether responses are length-delimited
             */
            constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);

            /**
             * Creates new Operations service using the specified rpc implementation.
             * @param rpcImpl RPC implementation
             * @param [requestDelimited=false] Whether requests are length-delimited
             * @param [responseDelimited=false] Whether responses are length-delimited
             * @returns RPC service. Useful where requests and/or responses are streamed.
             */
            public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Operations;

            /**
             * Calls ListOperations.
             * @param request ListOperationsRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and ListOperationsResponse
             */
            public listOperations(request: google.longrunning.IListOperationsRequest, callback: google.longrunning.Operations.ListOperationsCallback): void;

            /**
             * Calls ListOperations.
             * @param request ListOperationsRequest message or plain object
             * @returns Promise
             */
            public listOperations(request: google.longrunning.IListOperationsRequest): Promise<google.longrunning.ListOperationsResponse>;

            /**
             * Calls GetOperation.
             * @param request GetOperationRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and Operation
             */
            public getOperation(request: google.longrunning.IGetOperationRequest, callback: google.longrunning.Operations.GetOperationCallback): void;

            /**
             * Calls GetOperation.
             * @param request GetOperationRequest message or plain object
             * @returns Promise
             */
            public getOperation(request: google.longrunning.IGetOperationRequest): Promise<google.longrunning.Operation>;

            /**
             * Calls DeleteOperation.
             * @param request DeleteOperationRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and Empty
             */
            public deleteOperation(request: google.longrunning.IDeleteOperationRequest, callback: google.longrunning.Operations.DeleteOperationCallback): void;

            /**
             * Calls DeleteOperation.
             * @param request DeleteOperationRequest message or plain object
             * @returns Promise
             */
            public deleteOperation(request: google.longrunning.IDeleteOperationRequest): Promise<google.protobuf.Empty>;

            /**
             * Calls CancelOperation.
             * @param request CancelOperationRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and Empty
             */
            public cancelOperation(request: google.longrunning.ICancelOperationRequest, callback: google.longrunning.Operations.CancelOperationCallback): void;

            /**
             * Calls CancelOperation.
             * @param request CancelOperationRequest message or plain object
             * @returns Promise
             */
            public cancelOperation(request: google.longrunning.ICancelOperationRequest): Promise<google.protobuf.Empty>;

            /**
             * Calls WaitOperation.
             * @param request WaitOperationRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and Operation
             */
            public waitOperation(request: google.longrunning.IWaitOperationRequest, callback: google.longrunning.Operations.WaitOperationCallback): void;

            /**
             * Calls WaitOperation.
             * @param request WaitOperationRequest message or plain object
             * @returns Promise
             */
            public waitOperation(request: google.longrunning.IWaitOperationRequest): Promise<google.longrunning.Operation>;
        }

        namespace Operations {

            /**
             * Callback as used by {@link google.longrunning.Operations|listOperations}.
             * @param error Error, if any
             * @param [response] ListOperationsResponse
             */
            type ListOperationsCallback = (error: (Error|null), response?: google.longrunning.ListOperationsResponse) => void;

            /**
             * Callback as used by {@link google.longrunning.Operations|getOperation}.
             * @param error Error, if any
             * @param [response] Operation
             */
            type GetOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

            /**
             * Callback as used by {@link google.longrunning.Operations|deleteOperation}.
             * @param error Error, if any
             * @param [response] Empty
             */
            type DeleteOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

            /**
             * Callback as used by {@link google.longrunning.Operations|cancelOperation}.
             * @param error Error, if any
             * @param [response] Empty
             */
            type CancelOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

            /**
             * Callback as used by {@link google.longrunning.Operations|waitOperation}.
             * @param error Error, if any
             * @param [response] Operation
             */
            type WaitOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
        }

        /** Properties of an Operation. */
        interface IOperation {

            /** Operation name */
            name?: (string|null);

            /** Operation metadata */
            metadata?: (google.protobuf.IAny|null);

            /** Operation done */
            done?: (boolean|null);

            /** Operation error */
            error?: (google.rpc.IStatus|null);

            /** Operation response */
            response?: (google.protobuf.IAny|null);
        }

        /** Represents an Operation. */
        class Operation implements IOperation {

            /**
             * Constructs a new Operation.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IOperation);

            /** Operation name. */
            public name: string;

            /** Operation metadata. */
            public metadata?: (google.protobuf.IAny|null);

            /** Operation done. */
            public done: boolean;

            /** Operation error. */
            public error?: (google.rpc.IStatus|null);

            /** Operation response. */
            public response?: (google.protobuf.IAny|null);

            /** Operation result. */
            public result?: ("error"|"response");

            /**
             * Creates a new Operation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Operation instance
             */
            public static create(properties?: google.longrunning.IOperation): google.longrunning.Operation;

            /**
             * Encodes the specified Operation message. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages.
             * @param message Operation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Operation message, length delimited. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages.
             * @param message Operation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Operation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Operation
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.Operation;

            /**
             * Decodes an Operation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Operation
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.Operation;

            /**
             * Verifies an Operation message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Operation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Operation
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.Operation;

            /**
             * Creates a plain object from an Operation message. Also converts values to other types if specified.
             * @param message Operation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.Operation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Operation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Operation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a GetOperationRequest. */
        interface IGetOperationRequest {

            /** GetOperationRequest name */
            name?: (string|null);
        }

        /** Represents a GetOperationRequest. */
        class GetOperationRequest implements IGetOperationRequest {

            /**
             * Constructs a new GetOperationRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IGetOperationRequest);

            /** GetOperationRequest name. */
            public name: string;

            /**
             * Creates a new GetOperationRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GetOperationRequest instance
             */
            public static create(properties?: google.longrunning.IGetOperationRequest): google.longrunning.GetOperationRequest;

            /**
             * Encodes the specified GetOperationRequest message. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages.
             * @param message GetOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IGetOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GetOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages.
             * @param message GetOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IGetOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GetOperationRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GetOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.GetOperationRequest;

            /**
             * Decodes a GetOperationRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GetOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.GetOperationRequest;

            /**
             * Verifies a GetOperationRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GetOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GetOperationRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.GetOperationRequest;

            /**
             * Creates a plain object from a GetOperationRequest message. Also converts values to other types if specified.
             * @param message GetOperationRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.GetOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GetOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GetOperationRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ListOperationsRequest. */
        interface IListOperationsRequest {

            /** ListOperationsRequest name */
            name?: (string|null);

            /** ListOperationsRequest filter */
            filter?: (string|null);

            /** ListOperationsRequest pageSize */
            pageSize?: (number|null);

            /** ListOperationsRequest pageToken */
            pageToken?: (string|null);
        }

        /** Represents a ListOperationsRequest. */
        class ListOperationsRequest implements IListOperationsRequest {

            /**
             * Constructs a new ListOperationsRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IListOperationsRequest);

            /** ListOperationsRequest name. */
            public name: string;

            /** ListOperationsRequest filter. */
            public filter: string;

            /** ListOperationsRequest pageSize. */
            public pageSize: number;

            /** ListOperationsRequest pageToken. */
            public pageToken: string;

            /**
             * Creates a new ListOperationsRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ListOperationsRequest instance
             */
            public static create(properties?: google.longrunning.IListOperationsRequest): google.longrunning.ListOperationsRequest;

            /**
             * Encodes the specified ListOperationsRequest message. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages.
             * @param message ListOperationsRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IListOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ListOperationsRequest message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages.
             * @param message ListOperationsRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IListOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ListOperationsRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ListOperationsRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.ListOperationsRequest;

            /**
             * Decodes a ListOperationsRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ListOperationsRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.ListOperationsRequest;

            /**
             * Verifies a ListOperationsRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ListOperationsRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ListOperationsRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.ListOperationsRequest;

            /**
             * Creates a plain object from a ListOperationsRequest message. Also converts values to other types if specified.
             * @param message ListOperationsRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.ListOperationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ListOperationsRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ListOperationsRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ListOperationsResponse. */
        interface IListOperationsResponse {

            /** ListOperationsResponse operations */
            operations?: (google.longrunning.IOperation[]|null);

            /** ListOperationsResponse nextPageToken */
            nextPageToken?: (string|null);
        }

        /** Represents a ListOperationsResponse. */
        class ListOperationsResponse implements IListOperationsResponse {

            /**
             * Constructs a new ListOperationsResponse.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IListOperationsResponse);

            /** ListOperationsResponse operations. */
            public operations: google.longrunning.IOperation[];

            /** ListOperationsResponse nextPageToken. */
            public nextPageToken: string;

            /**
             * Creates a new ListOperationsResponse instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ListOperationsResponse instance
             */
            public static create(properties?: google.longrunning.IListOperationsResponse): google.longrunning.ListOperationsResponse;

            /**
             * Encodes the specified ListOperationsResponse message. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages.
             * @param message ListOperationsResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IListOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ListOperationsResponse message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages.
             * @param message ListOperationsResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IListOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ListOperationsResponse message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ListOperationsResponse
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.ListOperationsResponse;

            /**
             * Decodes a ListOperationsResponse message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ListOperationsResponse
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.ListOperationsResponse;

            /**
             * Verifies a ListOperationsResponse message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ListOperationsResponse message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ListOperationsResponse
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.ListOperationsResponse;

            /**
             * Creates a plain object from a ListOperationsResponse message. Also converts values to other types if specified.
             * @param message ListOperationsResponse
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.ListOperationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ListOperationsResponse to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ListOperationsResponse
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CancelOperationRequest. */
        interface ICancelOperationRequest {

            /** CancelOperationRequest name */
            name?: (string|null);
        }

        /** Represents a CancelOperationRequest. */
        class CancelOperationRequest implements ICancelOperationRequest {

            /**
             * Constructs a new CancelOperationRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.ICancelOperationRequest);

            /** CancelOperationRequest name. */
            public name: string;

            /**
             * Creates a new CancelOperationRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CancelOperationRequest instance
             */
            public static create(properties?: google.longrunning.ICancelOperationRequest): google.longrunning.CancelOperationRequest;

            /**
             * Encodes the specified CancelOperationRequest message. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages.
             * @param message CancelOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CancelOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages.
             * @param message CancelOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CancelOperationRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CancelOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.CancelOperationRequest;

            /**
             * Decodes a CancelOperationRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CancelOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.CancelOperationRequest;

            /**
             * Verifies a CancelOperationRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CancelOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CancelOperationRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.CancelOperationRequest;

            /**
             * Creates a plain object from a CancelOperationRequest message. Also converts values to other types if specified.
             * @param message CancelOperationRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.CancelOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CancelOperationRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DeleteOperationRequest. */
        interface IDeleteOperationRequest {

            /** DeleteOperationRequest name */
            name?: (string|null);
        }

        /** Represents a DeleteOperationRequest. */
        class DeleteOperationRequest implements IDeleteOperationRequest {

            /**
             * Constructs a new DeleteOperationRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IDeleteOperationRequest);

            /** DeleteOperationRequest name. */
            public name: string;

            /**
             * Creates a new DeleteOperationRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DeleteOperationRequest instance
             */
            public static create(properties?: google.longrunning.IDeleteOperationRequest): google.longrunning.DeleteOperationRequest;

            /**
             * Encodes the specified DeleteOperationRequest message. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages.
             * @param message DeleteOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IDeleteOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DeleteOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages.
             * @param message DeleteOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IDeleteOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DeleteOperationRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DeleteOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.DeleteOperationRequest;

            /**
             * Decodes a DeleteOperationRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DeleteOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.DeleteOperationRequest;

            /**
             * Verifies a DeleteOperationRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DeleteOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DeleteOperationRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.DeleteOperationRequest;

            /**
             * Creates a plain object from a DeleteOperationRequest message. Also converts values to other types if specified.
             * @param message DeleteOperationRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.DeleteOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DeleteOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DeleteOperationRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a WaitOperationRequest. */
        interface IWaitOperationRequest {

            /** WaitOperationRequest name */
            name?: (string|null);

            /** WaitOperationRequest timeout */
            timeout?: (google.protobuf.IDuration|null);
        }

        /** Represents a WaitOperationRequest. */
        class WaitOperationRequest implements IWaitOperationRequest {

            /**
             * Constructs a new WaitOperationRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IWaitOperationRequest);

            /** WaitOperationRequest name. */
            public name: string;

            /** WaitOperationRequest timeout. */
            public timeout?: (google.protobuf.IDuration|null);

            /**
             * Creates a new WaitOperationRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WaitOperationRequest instance
             */
            public static create(properties?: google.longrunning.IWaitOperationRequest): google.longrunning.WaitOperationRequest;

            /**
             * Encodes the specified WaitOperationRequest message. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages.
             * @param message WaitOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IWaitOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified WaitOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages.
             * @param message WaitOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IWaitOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a WaitOperationRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WaitOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.WaitOperationRequest;

            /**
             * Decodes a WaitOperationRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WaitOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.WaitOperationRequest;

            /**
             * Verifies a WaitOperationRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a WaitOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WaitOperationRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.WaitOperationRequest;

            /**
             * Creates a plain object from a WaitOperationRequest message. Also converts values to other types if specified.
             * @param message WaitOperationRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.WaitOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WaitOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WaitOperationRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an OperationInfo. */
        interface IOperationInfo {

            /** OperationInfo responseType */
            responseType?: (string|null);

            /** OperationInfo metadataType */
            metadataType?: (string|null);
        }

        /** Represents an OperationInfo. */
        class OperationInfo implements IOperationInfo {

            /**
             * Constructs a new OperationInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IOperationInfo);

            /** OperationInfo responseType. */
            public responseType: string;

            /** OperationInfo metadataType. */
            public metadataType: string;

            /**
             * Creates a new OperationInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns OperationInfo instance
             */
            public static create(properties?: google.longrunning.IOperationInfo): google.longrunning.OperationInfo;

            /**
             * Encodes the specified OperationInfo message. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages.
             * @param message OperationInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified OperationInfo message, length delimited. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages.
             * @param message OperationInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an OperationInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns OperationInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.OperationInfo;

            /**
             * Decodes an OperationInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns OperationInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.OperationInfo;

            /**
             * Verifies an OperationInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an OperationInfo message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns OperationInfo
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.OperationInfo;

            /**
             * Creates a plain object from an OperationInfo message. Also converts values to other types if specified.
             * @param message OperationInfo
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.OperationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this OperationInfo to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for OperationInfo
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }
}
